Аппаратная реализация I2C. Часть 6 Протокол I2C - служебные адреса

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

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

clip_image002

Обратите внимание — информационная часть содержит бит В, который в сочетании с битами 7...1 (обозначенными на рис. 1.32 сим­волом «X») регламентирует назначение информации, передаваемой в данном случае. Регламентируются следующие комбинации:

• 0000 0110 (06h) — аппаратный сброс. При получении этой ком­бинации все абоненты, реагирующие на общий вызов, произво­дят внутренний сброс (рестарт). Естественно, аппаратный сброс этих абонентов не должен блокировать шину;

• 0000 0100 (04h) — запись программируемой части адреса slave-абонента с помощью аппаратных средств. Все абоненты, ответившие на этот адрес, будут блокированы и не смогут быть сброшены;

• 0000 0000 (00h) — этот код запрещается использовать;

• xxxxxxxl — используется, когда на шине присутствует много совмещенных master/slave-абонентов. В таких случаях часто не­обходимо генерировать запрос об адресе устройства, которому должна быть передана информация. К примеру, устройство «А», получив от устройства «Б» данные, обработав их, передает информацию устройству «В» вместе с собственным адресом (обычно адреса «raaster/slave» в совмещенных абонентах совпа­дают).

На рис. 1.33 представлен формат передачи hardware general call.

clip_image004

Рис. 1.33. Формат hardware genera] call

Программный Start удобно использовать тогда, когда устройст­во, соединенное с шиной I2C, не имеет аппаратного интерфейса. Соб­ственно, если встроенный интерфейс I2C есть, скажем, в микрокон­троллере, его очень просто использовать. Достаточно запрограммиро­вать микроконтроллер на прерывание от шины, и при наличии передачи будет выполняться программа обработки данных, поступаю­щих с шины. Если встроенного интерфейса I2C нет, микроконтроллер обязан постоянно опрашивать шину на предмет получения данных.

Процедура опознавания в таком случае выглядит следующим об­разом, отраженным на рис. 1.34.

clip_image006

Из рисунка видно, что микроконтроллеру достаточно опрашивать линию SDA с низкой частотой, определяя один из нулей в стартовом бите. После обнаружения этого нуля на линии SDA микроконтролле­ру необходимо переключиться на более высокую частоту опроса, чтобы зафиксировать состояние «повторный Start» (Sr). Обычный ап­паратный приемник игнорирует состояние S и дождется Sr.

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

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

clip_image008

Следующие служебные адреса относятся к расширениям шины I2C. Мы уже знаем, что первоначально шина имела 7-разрядную адресацию и скорость передачи до 100 кбит/с. Но даже несмотря на эти скромные возможности, шина быстро завоевала популярность. Очень быстро были заняты все доступные адреса, да и скорость передачи данных быстро росла, улучшалась технология производства микро­схем. И шину модернизировали, наделив ее новыми возможностями:

• режим fast-speed с возможностью передачи до 400 кбит/с;

• режим Hs-mode — до 3,4 Мбит/с;

• адресация с помощью 10 разрядов, расширенные возможности адресации до 1024 абонентов.

Все новые абоненты, доступные для использования в шинах с расширениями, естественно, совместимы и со старыми форматами передачи (приема). «Соль» скоростных режимов заключается в един­ственном обстоятельстве — в укорочении стробирующего импульса на линии SCL. Поэтому для совместимости со старыми интерфейса­ми стробирующий импульс может быть продлен до необходимой ве­личины.

Работа шины в режиме fast-speed характеризуется следующими важными свойствами:

• отсутствие совместимости с шиной CBUS, так как эта шина не имеет возможности работать на таких скоростях;

• наличие входных формирователей (триггеров Шмитта) SDA и SCL линий.

Если элементы, обладающие возможностью работы в режиме fast-speed, обесточены, они не должны влиять на работу шины.

В документации [4] подробнейшим образом разобраны форматы передачи в режиме Hs-mode, принципы совместимости его с другими режимами. Мы не будем останавливаться на описании этих режимов, поскольку они пока мало распространены. Значительно более суще­ственный практический интерес для нас представляет 10-разрядная адресация шины I2C.

Поскольку форматом шины предусмотрена передача только «порции» из 8 байтов, 10-разрядные адреса приходится транслиро­вать 2 байтами. Первый байт имеет структуру 11110xx(R/W), в кото­ром биты, обозначенные символом «х», являются старшими разряда­ми 10-разрядного адреса slave-устройства. Естественно, в составе первого байта должен быть передан бит R/W.

Адресация с помощью 10 разрядов аналогична 7-разрядной адре­сации, то есть основана на тех же принципах. Устройство, получив служебный код в первом байте и опознав возможность приема 10-разрядного адреса, подтверждает это и принимает второй байт. При совпадении принятого адреса с содержащимся внутри устройст­ва собственным адресом выдается подтверждение АСК и ведется прием данных в обычном режиме до появления состояния Stop.

На рис. 1.36 показан формат передачи данных от master-абонента к slave-устройству.

clip_image010

Рис. 1.36. Передача данных от master-абонента к slave-устройству

Slave-абоненты сравнивают первый полученный байт со своими данными и, если они совпадают, выдают сигнал АСК (А1 на рис. 1.36). Очевидно, сразу несколько устройств может выдать под­тверждение. Поэтому при получении второго байта только одно уст­ройство выдаст сигнал АСК (А2). Остальные устройства, которые ранее выдали сигнал АСК (А1), останутся адресованными по перво­му байту до получения сигнала Stop.

На рис. 1.37 приведен формат передачи данных от slave-абонента к master-устройству.

clip_image012

1 байт J 2 байт 1 байт j

WRITE READ

Рис. 1.37. Передача данных от slave-абонента к master-устройству

Вначале master-устройство первым байтом адресует все slave-абоненты соответствующим кодом, и они подтверждают его получение сигналом АСК (А1). Затем вторым байтом адресуется конкретное устройство с выдачей сигнала АСК (А2). После выполне­ния повторного условия Start (Sr) адресованное slave-устройство со­храняет возможность обращаться к нему, поэтому достаточно повто­рить первый байт адреса, но уже с другим значением бита R/W и по­лучить АСК (A3).

На рис. 1.38—1.40 приведены комбинированные форматы пере­дачи данных. Они могут использоваться, например, при управлении микросхемами последовательной памяти.

clip_image014

clip_image016

clip_image018

Рис. 1.40. Комбинированный формат. Master-абонент передает данные двум slave-устройствам: одному с 7-разрядным адресом, а другому с 10-разрядным

адресом

В заключение этой главы приведем основные электрические ха­рактеристики шины I2C для всех упомянутых режимов.

Таблица 1.4. Параметры режимов low-speed, fast-speed

Параметр

Символ

Режим low-speed

Режим fast-speed

Ед.

мин.

макс.

мин.

макс.

изм.

Низкий уровень (low) входного напряжения

\

0,5

1,5

-

-

В

Высокий уровень (HIGH) входного напряжения

vih

3,0

VDD + 0,5

-

-

В

Входная емкость, приходящаяся на один вывод

о

-

10

-

10

пФ

Частота на линии scl

'scl

0

100

0

400

кГц

Время удержания условия Start

'hd.sta

4,0

0,6

-

мкс

Окончание таблицы 1.4

- Параметр

Символ

Режим low-speed

Режим fast-speed

Ед. изм.

мин.

макс.

мин.

макс.

Период низкого уровня (LOW) сигнала SCL

'low

4,7

-

1,3

-

мкс

Период высокого уровня (HIGH) сигнала SCL

4high

4,0

-

0,6

-

мкс

Время установки повторного условия Start

'su.sta

4,7

-

0,6

-

мкс

Время удержания данных

'hd.dat

0

3,45

0

0,9

мкс

Время установки данных

'su.dat

250

-

100

-

не

Время нарастания сигналов SDA и SCL

tr

-

1000

20 + 0,1СЬ

300

не

Время спада сигналов SDA и SCL

t,

-

300

20 + 0,1 Сь

300

не

Время установки условия Stop

'su.sto

4,0

-

0,6

-

мкс

Время паузы между условиями Stop и Start

w

4,7

-

1,3

-

мкс

Паразитная емкость линии

-

400

-

400

пФ

clip_image020

Литература:


Б. Ю. Семенов, «ШИНА 12С В РАДИОТЕХНИЧЕСКИХ КОНСТРУКЦИЯХ» ,Москва СОЛОН-Р 2002

Предлагаю ознакомиться с аналогичными статьями: