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

12.3.2. Режим ведущего приемника

В режиме ведущего приемника осуществляется прием данных от ведомого передатчика. Передача инициализируется тем же самым способом, что и в режиме ведущего передатчика. После генерации ведущим условия START, подпрограмма обработки прерывания должна загрузить адрес ведомого и бит направления данных в регистр данных I2C (I2DAT), а затем сбросить флаг SI в регистре I2CONSET. Бит направления передачи данных (R/W) должен быть установлен в логическую 1, что соответствует чтению данных. Таким образом, первый переданный байт должен содержать адрес ведомого и бит чтения (R).

После передачи ведущим адреса ведомого и бита направления данных и получения от ведомого бита «подтверждение» (АСК), микроконтроллер устанавливает бит SI и возвращает код состояния в регистре состояния I2C (I2STAT). Действия, которые должны быть предприняты пользовательским программным обеспечением в соответствии со значением этого кода состояния, перечислены в Табл. 12.3.

Таблица 12.3. Коды состояния для режима 1С ведущего приемника

Код состояния (I2STAT)

Текущее состояние

шины I2C и аппаратной логики интерфейса

Ответ пользовательского программного обеспечения

 

Операции с I2DAT

Операции с битами I2CONSET

Следующее действие аппаратной логики интерфейса

   

STA

STO

SI

АА

 

08h

Передано условие START

Загрузить адрес ведомого + R

X

0

0

X

Адрес ведомого + W будет передан в линию; бит АСК будет принят из линии

10h

Передано условие повторный START

Загрузить адрес ведомого + R

X

0

0

X

Как и в предыдущем случае, адрес ведомого + W будет передан в линию

   

Загрузить адрес ведомого + W

X

0

0

X

12С перейдет в режим ведущего передатчика

38h

Арбитраж потерян во время приема бита NOT АСК

Нет операций с I2DAT

0

0

0

X

Шина 12С будет «отпущена»; 12С перейдет в режим ведомого

   

Нет операций с I2DAT

1

0

0

X

Условие START будет передано в линию, когда шина освободится

40h

Адрес ведомого + R был передан в линию;

бит АСК был принят

Нет операций с I2DAT

0

0

0

0

Будет принят байт данных из линии и возвращен (передан в линию) бит NOT АСК

 

Нет операций с I2DAT

0

0

0

1

Будет принят байт данных из линии и возвращен (передан в линию) бит АСК

48h

Адрес ведомого + R был передан в линию;

бит NOT АСК был принят

Нет операций с I2DAT

1

0

0

X

Условие повторный START будет передано в линию

 

Нет операций с I2DAT

0

1

0

X

Условие STOP будет передано в линию;

флаг STO будет сброшен

   

Нет операций с I2DAT

1

1

0

X

Условие STOP, сопровождаемое условием START будет передано в линию; флаг STO будет сброшен

50h

Байт данных был принят;

бит АСК был передан в линию

■Прочитать байт данных

0

0

0

0

Будет принят байт данных из линии и возвращен (передан в линию) бит NOT АСК

 

Прочитать байт данных

0

0

0

1

Будет принят байт данных из линии и возвращен (передан в линию) бит АСК

Таблица 12.3. Коды состояния для режима 12С ведущего приемника (продолжение)


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



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