Байт, передаваемый вслед за байтом (или байтами) адреса, обычно интерпретируется адресованным ведомым как команда или управляющий/байт, посредством которого передается конфигурационная информация. Например, для I2C-совместимых микросхем памяти может потребоваться передача внутреннего адреса, начиная с которого будут заноситься данные (см. Пример 12.3). Все последующие байты обычно являются простыми данными или же данными, перемежающимися управляющими байтами.
Для иллюстрации рассмотрим микросхему ЦАП МАХ518 компании Maxim, блок-схема которой приведена на Рис. 12.16. Эта микросхема аналогична SPI-совместимой МАХ459, имеет двухуровневый регистровый конвейер, два канала и режим пониженного потребления.
Микросхема МАХ518 имеет 7-битный адрес вида 01011AD1AD0, где значения битов AD1 и ADO определяются логическими уровнями на соответствующих выводах микросхемы. Если предположить, что оба вывода подключены к общему проводу, то для адресации микросхемы ведущий должен будет послать следующий пакет:
Байт команды имеет формат 000 RST PD XX А0 и содержит три управляющих бита.
∙ А0
Этот бит используется для разрешения входного PIPO-регистра 0-го (А0 = 0) и 1-го (А0 = 1) каналов.
∙ PD
Когда этот бит равен 1, оба канала АЦП переключаются в режим пониженного потребления, при этом суммарный ток потребления микросхемы не превышает 4 мкА. Содержимое внутренних регистров остается неизменным, кроме того, в этом состоянии можно загружать данные и обновлять содержимое регистров. Изменение режима работы происходит только после формирования ведущим состояния СТОП, т. е. учитывается только последнее переданное значение бита.
∙ RST
Если этот бит равен 1, то все внутренние регистры сбрасываются независимо от значения последующего байта данных. После формирования на шине состояния СТОП напряжение на выходах обоих каналов становится равным нулю.
В любом случае изменение сигнала на аналоговом выходе в соответствии со значением управляющего байта и байта данных происходит только после формирования на шине состояния СТОП. Если с момента формирования последнего состояния СТОП было послано несколько пар байтов, то на состояние устройства окажут влияние только последние значения.
Рис. 12.16.
Для работы с ЦАП МАХ518 нам потребуется написать подпрограмму, формирующую состояния СТАРТ, СТОП и передающую по шине байты данных. Для написания подобного драйвера устройства необходимо более внимательно рассмотреть временные соотношения между тактовым сигналом и сигналом данных, на которые в большинстве своем накладываются более жесткие ограничения, чем в случае интерфейса SPI.
Микросхема МАХ518 и большинство современных I2С-совместимых устройств поддерживают режим Fast, поэтому диаграммы, приведенные на Рис. 12.17, соответствуют тактовой частоте для этого режима (400 кГц). В частности, для корректного формирования состояния СТАРТ требуется, чтобы ВЫСОКИЙ уровень на линии SCL удерживался в течение не менее 0.6 мкс (
Рис. 12.17.
Во время передачи байта данных тактовый сигнал должен удовлетворять следующим условиям: длительность интервала НИЗКОГО уровня (
На Рис. 12.17 не указаны максимальные значения времени нарастания и спада, которые не должны превышать 300 не при наибольшей емкости шины, равной 400 пФ. Чтобы удовлетворить этому требованию, при такой емкости шины сопротивление подтягивающих резисторов, изображенных на Рис. 12.14, не должно превышать 1.8 кОм. При небольшой длине шины и малом количестве подключенных к ней устройств сопротивление подтягивающих резисторов можно увеличить в десятки раз для уменьшения потребления.