8.1. История создания протокола I 2C
Чтобы уяснить, почему популярен тот или иной протокол связи, лучше всего посмотреть, как он развивался с течением времени. Протокол I 2C был предложен фирмой Philips в начале 1980-х годов для обеспечения низкоскоростной связи между различными интегральными микросхемами. В 1990 году этот протокол был стандартизирован и другие компании начали его использовать, выпуская свои собственные совместимые чипы. Протокол часто называют "двухпроводным", поскольку связь осуществляется по двум шинам: линии синхронизации и линии передачи данных. Хотя не все двухпроводные протоколы, строго говоря, могут называться I 2C (из-за неоплаты права на использование названия), но, как правило, их называют I 2C-устройствами. Так же марку KLEENEX® часто ставят даже на тех тканях, которые не производит эта фирма. Если в описании какого-то устройства сказано, что оно поддерживает "двухпроводной" протокол связи, можно быть уверенным, что оно будет работать так, как описано в этой главе.
8.2. Схема подключения устройств I 2C
Подключение устройств по протоколу связи I 2C иллюстрирует рис. 8.1. От предыдущих способов цифровой передачи данных, рассмотренных в этой книге, I 2C отличается тем, что несколько устройств используют одни и те же линии связи: шину синхронизации сигнала (SCL) и двунаправленную шину данных (SDA). Последняя служит для отправки данных от ведущего устройства к ведомым. Обратите внимание, что на каждой шине I 2C требуется установка подтягивающих резисторов.
Рис. 8.1. Схема подключения устройств I 2C
8.2.1. Взаимодействие и идентификация устройств
Протокол I 2C позволяет нескольким ведомым устройствам соединяться по одной шине с одним ведущим устройством. Далее роль ведущего устройства (мастера) будет играть плата Arduino. Мастер шины отвечает за инициирование обмена. Ведомые устройства не могут инициировать обмен данных, они способны только отвечать на запросы, которые посылает ведущее устройство. Так как к одной линии подключено несколько ведомых устройств, принципиально важно, что устанавливать связь может только ведущее устройство. В противном случае, сразу несколько устройств могли одновременно пытаться отправить данные, что привело бы к искажениям.
Все команды и запросы, отправленные от мастера, принимаются всеми устройствами на шине. Каждое ведомое устройство имеет уникальный 7-битовый адрес (идентификационный номер, ID устройства). Когда ведущее устройство инициирует связь, оно передает идентификатор ведомого. Ведомые устройства реагируют на данные, передающиеся по шине, только тогда, когда они направлены в их адрес.
Адрес каждого устройства на шине I 2C должен быть уникальным. Некоторые устройства I 2C имеют настраиваемые адреса, а другие - фиксированный адрес, заданный производителем. При подключении к одной шине нескольких I 2C-устройств, необходимо чтобы у них были различные идентификаторы.
Датчики температуры обычно допускают перепрограммирование I 2C-адреса, поэтому на одной шине I 2C может быть несколько таких датчиков. Далее мы рассмот
- 172 -
рим датчик температуры ТС74. Из рис. 8.2 видно, что этот датчик может иметь несколько разных адресов. В примерах данной главы у датчика TC74A0-5.0VAT (исполнение ТО-220) I 2C-адрес задан как 1001000.
Рис. 8.2. Фрагмент технического описания датчика ТС74. расшифровка обозначения и варианты адресов I 2C
Поскольку выпускаются датчики температуры с восьмью различными идентификационными номерами, к одной шине I 2C можно подключить до восьми разных датчиков. Для написания программ для этих датчиков необходимо знать их ID, чтобы отправлять правильные команды.
В датчиках другого типа, например, AD7414 и AD7415 есть контакт (AS), который позволяет настроить адрес устройства I 2C. Взгляните на данные датчика AD7414 из документации (рис. 8.3).
Датчик AD7414 выпускается в четырех вариантах исполнения, с контактом AS и без него. Адрес устройства, снабженного контактом AS, зависит от состояния этого контакта: отключен, подключен к питанию или земле.
Table 4. 1 1 С Address Selection
Рис. 8.3. Фрагмент технического описания датчика AD7414. цоколевка и варианты адресов I 2C
Читать дальше