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

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

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

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

Добавлен: 16.06.2025

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

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

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

MSP430x1xxFamily

Условия «СТАРТ» и «СТОП», показанные на рис. 15-3, генерируются ведущим устройством. Под условием «СТАРТ» понимается переход с высокого уровня линии SDA на низкий при высоком уровне на SCL. Под условием «СТОП» понимается переход с низкого уровня на линии SDA на высокий при высоком уровне на SCL. Бит занятости I2CBB устанавливается после условия «СТАРТ» и сбрасывается после условия «СТОП».

Данные на SDA должны быть неизменны в течение периода высокого уровня SCL, как показано на рис. 15-4. Высокий и низкий уровень SDA может изменяться только тогда, когда SCL имеет низкий уровень, в противном случае будет сгенерировано условие «СТАРТ» или «СТОП».

Линия данных данные

не изменяются

SDA

SCL

Изменение данных разрешено

Рис. 15-4. Передача бита на шине I2C

15.2.3. Режимы адресации I2C

Модуль I2C поддерживает 7-разрядный и 10-разрядный режимы адресации.

7-разрядная адресация

В 7-разрядном адресном формате, показанном на рис. 15-5, первый байт – это 7-разрядный адрес ведомого и бит R/nonW. Бит ACK посылается приемником после каждого байта.

1

7

1

1

8

1

8

1

1

S

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

RW

ACK

Данные

ACK

Данные

ACK

P

Рис. 15-5. 7-разрядный формат адресации модуля I2C

10-разрядная адресация

В 10-разрядном адресном формате, показанном на рис. 15-6, первый байт содержит 11110b плюс два старших бита 10-разрядного адреса ведомого и бит R/nonW. Бит ACK посылается приемником после каждого байта. Следующий

272

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


Раздел XV.

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

байт состоит из 8 битов 10-разрядного адреса ведомого, за которым следует бит ACK и 8-разрядные данные.

1

7

1

1

8

1

8

1

1

S 1•ый байт адреса ведомого

R/W

ACK 2•ой байт адреса ведомого

ACK

Данные

ACK

P

1 1

1 1 0 X X

Рис. 15-6. 10-разрядный формат адресации модуля I2C

Повторные условия «СТАРТ»

Направление потока данных на SDA может быть изменено ведущим без первоначального останова переноса, что приведет к повторению условия «СТАРТ». Это вызовет «РЕСТАРТ». После выполнения «РЕСТАРТА» адрес ведомого отправляется снова, но уже с новым направлением данных, заданным битом R/nonW. Условие «РЕСТАРТ» показано на рис. 15-7.

1

7

1

1

8

1

1

7

1

1

8

1

1

S

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

R/W ACK Данные

ACK S

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

R/W ACK

Data

ACK P

1

Любое число

1

Любое число

Рис. 15-7. Формат адресации модуля I2C с повторным условием «СТАРТ»

15.2.4. Режимы работы модуля I2C

Модуль I2C работает в режимах ведущий передатчик, ведущий приемник, ведомый передатчик или ведомый приемник.

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

В режиме ведущего выполнение передачи и приема управляется с помощью битов I2CRM, I2CSTT и I2CSTP, как описано в таблице 15-1. Режимы ведущего передатчика и ведущего приемника показаны на рис. 15-8 и рис. 15-9. Когда после приема или передачи байта необходимо вмешательство ЦПУ, линия SCL удерживается в состоянии низкого уровня.

Таблица 15-1. Функционирование ведущего

I2CRM

I2CSTP

I2CSTT

Состояние или активность шины

X

0

0

Модуль I2C находится в режиме ведущего, но свободен.

Условия «СТАРТ» и «СТОП» не генерируются.

Активность инициируется установкой I2CSTT. I2CNDAT исполь-

зуется для определения длины передачи. Условие «СТОП»

0

0

1

автоматически не генерируется после перемещения байт,

количество которых задано в I2CNDAT. Программное обеспече-

ние должно установить I2CSTP для генерации условия «СТОП»

в конце передачи. Это используется для условия «РЕСТАРТ».

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

273


MSP430x1xxFamily

Таблица 15-1. (Окончание)

I2CRM

I2CSTP

I2CSTT

Состояние или активность шины

I2CNDAT используется для установки длины передачи.

0

1

1

Установка I2CSTT инициирует активность. Условие «СТОП»

автоматически генерируется после передачи количества

байт, заданного в I2CNDAT.

I2CNDAT не используется для установки длины передачи.

Длиной передачи должно управлять программное обеспе-

чение. Установка бита I2CSTT инициирует активность. Для

1

0

1

инициирования условия «СТОП» или останова активности

программное обеспечение должно установить бит I2CSTP.

Этот режим используется, если необходимо передать более

255 байт.

Установка бита I2CSTP генерирует условие «СТОП» на шине

0

1

0

после отправки количества байт, заданного в I2CNDAT или

немедленно, если уже было передано то количество байт,

которое заданное в I2CNDAT.

Установка бита I2CSTP генерирует условие «СТОП» на шине

1

1

0

после завершения текущей передачи или немедленно, если

текущая передача не выполняется.

1

1

1

Зарезервировано, шина неактивна.

Арбитраж

Если два или более передатчика одновременно начинают передачу на шине, запускается процедура арбитража. На рис. 15-10 поясняется процедура арбитража между двумя устройствами. Процедура арбитража использует данные, представленные на SDA конкурирующими передатчиками. Первый ведущий передатчик, генерирующий логическую единицу, отвергается противостоящим ведущим, генерирующим логический сигнал низкого уровня. Процедура арбитража дает приоритет устройству, которое передает поток последовательных данных с наименьшим двоичным значением. Ведущий передатчик, потерявший арбитраж, переключается в ведомый режим приема и устанавливает флаг потери арбитража ALIFG. Если два или более устройства посылают одинаковые первые байты, арбитраж продолжается на последующих байтах.

Если выполняется процедура арбитража, когда на SDA повторяются условия «СТАРТ» или «СТОП», ведущие передатчики, вовлеченные в арбитраж, должны послать повторные условия «СТАРТ» или «СТОП» в том же самом месте в формате фрэйма. Арбитраж не разрешается между:

Повторным условием «СТАРТ» и битом данных

Условием «СТОП» и битом данных

Повторным условием «СТАРТ» и условием «СТОП»

274

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


Раздел XV.

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

Ожидание

I2CSTT=1

* Когда I2RM = 1, I2CSTP должен быть установлен перед записью

последнего значения I2CDR. В противном случае генерация СТОП

3

4 x I2CPSC

будет некорректной.

Генерация START

I2CBUSY установлен

8 x I2CPSC

I2CBB установлен

I2CSTT сброшен

XA=0

8 x SCL

Отправка битов 6•0 адреса ведомого

с R/W = 0

1

Нет Ack

Ack

Повторный режим?

I2CRM=1

Да

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

Нет Да

2

Ack, и

I2CWORD=0

1

XA=1

8 x SCL

Нет ACK

Отправка битов 9•8

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

Установка NACKIFG

с R/W = 0

8 x SCL

Отправка битов 7•0

Ожидание

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

I2CBUSY сброшен

Ack

I2CRM=0

Да

Количество байт

в I2CNDAT Условие СТОП? отправлено

Нет

2

Нет

I2CDR пуст

Да I2CSTP=1

I2CDR загружен?*

10 x I2CPSC

Нет

Генерация СТОП

Нет

I2CDR записан

8 x I2CPSC

8 x SCL

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

I2CBB сброшен

байта I2CDR

Ack

Нет Ack

8 x I2CPSC

8 x SCL

I2CSTP, I2CMST

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

очищены

байта I2CDR

Ack

Нет Ack

1

Ожидание

I2CBUSY сброшен

Новый СТАРТ?

Новый СТАРТ?

3

Да

Рис. 15-8. Режим ведущего передатчика

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

275


MSP430x1xxFamily

Ожидание

2

I2CSTT=1

4 x I2CPSC

Генерация СТАРТ

8 x I2CPSC

I2CBB установлен

I2CSTT сброшен

XA = 1

8 x SCL

Отправка битов 9•8

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

XA = 0

с R/W = 0

8 x SCL

Отправка битов 7•0

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

4 x I2CPSC

Генерация второго СТАРТ

8 x SCL

8 x SCL

Отправка битов 9•8

Отправка битов 6•0

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

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

с R/W = 1

с R/W = 1

Нет Ack

Ack

Ack

1

8 x SCL

Нет

Прием младшего

байта данных

1 x SCL

Генерация Ack

Нет

8 x SCL

Прием старшего

I2CWORD=0

байта данных

8 x SCL

Генерация Ack

3

Нет

Новый СТАРТ?

Да

2

Да

Новый СТАРТ?

1

Нет Ack

NACKIFG установлен

Нет

Ожидание

3

I2CBUSY сброшен

Нет

I2CRM=0

Повторный режим?

Количество

I2CRM=1

байт I2CNDAT

принято?

Да

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

Да, I2CSTP=1

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

10 x I2CPSC

Генерация СТОП

Нет

8 x I2CPSC

I2CBB очищен

Новый СТАРТ?

8 x I2CPSC

I2CSTP, I2CMST

очищены

Да

Ожидание

I2CBUSY очищен

Рис. 15-9. Режим ведущего приемника

276

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