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 ? | | ПРОГРАММАТОР | | ПРОЕКТЫ | | СТАТЬИ | | ССЫЛКИ | | КАРТА САЙТА |