Стандарт RS-485 допускает подключение не более 32 приемников к одному передатчику. Эта величина ограничивается мощностью выходного каскада передатчика при стандартном входном сопротивлением приемника 12 кОм. Количество нагрузок (приемников) может быть увеличено с помощью более мощных передатчиков, приемников с большим входным сопротивлением и промежуточных ретрансляторов сигнала (повторителей интерфейса). Все эти методы используются на практике, когда это необходимо, хотя они выходят за рамки требований стандарта.
В некоторых случаях требуется соединить устройства на расстоянии более 1200 м или подключить к одной сети более 32 устройств. Это можно сделать с помощью повторителей (репитеров, ретрансляторов) интерфейса. Повторитель устанавливается между двумя сегментами линии передачи, принимает сигнал одного сегмента, восстанавливает фронты импульсов и передает его с помощью стандартного передатчика во второй сегмент (рис. 2.5). Такие повторители обычно являются двунаправленными и имеют гальваническую изоляцию. Примером может служить повторитель NL-485C фирмы НИЛ АП. Каждый повторитель позволяет добавить к линии 31 стандартное устройство и увеличить длину линии на 1200 м.
Распространенным методом увеличения числа нагрузок линии является использование приемников с более высокоомным входом, чем предусмотрено стандартом EIA/TIA-485 (12 кОм). Например, при входном сопротивлении приемника 24 кОм к стандартному передатчику можно подключить 64 приемника. Уже выпускаются микросхемы трансиверов для интерфейса RS-485 с возможностью подключения 64, 128 и 256 приемников в одном сегменте сети (www.analog.com/RS485). Отметим, что увеличение количества нагрузок путем увеличения входного сопротивления приемников приводит к уменьшению мощности передаваемого по линии сигнала, и, как следствие, к снижению помехоустойчивости.
Интерфейс RS-423
Разработан EIA и адаптирован CCITT в виде спецификаций V.10 и Х.26; предназначен для последовательной передачи данных по несимметричным цепям и обеспечивает скорость передачи до 3 Кбит/с при длине 1200 м и до 300 Кбит/с при длине 12... 15 м. Уровни напряжения, используемые в интерфейсе: логический нуль 4..6 В, логическая единица -6...-4 В. Соединитель интерфейса типа DB-37. Интерфейс является более эффективным, чем RS-232C при подключении к ЭВМ периферийных устройств. Широко используется в ПЭВМ в Великобритании.
11. Последовательный интерфейс SPI
SPI - популярный интерфейс для последовательного обмена данными между микросхемами. Интерфейс SPI, наряду с I2C, относится к самым широко-используемым интерфейсам для соединения микросхем. Изначально он был придуман компанией Motorola, а в настоящее время используется в продукции многих производителей. Его наименование является аббревиатурой от 'Serial Peripheral Bus', что отражает его предназначение - шина для подключения внешних устройств. Шина SPI организована по принципу 'ведущий-подчиненный'. В качестве ведущего шины обычно выступает микроконтроллер, но им также может быть программируемая логика, DSP-контроллер или специализированная ИС. Подключенные к ведущему шины внешние устройства образуют подчиненных шины. В их роли выступают различного рода микросхемы, в т.ч. запоминающие устройства (EEPROM, Flash-память, SRAM), часы реального времени (RTC), АЦП/ЦАП, цифровые потенциометры, специализированные контроллеры и др.
Главным составным блоком интерфейса SPI является обычный сдвиговый регистр, сигналы синхронизации и ввода/вывода битового потока которого и образуют интерфейсные сигналы. Таким образом, протокол SPI правильнее назвать не протоколом передачи данных, а протоколом обмена данными между двумя сдвиговыми регистрами, каждый из которых одновременно выполняет и функцию приемника, и функцию передатчика. Непременным условием передачи данных по шине SPI является генерация сигнала синхронизации шины. Этот сигнал имеет право генерировать только ведущий шины и от этого сигнала полностью зависит работа подчиненного шины.
Электрическое подключение
Существует три типа подключения к шине SPI, в каждом из которых участвуют четыре сигнала (их основное и альтернативные обозначения см. в табл. 1). Самое простое подключение, в котором участвуют только две микросхемы, показано на рисунке 1. Здесь, ведущий шины передает данные по линии MOSI синхронно со сгенерированным им же сигналом SCLK, а подчиненный захватывает переданные биты данных по определенным фронтам принятого сигнала синхронизации. Одновременно с этим подчиненный отправляет свою посылку данных. Представленную схему можно упростить исключением линии MISO, если используемая подчиненная ИС не предусматривает ответную передачу данных или в ней нет потребности. Одностороннюю передачу данных можно встретить у таких микросхем как ЦАП, цифровые потенциометры, программируемые усилители и драйверы. Таким образом, рассматриваемый вариант подключения подчиненной ИС требует 3 или 4 линии связи. Чтобы подчиненная ИС принимала и передавала данные, помимо наличия сигнала синхронизации, необходимо также, чтобы линия SS была переведена в низкое состояние. В противном случае, подчиненная ИС будет неактивна. Когда используется только одна внешняя ИС, может возникнуть соблазн исключения и линии SS за счет жесткой установки низкого уровня на входе выбора подчиненной микросхемы. Такое решение крайне нежелательно и может привести к сбоям или вообще невозможности передачи данных, т.к. вход выбора микросхемы служит для перевода ИС в её исходное состояние и иногда инициирует вывод первого бита данных.
Рис. 1. Простейшее подключение к шине SPI
При необходимости подключения к шине SPI нескольких микросхем используется либо независимое (параллельное) подключение (рис. 2), либо каскадное (последовательное) (рис. 3). Независимое подключение более распространенное, т.к. достигается при использовании любых SPI-совместимых микросхем. Здесь, все сигналы, кроме выбора микросхем, соединены параллельно, а ведущий шины, переводом того или иного сигнала SS в низкое состояние, задает, с какой подчиненной ИС он будет обмениваться данными. Главным недостатком такого подключения является необходимость в дополнительных линиях для адресации подчиненных микросхем (общее число линий связи равно 3+n, где n-количество подчиненных микросхем). Каскадное включение избавлено от этого недостатка, т.к. здесь из нескольких микросхем образуется один большой сдвиговый регистр. Для этого выход передачи данных одной ИС соединяется со входом приема данных другой, как показано на рисунке 3. Входы выбора микросхем здесь соединены параллельно и, таким образом, общее число линий связи сохранено равным 4. Однако использование каскадного подключения возможно только в том случае, если его поддержка указана в документации на используемые микросхемы. Чтобы выяснить это, важно знать, что такое подключение по-английски называется 'daisy-chaining'.
Рис. 2. Независимое подключение к шине SPI
Рис. 3. Каскадное подключение к шине SPI
Протокол передачи
Протокол передачи по интерфейсу SPI предельно прост и, по сути, идентичен логике работы сдвигового регистра, которая заключается в выполнении операции сдвига и, соответственно, побитного ввода и вывода данных по определенным фронтам сигнала синхронизации. Установка данных при передаче и выборка при приеме всегда выполняются по противоположным фронтам синхронизации. Это необходимо для гарантирования выборки данных после надежного их установления. Если к этому учесть, что в качестве первого фронта в цикле передачи может выступать нарастающий или падающий фронт, то всего возможно четыре варианта логики работы интерфейса SPI. Эти варианты получили название режимов SPI и описываются двумя параметрами:
· CPOL - исходный уровень сигнала синхронизации (если CPOL=0, то линия синхронизации до начала цикла передачи и после его окончания имеет низкий уровень (т.е. первый фронт нарастающий, а последний - падающий), иначе, если CPOL=1, - высокий (т.е. первый фронт падающий, а последний - нарастающий));
· CPHA - фаза синхронизации; от этого параметра зависит, в какой последовательности выполняется установка и выборка данных (если CPHA=0, то по переднему фронту в цикле синхронизации будет выполняться выборка данных, а затем, по заднему фронту, - установка данных; если же CPHA=1, то установка данных будет выполняться по переднему фронту в цикле синхронизации, а выборка - по заднему). Информация по режимам SPI обобщена в таблице 2.
Ведущая и подчиненная микросхемы, работающие в различных режимах SPI, являются несовместимыми, поэтому, перед выбором подчиненных микросхем важно уточнить, какие режимы поддерживаются ведущим шины. Аппаратные модули SPI, интегрированные в микроконтроллеры, в большинстве случаев поддерживают возможность выбора любого режима SPI и, поэтому, к ним возможно подключение любых подчиненных SPI-микросхем (относится только к независимому варианту подключения). Кроме того, протокол SPI в любом из режимов легко реализуется программно.
Cравнение с шиной I2C
Как уже упоминалось, для стыковки микросхем не меньшей популярностью пользуется 2-проводная последовательная шина I2C. Ниже можно ознакомиться с преимуществами, которая дает та или иная последовательная шина.
Преимущества шины SPI | Преимущества шины I2C |
Предельная простота протокола передачи на физическом уровне обуславливает высокую надежность и быстродействие передачи. Предельное быстродействие шины SPI измеряется десятками мегагерц и, поэтому, она идеальна для потоковой передачи больших объемов данных и широко используется в высокоскоростных ЦАП/АЦП, драйверах светодиодных дисплеев и микросхемах памяти | Шина I2C остается двухпроводной, независимо от количества подключенной к ней микросхем. |
Все линии шины SPI являются однонаправленными, что существенно упрощает решение задачи преобразования уровней и гальванической изоляции микросхем | Возможность мультимастерной работы, когда к шине подключено несколько ведущих микросхем. |
Простота программной реализации протокола SPI. | Протокол I2C является более стандартизованным, поэтому, пользователь I2C-микросхем более защищен от проблем несовместимости выбранных компонентов. |