Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 3000509.doc
Скачиваний:
26
Добавлен:
30.04.2022
Размер:
8.33 Mб
Скачать

Интерфейс microwire/plus

Интерфейс MICROWIRE/PLUS (гибрид USB и SPI) позволяет устройству работать как периферии CPU или микроконтроллера через последовательный интерфейс. Режим MICROWIRE/PLUS использует контакты выбор чипа (CS), последовательный генератор тактовых импульсов (SK), вход последовательных данных (SI) и выход последовательных данных (SO), как показано на рис. 37.

Данные читаются посредством ввода 2-битной коман-ды (CMD) и 6-разрядного адреса (RADDR или WADDR) до тех пор, пока одновременно выводятся данные по предыду-щему адресу.

Данные могут быть записаны в стандартном или па-кетных режимах. В стандартном режиме требуются 2 байта: один байт для ввода команды и адреса, и один байт для ввода данных. В пакетном режиме команда и адрес передаются в начале, а потом последовательные данные записываются по этому адресу. Пакетный режим останавливается, когда CS становится неактивным (высокое состояние).

Рис. 37

Интерфейс i2c и smBus

Н азвание I2C (ай-ту-си) представляет собой аббревиатуру слов Interconnect Integrated Circuit. Интерфейс I2C является двухпроводным последовательным интерфейсом, разработанным фирмой «Philips Corporation» /11, 12/ как простая шина внутренней связи для создания управляющей электроники и завоевавшим популярность относительно высокой скоростью передачи данных (см. ниже), дешевизной и простотой реализации (см., например, http://www.radiohlam.ru/teory/I2C.htm).

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-шины показана на рис. 38.

Рис. 38

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

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

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

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

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

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

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

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

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

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

ACK

Рис. 39. Формат 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 (рис. 40). Ввиду такого способа определения условий START и STOP при передаче данных линия SDA может изменять свое состояние только при низком уровне SCL.

Рис. 40. Пример обмена данными в 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 формирует главный приемник.

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

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

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

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

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