11.2.4. Работа в режиме ведомого

(Руководство разработчика по микроконтроллерам семейства HCS08)

Работа модуля I2C в режиме ведомого очень похожа на работу в режиме ведущего. Для осуществления обмена данными необходимо выполнить следующие действия:

  1. В регистр IICA следует записать адрес данного ведомого устройства.
  2. Ведомое устройство должно дождаться, пока на шину будет выставлен его адрес. Это показывает флаг IICS:IAAS.
  3. Далее должен быть программно прочитан бит SRW регистра состояния IICS. Этот бит показывает состояние бита R/W в принятом байте с адресом ведомого. Если SRW = 0, то ведущее устройство собирается записывать данные в ведомое. Если же SRW = 1, то ведущий собирается считать данные из ведомого устройства.
  4. Если SRW = 1, то программное обеспечение должно установить бит TX регистра управления IICC ведомого. Это конфигурирует модуль I2C на режим передачи, т.е. ведомое устройство посылает данные ведущему. Если бит TX установлен, то необходимо записать первый байт данных, который необходимо отослать, в регистр IICD.
  5. После окончания передачи байта автоматически установится флаг TCF регистра IICS. В этом случае необходимо прочитать бит RXAK регистра IICS, чтобы удостовериться, что ведущее устройство прочитало передаваемый байт данных. Если RXAK = 0, то ведущее устройство подтвердило прием данных и можно записывать следующий байт, который необходимо передать, в регистр IICD. Если же RXAK = 1, то ведущее устройство не подтвердило прием данных. В таком случае необходимо сбросить бит TX регистра IICC в 0 и произвести чтение регистра IICD, чтобы при следующей попытке установления связи принять данные от ведущего устройства.
  6. Если после шага 3 бит SRW = 0, то необходимо программно настроить модуль на прием данных (IICC:TX = 0) и прочитать значение регистра IICD, чтобы начать сеанс приема данных.
  7. После окончания передачи данных программное обеспечение должно прочитать принятый байт из регистра IICD. После каждой операции пересылки данных ведомое устройство генерирует бит подтверждения в зависимости от состояния бита TXAK регистра IICC. Если TXAK = 0, то посылается бит подтверждения. Если TXAK = 1, то генерируется бит неподтверждения NACK.

Электронные компоненты Freescale >>>
Подробнее о компании Freescale >>>