Файл: Семейство микроконтроллеров MSP430X1XX, руководство пользователя (2004).pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 16.06.2025

Просмотров: 2789

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Раздел XV.

Периферийный интерфейс USART, режим I2C

Линия шины

SCL

Устройство № 1 потеряло арбитраж

Данные

n

и выключилось

от устройства № 1

1

Данные

0

0

0

от устройства № 2

1

1

1

Линия шины

0

0

0

SDA

1

1

1

Рис. 15-10. Процедура арбитража между двумя ведущими передатчиками

Автоматический подсчет байтов данных

Автоматический подсчет байтов данных поддерживается в режиме ведущего с помощью регистра I2CNDAT. Когда I2CRM=0, число принятых или отправленных байтов записывается в I2CNDAT. Условие «СТОП» автоматически генерируется после того, как было передано количество байт, содержащееся в I2CNDAT.

Примечание: Регистр I2CNDAT

Не следует изменять содержимое регистра I2CNDAT, когда I2CBB=1 и I2CRM=0. В противном случае возможен непредсказуемый результат.

Режим ведомого

Врежиме ведомого операции передачи и приема автоматически управляются модулем I2C. Режимы ведомого передатчика и ведомого приемника показаны на рис. 15-11 и рис. 15-12.

Врежиме ведомого приемника биты последовательных данных принимаются на SDA и сдвигаются по тактовым импульсам, генерируемым ведущим устройством. Ведомое устройство не генерирует тактовый сигнал, но может удерживать линию SCL в состоянии низкого уровня, если после приема байта необходимо вмешательство ЦПУ.

Вход в режим ведомого передатчика происходит, когда байт адреса ведомого, переданный ведущим, совпадает с собственным адресом, и был послан установленный бит R/W, указывающий на запрос отправки данных ведущему. Ведомый передатчик сдвигает последовательные данные наружу на SDA по импульсам тактирования, генерируемым ведущим устройством. Ведомое устройство не

Библиотека Компэла

277


MSP430x1xxFamily

Ожидание

Нет

2

Установка OAIFG

если не РЕСТАРТ

Обнаружен СТАРТ?

Да

I2CDR пуст

STTIFG установлен

I2CDR загружен?

I2CBUSY установлен

4 x I2CPSC

I2CBB установлен

Да

Нет

8 x SCL

XA = 1

XA = 0

Отправка младшего

8 x SCL

8 x SCL

байта данных

Прием битов 9•8

Прием битов 6•0

ведущему

адреса ведомого

адреса ведомого

с R/W = 0

с R/W = 1

Ack

Нет Ack

Не

Не

8 x SCL

совпало

совпало

Отправка старшего

2

байта данных

ведущему

I2COA совпало

I2COA совпало

Ack

Нет Ack

1

1 x SCL

1 x SCL

Ack и

Отправка

Отправка

I2CWORD=0

подтверждения

подтверждения

Обнаружен СТОП?

Нет

8 x SCL

Прием битов 7•0

Не

2

адреса ведомого

совпало

I2COA совпало

Обнаружен

Да

РЕСТАРТ?

1 x SCL

Отправка

1 x SCL

4 x I2CPSC

Да

подтверждения

Отправка

I2CBB очищен

подтверждения

1

Установка OAIFG

8 x SCL

13 x I2CPSC

I2CBUSY

если нет РЕСТАРТ

Прием битов 9•8

очищен

адреса ведомого

NACKIFG установлен

с R/W = 1

Обнаружен

Да

STTIFG установлен

второй СТАРТ?

Ожидание

Нет

Данные

Да

Вход в режим ведомого

на SDA?

приемника на "1"

Нет

Рис. 15-11. Ведомый передатчик

278

Библиотека Компэла


Раздел XV.

Периферийный интерфейс USART, режим I2C

Ожидание

Нет

Обнаружен

СТАРТ?

2

Да

Да

STTIFG установлен

I2CBUSY установлен

4 x I2CPSC

I2CBB установлен

XA = 1

XA = 0

8 x SCL

8 x SCL

Прием битов 9•8

Прием битов 6•0

адреса ведомого

адреса ведомого

с R/W = 0

с R/W = 0

Нет

Нет

совпадения

совпадений

2

I2COA совпало

I2COA совпало

1 x SCL

1 x SCL

Отправка

Отправка

подтверждения

подтверждения

Нет

8 x SCL

совпадения

Прием битов 7•0

Установка OAIFG

адреса ведомого

если не РЕСТАРТ I2COA совпало

1 x SCL

Отправка

подтверждения

Обнаружен

РЕСТАРТ?

Из режима ведомой передачи

Нет

8 x SCL Прием младшего

байта данных от ведущего

1 x SCL

Отправка

подтверждения

8 x SCL Прием старшего

байта данных от ведущего

1 x SCL

Отправка

подтверждения

Состояние СТОП?

Да

4 x I2CPSC

I2CBB очищен

1 x I2CPSC

I2CBUSY очищен

Ожидание

1

Нет

I2CWORD=0 режим байта

Рис. 15-12. Ведомый приемник

Библиотека Компэла

279


MSP430x1xxFamily

генерирует тактовых сигналов, но может удерживать линию SCL в состоянии низкого уровня, если после передачи байта необходимо вмешательство ЦПУ.

Примечание: Бит I2CTRX в режиме ведомого

Бит I2CTRX должен быть очищен для нормальной работы в режиме ведо-

мого

15.2.5. Регистр данных I2CDR модуля I2C

Регистр I2CDR может быть доступен как 8-ми или 16-разрядный регистр, что определяется битом I2CWORD. Функции регистра I2CDR описаны в таблице 15-2. Когда I2CWORD=1, любая попытка изменить регистр с помощью однобайтной команды будет неуспешной и регистр не будет модифицирован.

Таблица 15-2. Функции регистра I2CDR

I2CWORD

I2CTRX

Функция I2CDR

Режим передачи байта: Используется только младший байт. Байт дважды буферизируется. Если новый байт записан до передачи

01 предыдущего байта, новый байт ожидает во временном буфере до момента защелкивания в младшем байте регистра I2CDR. Когда I2CDR доступен, устанавливается бит TXRDYIFG.

Режим приема байта: Используется только младший байт. Байт дважды буферизируется. Если новый байт принят до прочтения

00 предыдущего байта, новый байт ожидает во временном буфере до момента защелкивания в младшем байте регистра I2CDR. Когда I2CDR готов для чтения, устанавливается бит RXRDYIFG.

Режим передачи слова: Первым передается младший байт слова, затем старший байт. Регистр дважды буферизируется. Если новое

11 слово записано до передачи предыдущего слова, новое слово ожидает во временном буфере до момента защелкивания в регистре I2CDR. Когда I2CDR доступен, устанавливается бит TXRDYIFG.

Режим приема слова: Первым принимается младший байт слова,

затем старший байт. Регистр дважды буферизируется. Если

1

0

новое слово принято до прочтения предыдущего слова, новое

слово ожидает во временном буфере до момента защелкивания в

регистре I2CDR. Когда I2CDR готов к доступу, устанавливается бит

RXRDYIFG.

Опустошение при передаче

В режиме ведущего опустошение происходит, когда сдвиговый регистр передачи и буфер передачи пусты. В режиме ведомого опустошение происходит, когда сдвиговый регистр передачи и буфер передачи пусты, а внешний ведущий I2C все еще запрашивает данные. Когда происходит опустошение при передаче, устанавливается бит I2CTXUDF. Запись данных в регистр I2CDR или

280

Библиотека Компэла