Разберемся подробнее в функциональном назначении служебных адресов.
Общий вызов может адресовать все устройства, подключенные к шине I2C, в этом случае при получении общего вызова устройства должны подтверждать прием выдачей сигнала АСК. Устройства, которые не нуждаются в сведениях, передаваемых при общем вызове, могут игнорировать этот адрес, не выставляя сигнал АСК. Если же устройство выполнено так, что обязательно требует данных общего вызова, оно ведет себя точно так же, как обыкновенный slave-абонент. Второй байт, следующий за общим вызовом, обычно содержит информационную часть. На рис. 1.32 представлен формат общего вызова.
Обратите внимание — информационная часть содержит бит В, который в сочетании с битами 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.
Рис. 1.33. Формат hardware genera] call
Программный Start удобно использовать тогда, когда устройство, соединенное с шиной I2C, не имеет аппаратного интерфейса. Собственно, если встроенный интерфейс I2C есть, скажем, в микроконтроллере, его очень просто использовать. Достаточно запрограммировать микроконтроллер на прерывание от шины, и при наличии передачи будет выполняться программа обработки данных, поступающих с шины. Если встроенного интерфейса I2C нет, микроконтроллер обязан постоянно опрашивать шину на предмет получения данных.
Процедура опознавания в таком случае выглядит следующим образом, отраженным на рис. 1.34.
Из рисунка видно, что микроконтроллеру достаточно опрашивать линию SDA с низкой частотой, определяя один из нулей в стартовом бите. После обнаружения этого нуля на линии SDA микроконтроллеру необходимо переключиться на более высокую частоту опроса, чтобы зафиксировать состояние «повторный Start» (Sr). Обычный аппаратный приемник игнорирует состояние S и дождется Sr.
Адрес шины CBUS возможно использовать при работе с элементами, оснащенными этой шиной. В задачи этой книги не входит рассказ о шине CBUS, но тем не менее она по своей реализации достаточно близка к шине I2C, поэтому имеется возможность их совмещения.
В спецификации CBUS имеется третья линия, обозначаемая как DLEN. Диаграммы сигналов, отражающие способ работы с этой шиной в условиях совмещения с I2C, приведены на рис. 1.35.
Следующие служебные адреса относятся к расширениям шины 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-устройству.
Рис. 1.36. Передача данных от master-абонента к slave-устройству
Slave-абоненты сравнивают первый полученный байт со своими данными и, если они совпадают, выдают сигнал АСК (А1 на рис. 1.36). Очевидно, сразу несколько устройств может выдать подтверждение. Поэтому при получении второго байта только одно устройство выдаст сигнал АСК (А2). Остальные устройства, которые ранее выдали сигнал АСК (А1), останутся адресованными по первому байту до получения сигнала Stop.
На рис. 1.37 приведен формат передачи данных от slave-абонента к master-устройству.
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 приведены комбинированные форматы передачи данных. Они могут использоваться, например, при управлении микросхемами последовательной памяти.
Рис. 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 | пФ |
Литература:
Б. Ю. Семенов, «ШИНА 12С В РАДИОТЕХНИЧЕСКИХ КОНСТРУКЦИЯХ» ,Москва СОЛОН-Р 2002
0 коммент.:
Отправить комментарий