Предыдущая Следующая

OOCSZ7

- Байт данных

Бит подтверждения от приемника

Повторяется, если . передаются еще байты

■---1

.J. I

Условие STOP

Условие повторный START

P/S I __I

Рис. 12.2. Организация передачи данных по шине 12С

12.3. Операционные режимы l2C

12.3.1. Режим ведущего передатчика

В режиме ведущего передатчика данные передаются от ведущего к ведомому. Для инициализации этого режима, в регистр установок управления 12С (I2CONSET) необходимо предварительно записать значения, приведенные в Табл. 12.1.

Таблица 12.1. Инициализация регистра I2CONSET для режима ведущего

Номер бита

Название бита

Значение бита

0

-

-

1

-

-

2

АА

0

3

SI

0

4

STO

0

5

STA

0

6

I2EN

1

7

 

-

Бит (флаг) I2EN регистра I2CONSET должен быть установлен, чтобы разрешить работу интерфейса 12С. Бит (флаг) АА, наоборот, следует сбросить, чтобы интерфейс 12С микроконтроллера не выдавал в линию бит «подтверждение» (АСК) в случае, когда ведущим на шине является другое устройство. Таким образом, функционирование в режиме ведомого блокируется, и интерфейс 12С микроконтроллера будет функционировать в режиме ведущего. Биты (флаги) STA, STO и SI должны быть сброшены. Бит SI сбрасывается путем записи логической 1 в бит SIC регистра I2CONCLR.

Первый байт (его передает ведущий), содержит адрес ведомого приемника (7 битов) и бит направления последующей передачи данных (R/W). В режиме ведущего передатчика этот бит должен быть сброшен (содержит значение логического 0), что соответствует направлению «запись». Таким образом, первый передаваемый байт содержит адрес ведомого и бит записи (W). Затем ведущий побайтно передает данные. После передачи каждого из байтов данных, ведущий принимает от ведомого бит «подтверждение» (АСК). Условия START и STOP генерируются ведущим, чтобы указать начало и конец последовательной передачи.

Когда встроенный программный драйвер интерфейса 12С устанавливает бит STA, происходит переход в режим ведущего передатчика. Теперь, если шина свободна (т. е. другие подключенные к шине устройства не устанавливают на ней напряжение НИЗКОГО уровня), логическая схема 12С генерирует и передает в линию условие START. После этого, микроконтроллер устанавливает бит SI регистра I2CONSET и в регистре состояния интерфейса I2C (I2STAT) возвращает код состояния (результат операции), равный 08h. Этот код состояния предназначен для использования вектором и подпрограммой обработки прерывания, которая сначала должна загрузить адрес ведомого и бит записи в регистр данных интерфейса I2C (I2DAT), а затем сбросить бит SI. Как уже упоминалось выше, бит SI сбрасывается путем записи логической 1 в бит SIC регистра I2CONCLR,.

Бит SI устанавливается снова после того, как адрес ведомого и бит R/W переданы ведомому, и от него получен бит «подтверждение» (АСК). В регистре состояния I2STAT вновь возвращается некоторый код состояния. Действия, которые должны быть предприняты программой пользователя в соответствии со значением этого кода, перечислены в Табл. 12.2. Получить более подробную информацию об особенностях работы интерфейса 12С можно, обратившись к источникам [1, 12], а также к файлам технической документации, которые находятся на прилагаемом к данной книге компакт-диске.


Предыдущая Следующая



НА ГЛАВНУЮ | ЧТО ТАКОЕ PIC ? | ПРОГРАММАТОР | ПРОЕКТЫ | СТАТЬИ | ССЫЛКИ | КАРТА САЙТА
Hosted by uCoz