Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

3168

.pdf
Скачиваний:
4
Добавлен:
15.11.2022
Размер:
3.22 Mб
Скачать

одновременной установкой в «1» флага завершения приема RI только в том случае, если бит D8 этого слова равен «1». Остальные слова с признаком D8 = 0 игнорируются.

Ведущий МК посылает всем ведомым одновременно первый кадр пакета обмена. Разряды D7 – D0 этого кадра содержат адрес ведомого, бит D8 равен «1».

Все ведомые МК принимают это 9-разрядное слово, и, поскольку разряд D8 кадра равен «1», приемник модуля UART каждого МК выходит из состояния ожидания. Формируется запрос на прерывание. Подпрограмма обработки этого прерывания сравнивает принятый адрес с собственным адресом в локальной сети. Если адреса совпадают, т.е. ведущий будет производить обмен именно с этим ведомым, то МК ожидает передачи от ведомого следующего кадра. Если адреса не совпадают, то МК посредством специального бита управления переводит приемник модуля UART снова в режим ожидания. Тогда все следующие кадры пакета обмена этим МК восприняты не будут, поскольку они содержат нулевой разряд D8.

Ведущий МК передает ведомому необходимое число байтов, сопровождая каждый из них признаком данных D8 = 0. При необходимости ведущий принимает данные от ведомого. О завершении обмена ведущий информирует ведомый посылкой сигнала «Break».

Ведомый в ответ на сигнал «Break» переводит приемник модуля UART в состояние ожидания. Локальная сеть приведена в исходное состояние и готова к передаче нового пакета.

Кроме рассмотренных режимов асинхронного обмена, многие из модулей UART поддерживают режим синхронной приемопередачи. Так, в МК MSC-51 контроллер последовательного интерфейса реализует полудуплексный обмен в синхронном режиме, при котором импульсы синхронизации выдаются на линию TxD, данные передаются или принимаются по линии RxD. Важно отметить, что при синхронном обмене модуль UART МК MSC-51 может работать только в ведущем режиме, т.е. именно этот модуль формирует импульсы синхронизации независимо от направления обмена. Модуль SCI МК МС68НС705В16 (модуль типа UART) реализует симплексный синхронный обмен, при котором возможно только одно направление передачи данных: из МК к периферийной ИС. Для получения уровней сигнала, соответствующих стандартам группы RS, выпускаются в широком ассортименте интерфейсные микросхемы драйверов, ресиверов, трансиверов, адаптеров и репитеров. Пример – на рис. 3.17. Структурная схема сети на базе интерфейса RS-485приведена на рис. 3.18.

50

Рис. 3.17. Параметры и схема подключения интерфейсные микросхемы MAX1483

Рис. 3.18. Стандартная структура сети на базе интерфейса RS-485

51

3.3. Интерфейс SPI 9

Стандарт SPI (Serial Peripheral Interface) предложен фирмой «Motorola». Он предназна-

чен для связи МК с периферийными устройствами МП-системы. Наиболее часто эти устройства расположены на одной плате с МК, реже – это вынесенные пульты управления, индикаторные панели и т.п. В качестве периферийных устройств могут использоваться как простейшие сдвиговые регистры, так и сложные периферийные ИС со встроенными контроллерами управления, такие как ЦАП, сигма-дельта АЦП с цифровой фильтрацией, последовательные запоминающие устройства типа FLASH или EEPROM, энергонезависимые ОЗУ и т.д. Интерфейс SPI также используется для обмена данными между несколькими МК системы – см. /8/.

На рис. 3.19 в качестве примера представлена структурная схема сопряжения МК и двух периферийных ИС с использованием интерфейса SPI. В рассматриваемом примере МК является ведущим устройством (Master), он инициирует обмен при передаче информации между МК и одной из периферийных ИС. Каждая из периферийных ИС является устройством ведомым (Slave). SPI-шина представлена тремя общими линиями связи (MISO,

MOSI, SCK) и двумя линиями выбора ведомого устройства (

SS1

,

SS2

), которые индивиду-

альны для каждой периферийной ИС: MOSI – линия передачи данных от ведущего к ведомому (Master Output Slave Input); MISO – линия передачи данных от ведомого к ведущему

(Master Input Slave Output); SCK – линия сигнала стробирования данных;

SS1

и

SS2

– ли-

нии сигналов выбора ведомого устройства. Сигнал SCK имеет право генерировать только ведущий шины и от этого сигнала полностью зависит работа ведомых.

Обратить внимание на метки входов

Рис. 3.19. Сопряжение МК с периферийными ИС посредством интерфейса SPI

9 Ссылки по теме:

Последовательный интерфейс SPI

Последовательный периферийный интерфейс SPI в 8-разрядных микроконтроллерах семейства AVR фирмы

Atmel http://chipenable.ru/index.php/programming-avr/item/137-avr-spi-module.html http://habrahabr.ru/post/123145/

ilab.xmedtest.net?q=node/4616 kit-e.ruarticles/interface/2009_03_53.php

52

В стандарте предусмотрено три типа подключения к шине SPI, в каждом из которых участвуют четыре сигнала (их основное и альтернативные обозначения см. в табл. 3.3).

Таблица 3.3

Электрические сигналы шины SPI

Ведущий шины

Основное

Альтернативное

Описание

обозначение

обозначение

 

 

 

Выход последова-

MOSI

DO, SDO, DOUT

тельной передачи

 

 

данных

MISO

DI, SDI, DIN

Вход последователь-

ного приема данных

 

 

 

DCLOCK, CLK,

Выход синхронизации

SCLK

передачи

SCK

 

данных

 

 

 

 

Выход выбора подчи-

SS

CS

ненного (выбор мик-

 

 

росхемы)

Подчиненный шины

Основное

обозначение

MOSI

MISO

SCLK

SS

Альтернативное Описание обозначение

DI, SDI, DIN

Вход последователь-

ного приема данных

 

 

 

 

Выход последова-

DO, SDO, DOUT

тельной передачи

 

данных

DCLOCK, CLK,

Вход синхронизации

SCK

приема данных

 

 

 

Вход выбора подчи-

CS

ненного (выбор мик-

 

росхемы)

Самое простое подключение, в котором участвуют только две микросхемы, показано на рис. 3.20. Здесь ведущий шины передает данные по линии MOSI синхронно

Рис. 3.20. Простейшее подключение к шине SPI

со сгенерированным им же сигналом SCLK, а подчиненный захватывает переданные биты данных по определенным фронтам принятого сигнала синхронизации. Одновременно с этим подчиненный отправляет свою посылку данных. Представленную схему можно упростить исключением линии MISO, если используемая подчиненная ИС не предусматривает ответную передачу данных или в ней нет потребности. Одностороннюю передачу данных можно встретить у таких микросхем как ЦАП, цифровые потенциометры, программируемые усилители и драйверы. Таким образом, рассматриваемый вариант подключения подчиненной ИС требует 3 или 4 линии связи. Чтобы подчиненная ИС принимала и передавала данные, помимо наличия сигнала синхронизации, необходимо также, чтобы линия SS была переведена в низкое состояние. В противном случае, подчиненная ИС будет неактивна.

Когда используется только одна внешняя ИС, может возникнуть соблазн исключения и линии SS за счет жесткой установки низкого уровня на входе выбора подчиненной микросхемы. Такое решение крайне нежелательно и может привести к сбоям или вообще невозможности передачи данных, т.к. вход выбора микросхемы служит для перевода ИС в её исходное состояние и иногда инициирует вывод первого бита данных.

При необходимости подключения к шине SPI нескольких микросхем используется либо независимое (параллельное) подключение (см. рис. 3.19), либо каскадное (последовательное – см. ниже). Независимое подключение более распространено, т.к. достигается при использовании любых SPI-совместимых микросхем. Здесь все сигналы, кроме выбора

53

микросхем, соединены параллельно, а ведущий шины переводом того или иного сигнала SS в низкое состояние задает, с какой подчиненной ИС он будет обмениваться данными. Главным недостатком такого подключения является необходимость в дополнительных линиях для адресации подчиненных микросхем (общее число линий связи равно 3+n, где n- количество подчиненных микросхем). Как видно из рис. 3.19, образованная на основе интерфейса SPI мини-сеть относится к классу (дуплексных или полудуплексных - ?) синхронных магистрально-радиальных. Линии передачи данных и линия синхронизации являются примером шинной организации, а линии выбора ведомого устройства – элемент системы радиального типа. Перед началом обмена (рис. 3.21) ведущее устройство отмечает одно ведомое устройство, с которым будет производиться обмен. Для этого на линии выбора уст-

ройства SSi устанавливается низкий активный уровень сигнала.

Рис. 3.21. Временные диаграммы обмена в стандарте SPI

Затем ведущее устройство последовательно выставляет на линию MOSI восемь бит информации, сопровождая каждый бит сигналом синхронизации SCK. Ведомое устройство дешифрирует переданный байт информации и определяет, в каком направлении будет производиться дальнейший обмен. Если ведомое устройство должно принимать информацию,

то ведущее устройство, не снимая сигнала выбора ведомого SSi , продолжит передачу по линии MOSI. Если ведомое устройство должно передавать информацию, то оно активизирует линию MISO и в ответ на каждый импульс синхронизации от ведущего будет выставлять один бит информации. Длина посылки обмена в общем случае не ограничена, но для правильной работы модуля SPI должна составлять целое число байтов. Завершение обмена также инициируется ведущим посредством установки в неактивное состояние сигнала вы-

бора ведомого SSi . Таким образом, интерфейс SPI реализует полудуплексный режим обмена.

Каскадное включение избавлено от необходимости в множестве линий для адресации подчиненных микросхем, т.к. здесь из нескольких микросхем образуется один большой сдвиговый регистр. Для этого выход передачи данных одной ИС соединяется со входом приема данных другой, как показано на рис. 3.22. Входы выбора микросхем здесь соединены параллельно и, таким образом, общее число линий связи сохранено равным 4.

Рис. 3.22. Каскадное подключение к шине SPI ('daisy-chaining')

54

Однако использование каскадного подключения возможно только в том случае, если его поддержка указана в документации на используемые микросхемы. Чтобы выяснить это, важно знать, что такое подключение по-английски называется 'daisy-chaining'.

Вывод SS встроенного контроллера SPI используется в зависимости от того, в каком режиме работает данное устройство. При работе в ведомом режиме при подаче высокого

уровня сигнала на вход SS устройство игнорирует сигналы SCK и удерживает вывод MISO

в высокоимпедансном состоянии. Если же в ведомом режиме работы на входе SS установлен низкий логический уровень, то буферы линий MOSI и SCK разворачиваются на ввод,

линия MISO – на вывод. При работе в ведущем режиме вывод SS может быть использован как обычная линия вывода.

Модули контроллеров SPI фирмы «Motorola» могут работать как в ведущем, так и в ведомом режимах. Скорость приема и передачи определяется частотой тактирования межмодульных магистралей МК fBUS. в ведущем режиме скорость обмена не может превышать fBUS / 2, в ведомом режиме максимальная скорость обмена равна fBUS. Поэтому для МК семейства НС05 максимальная скорость обмена в ведущем режиме составляет 1 Мбит/с, в ведомом - 2 Мбит/с. Аналогичные показатели для МК семейства НС08 соответственно 4 и

8 Мбит/с (quick = QSPI).

Существует и архитектура с несколькими ведущими устройствами, тогда все выводы SCK соединяются вместе. То же делается с выводами MOSI и MISO. На время отсутствия связи буферы выводов встроенного контроллера SPI переводятся в высокоимпедансное состояние. Последнее позволяет избежать конфликтов на шине SPI. В противном случае несколько выводов MISO ведомых устройств одновременно были бы активными, что не позволило бы ведущему устройству произвести прием достоверной информации. В системах

со сложной логикой работы вывод SS может использоваться как вход сигнала обнаружения ошибки для индикации состояния шины в случаях, если более чем одно устройство пытается стать ведущим.

Схема управления контроллера SPI интерфейса позволяет выбрать один из двух протоколов обмена и полярность импульсов синхронизации SCK. При работе в ведущем режиме возможно также программно выбрать частоту импульсов синхронизации.

Два бита регистра управления любого контроллера SPI интерфейса определяют временную диаграмму обмена по шине SPI:

1)бит СРНА назначает исходный уровень сигнала синхронизации (если CPOL=0, то линия синхронизации до начала цикла передачи и после его окончания имеет низкий уровень (т.е. первый фронт нарастающий, а последний - падающий), иначе, если CPOL=1, - высокий (т.е. первый фронт падающий, а последний - нарастающий));

2)бит CPOL определяет полярность сигнала синхронизации SCK, от этого параметра зависит, в какой последовательности выполняется установка и выборка данных (если CPHA=0, то по переднему фронту в цикле синхронизации будет выполняться выборка данных, а затем, по заднему фронту, – установка данных; если же CPHA=1, то установка данных будет выполняться по переднему фронту в цикле синхронизации, а выборка – по заднему).

В соответствии с комбинацией битов CPHA:CPOL принято различать четыре режима работы интерфейса SPI. Комбинации CPHA:CPOL = 00 соответствует режим 0, комбинации CPHA:CPOL = 11 – режим 3. Периферийные ИС реализуют один или два режима SPI, которые определяются их техническим описанием. Наиболее часто это режимы 0 и 3.

Ведущая и подчиненная микросхемы, работающие в различных режимах SPI, являются несовместимыми, поэтому перед выбором подчиненных микросхем важно уточнить, какие режимы поддерживаются ведущим шины. Обычно встроенный контроллер SPI МК позволяет программно настраивать режим SPI в процессе инициализации и даже менять его при переходе с одного ведомого к другому (относится только к независимому варианту подключения). Кроме того, протокол SPI в любом из режимов легко реализуется программно.

55

Рассмотренные протоколы обмена не имеют различий по скорости и надежности передачи информации. Выбор протокола диктуется периферийным устройством. В некоторых случаях полярность и фаза сигнала SCK изменяются между передачами для того, чтобы обеспечить связь с устройствами, имеющими различный протокол.

Производные и совместимые протоколы:

MICROWIRE – Протокол MICROWIRE компании National Semiconductor полностью идентичен протоколу SPI в режиме 0 (CPOL = 0, CPHA = 0);

3-проводной интерфейс компании Maxim.

Кроме того, интерфейс SPI является основой для построения ряда специализированных

интерфейсов, таких, как отладочный интерфейс JTAG и интерфейсы карт Flash-памяти, в

т.ч. SD и MMC.

3.4. Интерфейс I2C и SMBus

Название I2C (ай-ту-си) представляет собой аббревиатуру слов Interconnect Integrated Circuit. Интерфейс I2C является двухпроводным последовательным интерфейсом, разработанным фирмой «Philips Corporation» как простая шина внутренней связи для создания управляющей электроники и завоевавшим популярность относительно высокой скоростью передачи данных (см.

ниже), дешевизной и простотой реализации (см., например, /20, 21, /22/).

I²C является основой ACCESS.bus, дисплейного интерфейсного канала данных (DDC) VESA, шины управления системными функциями SMBus, шины интеллектуального управления системой IPMB (вариант протокола IPMI). В этих технологиях возможно использование различных напряжений, частоты тактирования и наличия линий прерываний.

TWI (Two Wire Interface) или TWSI (Two Wire Serial Interface) по сути та же самая ши-

на I²C, но использует другое название по лицензионным причинам. Фирма Atmel дала собственное обозначение, чтобы не брать лицензию, лицензионные отчисления за использование протокола I²C отменены 1 октября 2006 года.

Типовая конфигурация I2C-шины показана на рис. 3.23.

Рис. 3.23

I²C использует две двунаправленных линии с открытым коллектором (истоком) – последовательная линия данных (SDA, англ. Serial DAta) и последовательная линия тактирования (SCL, англ. Serial CLock). Обе линии подтянуты резисторами к плюсу питания. Стандартные напряжения Vdd +5 В или +3.3 В, однако допускаются и другие. Резисторы имеют номинал от нескольких килоом до нескольких десятков килоом (чем выше скорость – тем меньше номинал резисторов, но больше энергопотребление). Минимальное значение для Vdd = +5 В составляет около 2 кОм.

Основными свойствами интерфейса I2C являются следующие:

двунаправленная передача данных между главными и подчиненными устройствами (полудуплекс);

многоабонентская шина (центрального главного узла в сети может не быть);

56

арбитраж между одновременно передающими устройствами без разрушения целостности передаваемых данных;

последовательная тактовая синхронизация позволяет приборам с различными скоростями передачи битов осуществлять связь через одну последовательную шину;

последовательная тактовая синхронизация может использоваться в качестве механизма квитирования установления связи, чтобы приостанавливать и возобновлять последовательную передачу.

К шине может быть подключено до 128 абонентов, каждый со своим уникальным номером. В каждый момент времени информация передаётся только одним абонентом и только в одну сторону. Таким образом, интерфейс реализует полудуплексный режим обмена.

В протоколе интерфейса I2C каждое устройство имеет адрес. Когда ведущее устройство желает инициировать передачу данных, оно передает адрес устройства, с которым будет производить обмен. Все устройства на шине следят за выставляемым на шину адресом и сравнивают его с собственным адресом. Вместе с адресом передается бит направления передачи R/W, который определяет, будет ли ведущий читать из ведомого или будет писать в него. При R/W = 0 реализуется режим записи в ведомое устройство. При R/W = 1 реализуется режим чтения из ведомого устройства. Биты в пакете передаются старшим битом вперёд. Последний, девятый бит называется битом подтверждения ACK (от английского слова acknowledge – подтверждение). Он передаётся в инвертированном виде. Когда нет передачи данных, реализуется режим ожидания: линии тактирования SCL и данных SDA приведены подтягивающими резисторами к высокому уровню логического сигнала.

Интерфейс I2C поддерживает два формата передачи адреса. Простейший – 7-битный формат с битом R/W в младшем разряде передаваемого байта (рис. 3.24). Более сложным является 10-битный формат.

ACK

Рис. 3.24. Формат 7-битного адреса (S - START; R/W - бит «чтение/запись»;

ACK - подтверждение)

«Основной режим» работы – 100 кбит/с; дополнительный – 10 кбит/с в режиме работы «с пониженной скоростью». Заметим, что стандарт допускает тактирование с частотой вплоть до нулевой.

После пересмотра стандарта в 1992 году стало возможным использование бóльшей скорости (до 400 кбит/с) в «скоростном режиме», а также подключение ещё большего количества устройств на одну шину (за счёт возможности 10-битной адресации). Соответственно, доступное количество свободных узлов выросло до 1008. Максимальное допустимое количество микросхем, подсоединенных к одной шине, ограничивается максимальной емкостью шины в 400 пФ.

Версия стандарта 2.0, выпущенная в 1998 году, представила высокоскоростной режим работы со скоростью до 3.4 Мбит/с с пониженным энергопотреблением. Версия 2.1 2001 года включила лишь незначительные доработки.

Ведущее (главное) устройство генерирует все последовательные синхроимпульсы и условия START и STOP, определяющие начало и конец передачи данных. Условие START определяется как переход SDA из высокого уровня в низкий при высоком уровне SCL, а условие STOP – как переход SDA из низкого уровня в высокий при высоком уровне SCL (рис. 3.25, 3.26). Ввиду такого способа определения условий START и STOP при передаче данных линия SDA может изменять свое состояние только при низком уровне SCL.

57

Рис. 3.25. Тактирование последовательности передачи данных

Рис. 3.26. Пример обмена данными в I2C

Модуль контроллера интерфейса I2C, который удовлетворяет спецификации I2C-шины и поддерживает два вышеперечисленных типа передачи данных, может работать в следующих четырех режимах.

1.Режим главного передатчика. Последовательный вывод данных через выход SDA передатчика, в то время как на выходе SCL передатчика формируются последовательные синхроимпульсы. Первый переданный байт содержит адрес подчиненного приемного устройства (7 бит) и бит направления данных R/W = 0. В этом случае говорят, что передается «W». Таким образом, первый переданный байт представляет собой адрес подчиненного приемника плюс «W». Последовательные данные передаются по 8 бит. Сеанс обмена в общем случае состоит из нескольких байтов. После отправки каждого байта главный передатчик ожидает от подчиненного устройства бит подтверждения ASK. Условия START и STOP формируются ведущим (главным) устройством для указания начала и конца всего сеанса последовательного обмена (пакета).

2.Режим главного приемника. Первый переданный приемником байт содержит адрес подчиненного передающего устройства (7 бит) и бит направления данных R/W = 1. В этом случае говорят, что передается «R». Таким образом, первый переданный приемником байт представляет собой адрес подчиненного передатчика плюс «R». Последовательные данные передаются по линии SDA от ведомого (подчиненного) устройства к ведущему (главному),

вто время как импульсы синхронизации на линии SCL формирует ведущий. Последовательные данные передаются по 8 бит. После того, как ведущий (главный) принял очередной байт, он выставляет на линию сигнал подтверждения приема ASK. Сигналы START и STOP формируются ведущим.

3.Режим подчиненного приемника. Последовательные данные и синхроимпульсы передаются по линиям SDA и SCL на одноименные входы подчиненного приемника. После того, как принят каждый байт, приемник анализирует наличие на линии бита подтверждения ASK, который формирует передатчик. Условия START и STOP формируются передатчиком. Распознавание адреса выполняется аппаратными средствами модуля приемника после приема адреса подчиненного устройства и бита направления.

4.Режим подчиненного передатчика. Первый байт принимается и обрабатывается подчиненным передатчиком так же, как и в режиме подчиненного приемника. Однако бит направления в принятом байте будет указывать, что направление обмена должно быть изменено на обратное. Далее последовательные данные передаются по линии SDA с одноименного выхода подчиненного (ведомого) передатчика, в то время как синхроимпульсы принимаются им по входу SCL от главного приемника. После передачи каждого байта подчиненный передатчик анализирует наличие на линии бита подтверждения ASK. Условия START и STOP формирует главный приемник.

58

В подчиненном режиме аппаратные средства контроллера I2C-интерфейса осуществляют поиск своего собственного подчиненного адреса или адреса общего вызова. Если детектируется один из этих адресов, запрашивается прерывание. Когда микроконтроллеру нужно стать главным, аппаратные средства ожидают, пока шина освободится. Возможное функционирование в качестве подчиненного при этом не прерывается. Если арбитраж шины потерян в главном режиме, то соответствующий контроллер I2C переключается в подчиненный режим немедленно и может детектировать свой собственный подчиненный адрес.

SMBus (The System Management Bus) — последовательный протокол обмена данными для устройств питания. Основан на шине I²C, разработанной фирмой Philips. Используется, например, для получения информации о состоянии аккумуляторной батареи ноутбуком (оставшаяся емкость, температура аккумулятора, количество использованных циклов зарядразряд, и т. д.).

SMBus — это двухпроводной интерфейс, по которому простые устройства могут обмениваться информацией с остальной системой. Сообщения идут к устройствам и от них, вместо прохождения по отдельным управляющим линиям.

Уменьшается количество проводов (не требуются отдельные линии управления).

Гарантируется дальнейшая наращиваемость путем приема сообщений по протоколу

I²C .

Назначение SMBus:

Определяет объем и конфигурирует память (метод последовательного обнаружения).

Предоставляет информацию изготовителя.

Сообщает системе номер модели и номер по каталогу.

Сообщает о различных типах ошибок.

Отключает тактовую частоту на свободных разъемах памяти.

Определяет пониженное напряжение батареи.

Интерфейс SM-Bus, по сравнению с I²C, имеет более низкое напряжение 3,3 В.

Сравнение шин I2C и SPI

В табл. 3.4 можно ознакомиться с преимуществами, которая дает та или иная последовательная шина.

Таблица 3.4

 

Преимущества шины SPI

 

Преимущества шины I2C

 

 

 

 

 

 

Предельная простота протокола передачи на физическом уровне обуславливает высокую надежность и

быстродействие передачи. Предельное быстродейст- Шина I2C остается двухпроводной, вие шины SPI измеряется десятками мегагерц и по- независимо от количества подклю- этому она идеальна для потоковой передачи больших ченной к ней микросхем.

объемов данных и широко используется в высокоскоростных ЦАП/АЦП, драйверах светодиодных дисплеев и микросхемах памяти

Все линии шины SPI являются однонаправленными, Возможность мультимастерной ра- что существенно упрощает решение задачи преобра- боты, когда к шине подключено не- зования уровней и гальванической изоляции микро- сколько ведущих микросхем.

схем

Протокол I2C является более стандартизованным, поэтому, пользоваПростота программной реализации протокола SPI. тель I2C-микросхем более защищен от проблем несовместимости вы-

бранных компонентов.

59

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]