11.2.2. Логика управления I²C

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

Для управления встроенным в МК модулем I2C используются 5 регистров специальных функций. Основные действия по управлению обменом осуществляются с помощью регистра управления IICC.

Модуль I2C включается установкой бита IICEN в регистре IICC. Если бит IICEN установлен, то линии SDA и SCL переходят под управление модуля I2C.

Бит MST регистра IICC управляет режимом работы: Если MST = 1, то модуль работает в режиме ведущего устройства, при MST = 0 — в режиме ведомого. Кроме того, данный бит управляет генерацией состояний Старт и Стоп на шине I2C. Изменение бита MST из 0 в 1 (т.е. переход устройства в режим ведущего) генерирует на линии состояние Старт. При изменении бита MST с 1 в 0 (т.е. переход устройства в режим ведомого) на шине генерируется состояние Стоп.

Еще один бит, IICC:TX, управляет направлением передачи по шине: если TX = 1, то устройство передает данные, а если TX = 0, то принимает. Логика установки бита TX не зависит от того, работает устройство в режиме ведущего или в режиме ведомого.

Данные, которые необходимо отправить на линию, записываются в регистр данных IICD. В указанном регистре также сохраняются принятые по шине I2C данные. Это означает, что программа не может прочитать данные, только что записанные в регистр IICD.

Текущее состояние модуля I2C определяется тремя флагами, которые размещаются в регистре состояния IICS:

  • TCF — устанавливается по окончании пересылки данных;
  • IAAS — устанавливается, когда устройство работает в режиме ведомого и ведущий выставил на шину I2C адрес именно этого ведомого;
  • ARBL — устанавливается, когда устройство, работающее в режиме ведущего, теряет управление над линией и переключается в режим ведомого.

При установке любого из перечисленных выше флагов устанавливается также флаг события в модуле I2C (IICS:IICIF) и генерируется запрос на прерывание, если прерывания от модуля I2C разрешены (бит IICS:IICIE установлен).

Сброс флага ARBL происходит при записи в него 1, сброс флага IAAS происходит при записи данных в регистр IICC, а флаг TCF сбрасывается, если прочитать регистр IICD при IICC:TX = 0 или если записать данные в регистр IICD при IICC:TX = 1.

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