|
содержание ..
3
4
5
6 ..
Микроконтроллеры MSP430. Руководство пользователя - часть 5
Раздел 14
Периферийный интерфейс USART, режим SPI
Универсальный синхронно/асинхронный приемопередающий (USART) периферийный
интерфейс поддерживает два последовательных режима в одном аппаратном модуле.
Этот раздел описывает работу синхронного периферийного интерфейса или режима
SPI. USART0 реализован в устройствах MSP430x12xx, MSP430x13xx и MSP430x15x. В
дополнение к USART0, в устройствах MSP430x14x и MSP430x16x реализован второй
идентичный USART модуль – USART1.
14.1 Введение в USART: режим SPI
В синхронном режиме USART подключает MSP430 к внешней системе через три или
четыре вывода: SIMO, SOMI, UCLK и STE. Режим SPI выбирается, когда бит SYNC
установлен, а бит I2C очищен.
Режим SPI имеет следующие возможности:
- 7-ми или 8-разрядные данные
- Работа SPI с 3-мя или 4-мя выводами
- Режимы ведущий или ведомый
- Независимые сдвиговые регистры передачи и приема
- Раздельные буферные регистры передачи и приема
- Выбираемая полярность UCLK и управление фазой
- Программируемая частота UCLK в режиме ведущего
- Независимая возможность прерывания для приема и передачи
На рис.14-1 показан USART, сконфигурированный в режиме SPI.

Рис.14-1. Блок-схема USART в режиме SPI
14.2 Функционирование USART: режим SPI
В синхронном режиме последовательные данные передаются и принимаются множеством
устройств с использованием общего тактирования, обеспечиваемого ведущим.
Дополнительный вывод STE, управляемый ведущим, необходим для разрешения приема и
передачи данных устройством.
Три или четыре сигнала используются для обмена данными через SPI:
|
SIMO
|
Вход ведомого, выход
ведущего
Режим ведущего: SIMO – линия вывода данных
Режим ведомого: SIMO – линия ввода данных |
|
SOMI
|
Выход ведомого, вход
ведущего
Режим ведущего: SOMI – линия ввода данных
Режим ведомого: SOMI – линия вывода данных |
|
UCLK
|
Тактирование USART SPI
Режим ведущего: UCLK – выход
Режим ведомого: UCLK – вход |
|
STE
|
Разрешение передачи
ведомого. Используется в 4-выводном режиме, когда на одной шине может
быть много ведущих. Не применяется в 3-выводном режиме.
4-х выводной режим ведущего:
Когда STE имеет высокий уровень, SIMO и UCLK работают как обычно.
Когда STE имеет низкий уровень, SIMO и UCLK устанавливаются на
направление ввода.
4-х выводной режим ведомого:
Когда STE имеет высокий уровень, функционирование RX/TX ведомого
отключено и SOMI принудительно устанавливается на направление ввода.
Когда STE имеет низкий уровень, функционирование RX/TX ведомого
разрешено и SOMI работает как обычно. |
14.2.1 Инициализация USART и сброс
USART сбрасывается сигналом PUC или битом SWRST. После PUC бит SWRST
автоматически устанавливается, оставляя USART в состоянии сброса. Когда он
установлен, бит SWRST сбрасывает биты URXIEx, UTXIEx, URXIFGx, OE, FE и
устанавливает флаг UTXIFGx. Бит USPIEx не изменяется битом SWRST. Для работы
USART необходимо очистить SWRST. См. также раздел «Модуль USART, режим I2C» для
USART0, когда он реконфигурируется из режима I2C в режим SPI.
Примечание: Инициализация
и реконфигурирование модуля USART
Для инициализации/реконфигурирования USART необходим следующий процесс:
- Установить SWRST (BIS.B #SWRST,&UxCTL)
- Инициализировать все регистры USART установкой SWRST=1 (включая
UxCTL)
- Включить модуль USART через MEx SFRs (USPIEx)
- Программно очистить SWRST (BIC.B #SWRST,&UxCTL)
- Разрешить прерывания (если необходимо) через IEx SFRs (URXIEx
и/или UTXIEx)
Невыполнение этих действий может привести к непредсказуемому поведению
USART. |
14.2.2 Режим ведущего

Рис.14-2. USART – ведущий, внешнее устройство - ведомое
На рис.14-2 показан USART в качестве мастера в обеих 3-х и 4-х выводных
конфигурациях. USART инициализирует передачу данных, когда данные перемещаются в
буфер передачи данных UxTXBUF. Данные UxTXBUF перемещаются в сдвиговый регистр
TX, когда сдвиговый регистр TX пуст, инициируя передачу данных на SIMO, начиная
со старшего разряда. Данные на SOMI сдвигаются в сдвиговый регистр приема по
противоположному тактовому фронту, начиная со старшего разряда. Когда символ
принят, принятые данные перемещены из сдвигового регистра RX в буфер принятых
данных UxRXBUF, флаг прерывания приема URXIFGx установлен, указывая завершение
операции RX/TX.
Установка флага прерывания передачи UTXIFGx указывает, что данные перемещены из
UxTXBUF в сдвиговый регистр TX и UxTXBUF готов для поступления новых данных. Это
не указывает на завершение операции RX/TX.
Чтобы принимать данные в USART в режиме ведущего, данные должны быть записаны в
UxTXBUF, поскольку операции приема и передачи выполняются одновременно.
4-х выводной режим ведущего SPI
В 4-х выводном режиме ведущего STE используется для предотвращения конфликтов с
другим ведущим. Ведущий функционирует нормально, когда STE имеет высокий
уровень. Когда у STE низкий уровень:
- SIMO и UCLK установлены на ввод и более не управляют шиной
- Установлен бит ошибки FE, что указывает на нарушение целостности связи,
которое будет обработано пользователем
- Сигнал STE низкого уровня не сбрасывает модуль USART. Входной сигнал STE
не используется в 3-х выводном режиме ведущего.
14.2.3 Режим ведомого

Рис.14-3. USART – ведомый, внешнее устройство - ведущее
На рис.14-3 показан USART в качестве ведомого в обеих 3-х и 4-х выводных
конфигурациях. UCLK используется как вход для тактирования SPI и должен
управляться внешним ведущим. Скорость передачи данных определяется этим тактовым
сигналом и не зависит от внутреннего генератора скорости передачи. Данные
записываются в UxTXBUF и перемещаются в сдвиговый регистр TX до старта передачи
UCLK на SOMI. Данные на SIMO сдвигаются в сдвиговый регистр приема по
противоположному фронту UCLK и перемещаются в UxRXBUF, когда принято заданное
количество бит. Когда данные перемещаются из сдвигового регистра RX в UxRXBUF,
устанавливается флаг прерывания URXIFGx, указывая, что данные были приняты. Бит
ошибки переполнения OE устанавливается, когда предыдущие принятые данные не были
прочитаны из UxRXBUF до перемещения новых данных в UxRXBUF.
4-х выводной режим ведомого SPI
В 4-х выводном режиме ведущего STE используется ведомым для разрешения операций
передачи и приема и управляется ведущим SPI. Когда STE имеет низкий уровень,
ведомый работает нормально. Когда у STE высокий уровень:
- Любая выполняющаяся операция приема на SIMO останавливается
- SOMI устанавливается на направление ввода
- Высокий уровень сигнала STE не сбрасывает модуль USART. Входной сигнал
STE не используется в 3-х выводном режиме ведомого.
14.2.4 Включение SPI
Бит включения USPIEx передачи/приема SPI включает или отключает USART в режиме
SPI. Когда USPIEx=0, USART останавливает работу после завершения текущей
передачи или немедленно, если действий не выполнялось. Сигнал PUC или установка
бита SWRST отключают USART немедленно, при этом любая выполняющаяся передача
прерывается.
Разрешение передачи
Когда USPIEx=0, любая последующая запись в UxTXBUF не приводит к передаче.
Данные, записанные в UxTXBUF начнут передаваться, когда USPIEx=1 и активен
источник BRCLK. На рис.14-4 и рис.14-5 показаны диаграммы состояний при
разрешении передачи.

Рис.14-4. Разрешение передачи в режиме ведущего

Рис.14-5. Диаграмма состояний разрешения передачи ведомого
Разрешение приема
Диаграммы состояний разрешения приема SPI показаны на рис.14-6 и рис.14-7. Когда
USPIEx=0, UCLK не сдвигает данные в сдвиговый регистр RX.

Рис.14-6. Диаграмма состояний разрешения приема в режиме ведущего SPI

Рис.14-7. Диаграмма состояний разрешения приема ведомым SPI
14.2.5 Управление последовательным тактированием
Сигнал UCLK на шине SPI обеспечивается ведущим. Когда MM=1, BITCLK
обеспечивается генератором скорости передачи USART на выводе UCLK, как показано
на рис.14-8. Когда MM=0, тактирование USART на выводе UCLK обеспечивается
ведущим, генератор скорости передачи не используется, а значения битов SSELx не
учитываются. Приемник и передатчик SPI работают параллельно и используют
одинаковый источник тактирования для передачи данных.

Рис.14-8. Генератор скорости передачи SPI
16-разрядное значение UxBR0+UxBR1 представляет собой коэффициент деления
источника тактирования USART – BRCLK. Максимальная скорость передачи,
генерируемая в режиме ведущего равна BRCLK/2. Модулятор в генераторе скорости
передачи USART не используется в режиме SPI, рекомендуется устанавливать его
значение равным 000h. Частота UCLK определяется так:
Скорость передачи = BRCLK / UxBR, где UxBR = [UxBR1, UxBR0]
Полярность и фаза последовательного тактирования
Полярность и фаза UCLK раздельно конфигурируются через управляющие биты CKPL и
CKPH модуля USART. Синхронизация для каждого случая показана на рис.14-9.

Рис.14-9. Синхронизация USART SPI
14.2.6 Прерывания SPI
SPI имеет один вектор прерывания для передачи и один вектор прерывания для
приема.
Работа прерывания SPI при передаче
Флаг прерывания UTXIFGx устанавливается передатчиком для указания, что UxTXBUF
готов к приему другого символа. Запрос прерывания генерируется, если также
установлены флаги UTXIEx и GIE. UTXIFGx автоматически сбрасывается, если запрос
прерывания обработан или если символ записан в UxTXBUF.
UTXIFGx устанавливается после PUC или когда SWRST=1. UTXIEx сбрасывается после
PUC или когда SWRST=1. Это показано на рис.14-10.

Рис.14-10. Функционирование прерывания при передаче
Примечание: запись
в UxTXBUF в режиме SPI
Запись данных в UxTXBUF, когда UTXIFGx=0 и USPIEx=1 может привести к
ошибочной передаче данных. |
Работа прерывания SPI при приеме
Флаг прерывания URXIFGx устанавливается каждый раз, когда символ принят и
загружен в UxRXBUF, как показано на рис.14-11 и 14-12. Запрос прерывания
генерируется, если также установлены флаги URXIEx и GIE. URXIFGx и URXIEx
сбрасываются сигналом системного сброса PUC или когда SWRST=1. URXIFGx
сбрасывается автоматически, если ожидаемое прерывание обработано или когда
UxRXBUF прочитан. Это показано на рис.14-11 и рис.14-12.

Рис.14-11. Функционирование прерывания при приеме

Рис.14-12. Диаграмма состояний прерывания при приеме
Периферийный интерфейс USART, режим SPI
14.3 Регистры USART: режим SPI
Регистры USART, показанные в таблице 14-1 и таблице 14-2, структурированы
побайтно, поэтому доступ к ним необходимо выполнять с помощью команд работы с
байтами.
Таблица 14-1. Регистры управления и статуса USART0
| Регистр |
Краткое
обозначение |
Тип
регистра |
Адрес |
Исходное
состояние |
| Регистр
управления USART |
U0CTL |
Чтение/запись |
070h |
001h после PUC |
| Регистр
управления передачей |
U0TCTL |
Чтение/запись |
071h |
001h после PUC |
| Регистр
управления приемом |
U0RCTL |
Чтение/запись |
072h |
000h после PUC |
| Регистр
управления модуляцией |
U0MCTL |
Чтение/запись |
073h |
Не изменяется |
| Регистр 0
управления скоростью передачи |
U0BR0 |
Чтение/запись |
074h |
Не изменяется |
| Регистр 1
управления скоростью передачи |
U0BR1 |
Чтение/запись |
075h |
Не изменяется |
| Регистр
буфера приема |
U0RXBUF |
Чтение |
076h |
Не изменяется |
| Регистр
буфера передачи |
U0TXBUF |
Чтение/запись |
077h |
Не изменяется |
| Регистр 1
включения модуля SFR* |
ME1 |
Чтение/запись |
004h |
000h после PUC |
| Регистр 1
разрешения прерывания SFR* |
IE1 |
Чтение/запись |
000h |
000h после PUC |
| Регистр 1
флага прерывания SFR* |
IFG1 |
Чтение/запись |
002h |
082h после PUC |
* Не применимо к устройствам MSP430x12xx. См. описания регистров для выяснения
расположения регистров и бит в этих устройствах.
Таблица 14-2. Регистры управления и статуса USART1
| Регистр |
Краткое
обозначение |
Тип
регистра |
Адрес |
Исходное
состояние |
| Регистр
управления USART |
U1CTL |
Чтение/запись |
078h |
001h после PUC |
| Регистр
управления передачей |
U1TCTL |
Чтение/запись |
079h |
001h после PUC |
| Регистр
управления приемом |
U1RCTL |
Чтение/запись |
07Ah |
000h после PUC |
| Регистр
управления модуляцией |
U1MCTL |
Чтение/запись |
07Bh |
Не изменяется |
| Регистр 0
управления скоростью передачи |
U1BR0 |
Чтение/запись |
07Ch |
Не изменяется |
| Регистр 1
управления скоростью передачи |
U1BR1 |
Чтение/запись |
07Dh |
Не изменяется |
| Регистр
буфера приема |
U1RXBUF |
Чтение |
07Eh |
Не изменяется |
| Регистр
буфера передачи |
U1TXBUF |
Чтение/запись |
07Fh |
Не изменяется |
| Регистр 2
включения модуля SFR |
ME2 |
Чтение/запись |
005h |
000h после PUC |
| Регистр 2
разрешения прерывания SFR |
IE2 |
Чтение/запись |
001h |
000h после PUC |
| Регистр 2
флага прерывания SFR |
IFG2 |
Чтение/запись |
003h |
020h после PUC |
Примечание: Изменение
битов SFR
Чтобы избежать изменения управляющих битов другими модулями,
рекомендуется устанавливать или очищать биты IEx и IFGx с помощью команд
BIS.B или BIC.B вместо команд MOV.B или CLR.B. |
UxCTL, регистр управления USART
Не исполь
зуется |
Не исполь
зуется |
I2C* |
CHAR |
LISTEN |
SYNC |
MM |
SWRST |
| rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-1 |
| Не используется |
Биты
7-6 |
Не используются |
| I2C* |
Бит 5 |
Включение режима I2C.
Этот бит позволяет выбрать режим I2C или SPI, когда SYNC=1.0 Режим SPI
1 Режим I2C
|
| CHAR |
Бит 4 |
Длина символа0 7-разрядные данные
1 8-разрядные данные
|
| LISTEN |
Бит 3 |
Включение
прослушивания. Бит LISTEN включает режим обратной петли.0 Отключен
1 Включен. Сигнал передачи внутренне подключается назад к приемнику
|
| SYNC |
Бит 2 |
Включение синхронного
режима0 Режим UART
1 Режим SPI
|
| MM |
Бит 1 |
Режим ведущего0 USART ведомый
1 USART ведущий
|
| SWRST |
Бит 0 |
Включение программного
сброса0 Отключен. Сброс USART исключен из работы
1 Разрешен. Логика USART удерживается в состоянии сброса
|
*Применимо к USART0 только в устройствах MSP430x15x и MSP430x16x.
UxTCTL, регистр управления передачей USART
| CKPH |
CKPL |
SSELx |
Не исполь
зуется |
Не исполь
зуется |
STC |
TXEPT |
| rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-1 |
| CKPH |
Бит 7 |
Выбор фазы
тактирования. Управляет фазой UCLK.0 Обычная схема тактирования UCLK
1 Сигнал UCLK отстает на один полупериод
|
| CKPL |
Бит 6 |
Выбор полярности
тактового сигнала.0 Неактивный уровень низкий;
вывод данных происходит по нарастающему фронту UCLK;
входные данные защелкиваются по спаду UCLK.
1 Неактивный уровень высокий;
вывод данных происходит по спаду UCLK;
входные данные защелкиваются по нарастающему фронту UCLK.
|
| SSELx |
Биты 5-4 |
Выбор источника. Эти
биты выбирают источник тактирования для BRCLK00 Внешний UCLK (действует только в режиме ведомого)
01 ACLK (справедливо только для режима ведущего)
10 SMCLK (справедливо только для режима ведущего)
11 SMCLK (справедливо только для режима ведущего)
|
| Не используется |
Биты
2-3 |
Не используется |
| STC |
Бит 1 |
Управление передачей
ведомого.0 4-х выводной режим SPI: STE включен
1 3-х выводной режим SPI: STE выключен
|
| TXEPT |
Бит 0 |
Флаг опустошения
передатчика. Флаг TXEPT не используется в режиме ведомого.0 Передача активна и/или в UxTXBUF находятся данные
1 UxTXBUF и сдвиговый регистр TX пусты
|
UxRCTL, регистр управления приемом USART
| FE |
Не исполь
зуется |
OE |
Не исполь
зуется |
Не исполь
зуется |
Не исполь
зуется |
Не исполь
зуется |
Не исполь
зуется |
| rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
| FE |
Бит 7 |
Флаг ошибки фрэйма.
Этот бит указывает на конфликт шины, когда MM=1 и STC=0. FE не
используется в режиме ведомого.0 Конфликт не обнаружен
1 На STC появился отрицательный фронт, указывая на конфликт при обращении к шине
|
| Не используется |
Бит 6 |
Не используется |
| OE |
Бит 5 |
Флаг ошибки
переполнения. Этот бит устанавливается, когда символ перемещен в UxRXBUF
до завершения чтения предыдущего символа. OE автоматически сбрасывается,
когда UxRXBUF прочитан, когда SWRST=1, а также может быть сброшен
программно.0 Нет ошибки
1 Произошла ошибка переполнения
|
| Не используется |
Биты
4-0 |
Не используется |
UxBR0, регистр 0 управления скоростью передачи USART
UxBR1, регистр 1 управления скоростью передачи USART
| 215 |
214 |
213 |
212 |
211 |
210 |
29 |
28 |
| UxBRx |
Биты
7-0 |
Генератор скорости
передачи использует содержимое {UxBR1+UxBR0} для установки скорости
передачи. Наименьший коэффициент деления равен двум. |
UxMCTL, регистр управления модуляцией USART
| UxMCTLx |
Биты 7-0 |
Регистр управления
модуляцией не используется в режиме SPI и должен быть установлен на
000h. |
UxRXBUF, регистр буфера приема USART
| UxRXBUFx |
Биты 7-0 |
Буфер принятых данных
доступен пользователю и содержит последний принятый из сдвигового
регистра приема символ. Чтение UxRXBUF сбрасывает бит OE и флаг URXIFGx.
В режиме 7-разрядных данных, UxRXBUF выравнивается по младшему разряду,
а старший разряд всегда сбрасывается. |
UxTXBUF, регистр буфера передачи USART
| UxTXBUFx |
Биты 7-0 |
Буфер передаваемых
данных доступен пользователю и содержит текущие передаваемые данные.
Когда используется длина символа в 7 бит, данные необходимо выровнять по
старшему разряду перед перемещением их в UxTXBUF. Данные передаются
начиная со старшего разряда. Запись в UxTXBUF очищает UTXIFGx. |
ME1, регистр 1 включения модуля
| |
Бит 7 |
Эти биты могут
использоваться другими модулями. См. справочные данные конкретного
устройства. |
| USPIE0* |
Бит 6 |
Включение USART0 SPI.
Этот бит включает режим SPI для USART0.0 Модуль выключен
1 Модуль включен
|
| |
Биты 5-0 |
Эти биты могут
использоваться другими модулями. См. справочные данные конкретного
устройства. |
* Не используется в устройствах MSP430x12xx. См. ME2 для битов включения модуля
USART0 MSP430x12xx.
ME2, регистр 2 включения модуля
| |
Биты
7-5 |
Эти биты могут
использоваться другими модулями. См. справочные данные конкретного
устройства. |
| USPIE1 |
Бит 4 |
Включение USART1 SPI.
Этот бит включает режим SPI для USART1.0 Модуль выключен
1 Модуль включен
|
| |
Биты
3-1 |
Эти биты могут
использоваться другими модулями. См. справочные данные конкретного
устройства. |
| USPIE0** |
Бит 0 |
Включение USART0 SPI.
Этот бит включает режим SPI для USART0.0 Модуль выключен
1 Модуль включен
|
** Только устройства MSP430x12xx
IE1, регистр 1 разрешения прерываний
| UTXIE0* |
Бит 7 |
Разрешение прерывания
при передаче USART0. Этот бит разрешает прерывание UTXIFG0.0 Прерывание не разрешено
1 Прерывание разрешено
|
| URXIE0* |
Бит 6 |
Разрешение прерывания
при приеме USART0. Этот бит разрешает прерывание URXIFG0.0 Прерывание не разрешено
1 Прерывание разрешено
|
| |
Биты 5-0 |
Эти биты могут быть
использованы другими модулями. См. справочные данные конкретного
устройства. |
* Не используется в устройствах MSP430x12xx. См. IE2 для битов разрешения
прерывания USART0 MSP430x12xx.
IE2, регистр 2 разрешения прерывания
| UTXIE1 |
URXIE1 |
|
|
UTXIE0** |
URXIE0** |
|
|
| |
Биты
7-6 |
Эти биты могут
использоваться другими модулями. См. справочные данные конкретного
устройства. |
| UTXIE1 |
Бит 5 |
Разрешение прерывания
при передаче USART1. Этот бит разрешает прерывание UTXIFG1.0 Прерывание не разрешено
1 Прерывание разрешено
|
| URXIE1 |
Бит 4 |
Разрешение прерывания
при приеме USART1. Этот бит разрешает прерывание URXIFG1.0 Прерывание не разрешено
1 Прерывание разрешено
|
| |
Биты
3-2 |
Эти биты могут
использоваться другими модулями. См. справочные данные конкретного
устройства. |
| UTXIE0** |
Бит 1 |
Разрешение прерывания
при передаче USART0. Этот бит разрешает прерывание UTXIFG0.0 Прерывание не разрешено
1 Прерывание разрешено
|
| URXIE0** |
Бит 0 |
Разрешение прерывания
при приеме USART0. Этот бит разрешает прерывание URXIFG0.0 Прерывание не разрешено
1 Прерывание разрешено
|
** Только в устройствах MSP430x12xx
IFG1, регистр 1 флагов прерываний
| UTXIFG0* |
Бит 7 |
Флаг прерывания при
передаче USART0. UTXIFG0 устанавливается, когда U0TXBUF пуст.0 Прерывание не ожидается
1 Прерывание ожидается
|
| URXIFG0* |
Бит 6 |
Флаг прерывания при
приеме USART0. URXIFG0 устанавливается, когда в U0TXBUF принят полный
символ.0 Прерывание не ожидается
1 Прерывание ожидается
|
| |
Биты 5-0 |
Эти биты могут быть
использованы другими модулями. См. справочные данные конкретного
устройства. |
* Не используется в устройствах MSP430x12xx. См. IFG2 для битов флагов
прерывания USART0 MSP430x12xx.
IFG2, регистр 2 флагов прерываний
| |
|
UTXIFG1 |
URXIFG1 |
|
|
UTXIFG0** |
URXIFG0** |
| |
Биты 7-6 |
Эти биты могут
использоваться другими модулями. См. справочные данные конкретного
устройства. |
| UTXIFG1 |
Бит 5 |
Флаг прерывания при
передаче USART1. UTXIFG1 устанавливается, когда U1TXBUF пуст.0 Прерывание не ожидается
1 Прерывание ожидается
|
| URXIFG1 |
Бит 4 |
Флаг прерывания при
приеме USART1. URXIFG1 устанавливается, когда в U1RXBUF принят полный
символ.0 Прерывание не ожидается
1 Прерывание ожидается
|
| |
Биты
3-2 |
Эти биты могут
использоваться другими модулями. См. справочные данные конкретного
устройства. |
| UTXIFG0** |
Бит 1 |
Флаг прерывания при
передаче USART0. UTXIFG0 устанавливается, когда U0TXBUF пуст.0 Прерывание не ожидается
1 Прерывание ожидается
|
| URXIFG0** |
Бит 0 |
Флаг прерывания при
приеме USART0. URXIFG0 устанавливается, когда в U0RXBUF принят полный
символ.0 Прерывание не ожидается
1 Прерывание ожидается
|
Раздел 15
Периферийный интерфейс USART, режим I2C
Универсальный синхронно/асинхронный приемопередающий (USART) периферийный
интерфейс поддерживает связь по I2C в модулях USART0 устройств
MSP430x15x и MSP430x16x. Этот раздел описывает режим I2C.
15.1 Введение в модуль I2C
Модуль управления взаимообменом между интегральными схемами (I2C)
обеспечивает интерфейс между MSP430 и I2C-совместимыми устройствами
через последовательную двухпроводную шину I2C. Внешние компоненты,
подключенные к шине I2C последовательно передают и принимают
последовательные данные в/из USART через 2-х проводной I2C-интерфейс.
Модуль I2C имеет следующие возможности:
- Соответствует спецификации I2C v2.1 Philips Semiconductor
- Побитный/побайтный формат передачи
- 7-разрядный и 10-разрядный режимы адресации устройств
- Общий вызов
- Старт/рестарт/стоп
- Режим приемника передатчик/ведущий со многими ведущими
- Режим передатчика приемник/ведомый со многими ведущими
- Комбинированный режим ведущего передача/прием и прием/передача
- Поддерживаются стандартный режим до 100 кбод и быстрый режим до 400
кбод
- Встроенный FIFO для буферирования чтения и записи
- Программируемая генерация тактовых импульсов
- 16-разрядный доступ к данным для увеличения пропускной способности шины
- Разработан с учетом пониженного энергопотребления
- Два триггера DMA
- Расширенные возможности прерываний
- Реализован только в USART0
На рис.15-1 показана блок-схема модуля I2C.

Рис.15-1. Блок-схема USART: режим I2C
15.2 Функционирование модуля I2C
Модуль I2C поддерживает любые ведущие и ведомые устройства,
совместимые с I2C. На рис.15-2 показан пример шины I2C.
Каждое устройство обладает уникальным адресом и может работать и как передатчик
и как приемник. Устройство, подключенное к шине I2C, во время
передачи данных может рассматриваться как ведущее или ведомое. Ведущий
инициирует передачу данных и генерирует тактовый сигнал SCL. Любое устройство,
адресованное ведущим, рассматривается как ведомое.

Рис.15-2. Схема подключений на шине I2C
При обмене данными на I2C используется вывод последовательных данных
(SDA) и вывод последовательного тактирования (SCK). Оба вывода SDA и SCL
являются двунаправленными и должны подключаться к положительному источнику
напряжения через нагрузочные («подтягивающие») резисторы.
Примечание: Уровни
SDA и SCL
Уровни напряжения на выводах SDA и SCL не должны быть выше уровня VCC
микроконтроллера MSP430. |
15.2.1 Последовательные данные I2C
При передаче каждого бита ведущим устройством генерируется один тактовый
импульс. Модуль I2C работает с данными, организованными побайтно.
Сначала перемещается старший значащий разряд, как показано на рис.15-3.
Первый, после условия «СТАРТ», байт состоит из 7-разрядного адреса ведомого и
бита R/nonW. Когда R/nonW=0, ведущий передает данные ведомому. Когда R/nonW=1,
ведущее устройство принимает данные от ведомого. Бит ACK посылается приемником
после каждого байта на 9-ом такте SCL.

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

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

Рис.15-5. Условия «СТАРТ» и «СТОП» модуля I2C
15.2.3 Режимы адресации I2C
Модуль I2C поддерживает 7-разрядный и 10-разрядный режимы адресации.
7-разрядная адресация
В 7-разрядном формате адресации, показанном на рис.15-6, первый байт – это
7-разрядный адрес ведомого и бит R/nonW. Бит ACK посылается приемником после
каждого байта.

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

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

Рис.15-8. Формат адресации модуля I2C с повторным условием «СТАРТ»
15.2.4 Режимы работы модуля I2C
Модуль I2C работает в режимах «ведущий передатчик», «ведущий
приемник», «ведомый передатчик» или «ведомый приемник».
Режим ведущего
В режиме ведущего выполнение передачи и приема управляется с помощью битов I2CRM,
I2CSTT и I2CSTP, как описано в таблице 15-1. Режим
ведущего приемника вводится установкой I2CTRX=0 после передачи
адресного байта ведомого и установленного бита R/nonW. Режимы ведущего
передатчика и ведущего приемника показаны на рис.15-9 и рис.15-10.
SCL удерживается в низком состоянии, когда необходимо вмешательство ЦПУ после
передачи байта.
Таблица 15-1. Функционирование ведущего
| I2CRM |
I2CSTP |
I2CSTT |
Условие или активность
шины |
| X |
0 |
0 |
Модуль I2C
в режиме ведущего, но свободен. Условия «старт» и «стоп» не
генерируются. |
| 0 |
0 |
1 |
Активность
инициируется установкой I2CSTT. I2CNDAT используется для установки длины
передачи. Условие «стоп» автоматически не генерируется после перемещения
байт, количество которых задано в I2CNDAT. Программное обеспечение
должно установить I2CSTP для генерации условия «стоп» в конце передачи. |
| 0 |
1 |
1 |
I2CNDAT
используется для установки длины передачи. Установкой I2CSTT
инициируется активность. Условие «стоп» автоматически генерируется после
передачи байт, количество которых задано I2CNDAT. |
| 1 |
0 |
1 |
I2CNDAT не
используется для установки длины передачи. Длиной передачи должно
управлять программное обеспечение. Установка бита I2CSTT инициирует
активность. Для инициирования условия «стоп» или останова активности
программное обеспечение должно установить бит I2CSTP. Этот режим
используется, если необходимо передать более 256 байт. |
| 0 |
1 |
0 |
Установка
бита I2CSTP генерирует условие «стоп» на шине после отправки количества
байт, заданного I2CNDAT или немедленно, если уже передано количество
байт, заданное I2CNDAT. |
| 1 |
1 |
0 |
Установка
бита I2CSTP генерирует условие «стоп» на шине после завершения текущей
передачи или немедленно, если текущая передача не активна. |
| 1 |
1 |
1 |
Зарезервировано, шина неактивна. |
Диаграмма состояний I2C

Рис.15-9. Режим ведущего передатчика, I2CWORD = 1

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

Рис.15-11. Процедура арбитража между двумя ведущими передатчиками
Если выполняется процедура арбитража, когда на SDA повторяются условия «СТАРТ»
или «СТОП», ведущие передатчики, вовлеченные в арбитраж, должны послать
повторные условия «СТАРТ» или «СТОП» в том же самом месте в формате фрэйма.
Арбитраж не разрешается между:
- Повторным условием «СТАРТ» и битом данных
- Условием «СТОП» и битом данных
- Повторным условием «СТАРТ» и условием «СТОП»
Режим ведомого
В режиме ведомого операции передачи и приема управляются автоматически модулем
I2C. Режимы ведомого передатчика и ведомого приемника показаны на рис.15-12 и
рис.15-13.
В режиме ведомого приемника биты последовательных данных принимаются на SDA и
сдвигаются по тактовым импульсам, генерируемым ведущим устройством. Ведомое
устройство не генерирует тактовый сигнал, но может удерживать линию SCL в
состоянии низкого уровня, если после приема байта необходимо вмешательство ЦПУ.
В режим ведомого передатчика можно войти только из режима ведомого приемника.
Вход в режим ведомого передатчика происходит, если байт адреса ведомого,
переданный ведущим, является таким же адресом, как и его собственный и был
послан установленный бит R/W, указывая на запрос отправки данных ведущему.
Ведомый передатчик сдвигает последовательные данные из устройства на SDA по
импульсам тактирования, генерируемым ведущим устройством. Ведомое устройство не
генерирует тактовых сигналов, но может удерживать линию SCL в состоянии низкого
уровня, если после передачи байта необходимо вмешательство ЦПУ.

Рис.15-12. Ведомый передатчик, I2CWORD=1

Рис.15-13. Ведомый приемник, I2CWORD=1
15.2.5 Регистр данных I2CDR шины I2C
Регистр I2CDR может быть доступен как 8-разрядный или 16-разрядный регистр, что
определяется битом I2CWORD. Функции регистра I2CDR описаны в таблице 15-2.
Таблица 15-2. Функции регистра I2CDR
| I2CWORD |
I2CTRX |
Функция I2CDR |
| 0 |
1 |
Режим передачи байта: Используется только младший байт. Байт дважды
буферизируется. Если новый байт записан до передачи предыдущего байта,
новый байт ожидает во временном буфере до момента защелкивания в младшем
байте регистра I2CDR. Когда I2CDR доступен, устанавливается бит
TXRDYIFG. |
| 0 |
0 |
Режим приема байта: Используется только младший байт. Байт дважды
буферизируется. Если новый байт принят до прочтения предыдущего байта,
новый байт ожидает во временном буфере до момента защелкивания в младшем
байте регистра I2CDR. Когда I2CDR готов для чтения, устанавливается бит
RXRDYIFG. |
| 1 |
1 |
Режим передачи слова: Первым передается младший байт слова, затем
старший байт. Регистр дважды буферизируется. Если новое слово записано
до передачи предыдущего слова, новое слово ожидает во временном буфере
до момента защелкивания в регистре I2CDR. Когда I2CDR доступен,
устанавливается бит TXRDYIFG. Если последние передаваемые данные состоят
только из одного байта, старший байт должен содержать нуль. Когда I2CDR
готов к доступу, устанавливается бит TXRDYIFG. |
| 1 |
0 |
Режим приема слова: Первым принимается младший байт слова, затем старший
байт. Регистр дважды буферизируется. Если новое слово принято до
прочтения предыдущего слова, новое слово ожидает во временном буфере до
момента защелкивания в регистре I2CDR. Если последним был принят один
байт, тогда старший байт содержит нуль, устанавливается бит I2CSDB.
Когда I2CDR готов к доступу, устанавливается бит RXRDYIFG. |
Опустошение при передаче
В режиме ведущего опустошение происходит, когда сдвиговый регистр передачи и
буфер передачи пусты, а I2CNDAT > 0. В режиме ведомого опустошение происходит,
когда сдвиговый регистр передачи и буфер передачи пусты, а внешний ведущий I2C
все еще запрашивает данные. Когда происходит опустошение при передаче,
устанавливается бит I2CTXUDF. Запись данных в регистр I2CDR или сброс бита I2CEN
сбрасывает I2CTXUDF. I2CTXUDF используется только в режиме передачи.
Переполнение при приеме
Переполнение при приеме происходит, когда сдвиговый регистр приема и буфер
приема заполнены. Когда происходит переполнение при приеме, устанавливается бит
I2CRXOVR. Потери данных не происходит, поскольку в этом случае линия SCL
удерживается в состоянии низкого уровня, которое приостанавливает дальнейшую
активность на шине. Чтение регистра I2CDR или сброс бита I2CEN сбрасывает бит
I2CRXOVR. Бит I2CRXOVR используется только в режиме приема.
15.2.6 Генерация тактовых сигналов I2C и синхронизация
Модуль I2C работает с источником тактовой частоты, выбираемым битами
I2CSSELx. Прескалер I2CPSC и регистры I2CSCLH и I2CSCLL определяют частоту и
скважность тактового сигнала SCL для режима ведомого, как показано на рис.15-14.
Источник тактовых импульсов для модуля I2C должен иметь частоту, по
крайней мере в 10 раз больше частоты SCL в обоих режимах ведущего и ведомого.

Рис.15-14. Генерация сигналов на линии SCL модуля I2C
Во время процедуры арбитража тактовые импульсы от различных ведущих должны быть
синхронизированы. Устройство, первым генерирующее период низкого уровня на SCL
берет верх над другими устройствами, вынуждая их запустить собственные периоды
низкого уровня. Тогда SCL удерживается в состоянии низкого уровня устройством с
самым долгим периодом низкого уровня. Другие устройства должны ожидать, пока
линия SCL будет освобождена перед стартом своих периодов высокого уровня. Рис.
15-15 иллюстрирует тактовую синхронизацию.
Медленный ведомый может установить на SCL низкий уровень, чтобы замедлить
быстрого ведомого. Когда это происходит, все другие устройства должны войти в
состояние ожидания. Это позволяет медленному ведомому замедлять быстрого
ведущего.

Рис.15-15. Синхронизация двух тактовых генераторов I2C во время
арбитража
15.2.7 Использование модуля I2C в режимах пониженного
энергопотребления
Модуль I2C может использоваться в MSP430 в режимах пониженного
энергопотребления. Когда для модуля I2C задействован внутренний
источник тактирования, модуль работает нормально независимо от режима работы
MSP430.
В режиме ведомого, а также когда внутренний источник тактирования не
задействован, модуль I2C может автоматически обнаруживать стартовый
бит для пробуждения ЦПУ. Для включения этой возможности необходимо установить
биты STTIE и GIE, чтобы флаг STTIFG мог вызвать прерывание ЦПУ. Когда модуль I2C
обнаруживает стартовое условие, устанавливается флаг STTIFG, а линия SCL
удерживается модулем в состоянии низкого уровня, останавливая дальнейшую
активность на шине. Процедура обработки прерывания должна включить внутренний
источник тактирования для модуля I2C, чтобы освободить линию SCL и
дать возможность продолжить нормальную работу на шине.
15.2.8 Использование модуля I2C с контроллером DMA
Модуль I2C обеспечивает два источника запуска для контроллера DMA.
Флаг RXRDYIFG может запустить DMA перенос, когда получены новые данные I2C,
флаг TXRDYIFG может запустить DMA перенос, когда модуль I2C нуждается
в очередной передаче данных.
Биты TXDMAEN и RXDMAEN разрешают или запрещают использование контроллера DMA с
модулем I2C. Когда RXDMAEN=1, контроллер DMA может использоваться для
переноса данных из модуля I2C после приема данных модулем I2C. Когда
RXDMAEN=1, RXDYIE автоматически очищается.
Когда TXDMAEN=1, контроллер DMA может быть использован для переноса данных в
модуль I2C для последующей передачи. Когда TXDMAEN=1, TXRDYIE
автоматически очищается.
См. раздел «Контроллер
DMA» для выяснения подробностей функционирования контроллера DMA.
15.2.9 Конфигурирование USART для функционирования I2C
Контроллер I2C является частью периферии USART. Определение
индивидуального бита при использовании USART0 в режиме I2C отличается
от режимов SPI или UART. По умолчанию в регистре U0CTL значения для режима UART
и он содержит следующие биты:
Для работы в режимах SPI или I2C необходимо установить бит SYNC.
Установка бита SYNC при SWRST=1 выбирает режим SPI. Установка бита I2C,
когда SYNC=1 приводит к выбору режима I2C. Биты SYNC и I2C
могут быть установлены вместе в одной команде для выбора режима I2C в
модуле USART0.
После инициализации модуля, модуль I2C готов для выполнения операций
передачи и приема. Очистка I2CEN прекращает работу модуля.
Примечание: Переконфигурирование
модуля I2C для работы UART или SPI
Необходим следующий процесс переконфигурирования USART:
- Очистка бита I2C (BIC.B #I2C,&U0CTL)
- Очистка U0CTL и установка бита SWRST (MOV.B #SWRST,&U0CTL)
- Инициализация всех регистров USART установкой SWRST = 1 (включая
UxCTL)
- Включение модуля USART с помощью MEx SFRs (URXEx и/или UTXEx)
- Очистка SWRST программным обеспечением (BIC.B #SWRST,&UxCTL)
- Разрешение прерываний (если необходимо) с помощью IEx SFRs
(URXIEx и/или UTXIEx)
Нарушение выполнения этого процесса может привести к непредсказуемому
поведению USART. |
Примечание: Переконфигурирование
модуля I2C для других условий I2C
Необходим следующий процесс переконфигурирования I2C:
- Очистка бита I2CEN (BIC.B #I2CEN,&U0CTL)
- Переконфигурирование модуля I2C при I2CEN=0
- Установка I2CEN программным обеспечением (BIS.B #I2CEN,&U0CTL)
Нарушение выполнения этого процесса может привести к непредсказуемому
поведению USART. |
Сброс модуля I2C
После PUC модуль USART сконфигурирован в режиме UART при SWRST=1. В режиме I2C
установка I2CEN=0 приведет к следующему результату:
- Связь по I2C остановится
- Выводы SDA и SCL перейдут в «третье» состояние
- В I2CTCTL очистятся биты 3-0, биты 7-4 останутся неизменными
- Регистры I2CDCTL и I2CDR очистятся
- Сдвиговые регистры передачи и приема очистятся
- Содержимое регистров U0CTL, I2CNDAT, I2CPSC, I2CSCLL и I2CSCLH не
изменится
- Содержимое регистров I2COA, I2CSA, I2CIE, I2CIFG и I2CIV не изменится
15.2.10 Прерывания I2C
Модуль I2C имеет один вектор прерывания для восьми флагов прерывания.
Каждый флаг прерывания имеет собственный бит разрешения прерывания. Когда
прерывание разрешено и установлен бит GIE, флаг прерывания будет генерировать
запрос прерывания. Следующие события вызывают I2C прерывание:
Флаг
прерывания |
Условие прерывания |
| ALIFG |
Потеря арбитража.
Арбитраж может быть потерян, когда два или более передатчиков начинают
передачу одновременно или когда программное обеспечение пытается
инициировать I2C передачу при I2CBB=1. Флаг ALIFG
устанавливается, когда арбитраж потерян. Когда ALIFG установлен, биты
MST и I2CSTP очищаются и контроллер I2C становится ведомым
приемником. |
| NACKIFG |
Прерывание при
отсутствии подтверждения. Этот флаг устанавливается, когда ведущий не
получил от ведомого подтверждение. NACKIFG используется только в режиме
ведущего. |
| OAIFG |
Прерывание собственного
адреса. Флаг прерывания OAIFG устанавливается, когда другой ведущий
адресует I2C модуль. OAIFG используется только в режиме
ведомого. |
| ARDYIFG |
Прерывание «регистр
доступен». Этот флаг устанавливается, когда ранее запрограммированный
перенос завершен, а биты статуса обновлены. Это прерывание используется
для уведомления ЦПУ о том, что регистры I2C готовы к доступу. |
| RXRDYIFG |
Прерывание/статус
готовности приема. Этот флаг устанавливается, когда модуль I2C
принял новые данные. RXRDYIFG автоматически очищается, когда I2CDR
прочитан и буфер приема пуст. Переполнение приемника показывается, если
бит I2CRXOVR=1. RXRDYIFG используется только в режиме приема. |
| TXRDYIFG |
Прерывание/статус
готовности передачи. Регистр I2CDR готов к новой передаче данных, когда
I2CNDAT>0 или I2CRM=1 (режим передачи ведущего) или же когда другой
ведущий запрашивает данные (режим передачи ведомого). TXRDYIFG
автоматически очищается, когда I2CDR и буфер передачи полны. Опустошение
передачи показывается, если I2CTXUDF=1. Не используется в режиме приема. |
| GCIFG |
Прерывание общего
вызова. Этот флаг устанавливается, когда модуль I2C принял адрес общего
вызова (00h). GCIFG используется только в режим приема. |
| STTIFG |
Прерывание при
обнаружении условия старта. Этот флаг устанавливается, когда модуль I2C
обнаружил условие старта в режиме ведомого. Это позволяет MSP430
находиться в режиме пониженного энергопотребления с неактивным
источником тактирования I2C до инициирования связи ведущим по
I2C. STTIFG используется только в режиме ведомого. |
Генератор вектора прерывания I2CIV
Флаги прерывания I2C разделены по приоритетам и объединены в источник
одного вектора прерывания. Регистр вектора прерывания I2CIV используется для
выяснения, какой флаг запросил прерывание. Разрешенное прерывание с наивысшим
приоритетом генерирует число в регистре I2CIV. Это число может быть оценено или
добавлено к программному счетчику для автоматического входа в соответствующую
программную процедуру. Запрещенные I2C прерывания не воздействуют на
содержимое I2CIV.
При любом доступе (чтение или запись) к регистру I2CIV автоматически
сбрасывается флаг ожидающего прерывания с наивысшим приоритетом. Если
устанавливается другой флаг прерывания, после обработки начального прерывания
немедленно генерируется другое прерывание.
Пример программного обеспечения, использующего I2CIV
Приведенный далее пример программного обеспечения показывает рекомендуемое
использование I2CIV. Значение I2CIV добавляется к PC для автоматического
перехода к соответствующей процедуре:
I2C_ISR
ADD &I2CIV, PC ; Добавление смещения к таблице переходов
RETI ; Вектор 0: Нет прерывания
JMP AL IFG_ISR ; Вектор 2: ALIFG
JMP NACKIFG_ISR ; Вектор 4: NACKIFG
JMP OAIFG_ISR ; Вектор 6: OAIFG
JMP ARDYIFG_ISR ; Вектор 8: ARDYIFG
JMP RXRDYIFG_ISR ; Вектор 10: RXRDYIFG
JMP TXRDYIFG_ISR ; Вектор 12: TXRDYIFG
JMP GCIFG_ISR ; Вектор 14: GCIFG
STTIFG_ISR ; Вектор 16
... ; Задача (программный модуль) начинается здесь
RETI ; Возврат
ALIFG_ISR ; Вектор 2
... ; Задача начинается здесь
RETI ; Возврат
NACKIFG_ISR ; Вектор 4
... ; Задача начинается здесь
RETI ; Возврат
OAIFG_ISR ; Вектор 6
... ; Задача начинается здесь
RETI ; Возврат
ARDYIFG_ISR ; Вектор 8
... ; Задача начинается здесь
RETI ; Возврат
RXRDYIFG_ISR ; Вектор 10
... ; Задача начинается здесь
RETI ; Возврат
TXRDYIFG_ISR ; Вектор 12
... ; Задача начинается здесь
RETI ; Возврат
GCIFG_ISR ; Вектор 14
... ; Задача начинается здесь
RETI ; Возврат
15.3 Регистры модуля I2C
Регистры модуля I2C и соответствующие адреса приведены в таблице
15-3.
Таблица 15-3. Регистры I2C
| Регистр |
Краткое
обозначение |
Тип
регистра |
Адрес |
Исходное
состояние |
| Разрешение
прерывания I2C |
I2CIE |
Чтение/запись |
050h |
Сброс с PUC |
| Флаг
прерывания I2C |
I2CIFG |
Чтение/запись |
051h |
Сброс с PUC |
| Подсчет
данных I2C |
I2CNDAT |
Чтение/запись |
052h |
Сброс с PUC |
| Управление
USART |
U0CTL |
Чтение/запись |
070h |
Сброс с PUC |
| Управление
передачей I2C |
I2CTCTL |
Чтение/запись |
071h |
Сброс с PUC |
| Управление
данными I2C |
I2CDCTL |
Только чтение |
072h |
Сброс с PUC |
| Прескалер
I2C |
I2CPSC |
Чтение/запись |
073h |
Сброс с PUC |
| «Высокий»
SCL I2C |
I2CSCLH |
Чтение/запись |
074h |
Сброс с PUC |
| «Низкий»
SCL I2C |
I2CSCLL |
Чтение/запись |
075h |
Сброс с PUC |
| Данные I2C |
I2CDR |
Чтение/запись |
076h |
Сброс с PUC |
|
Собственный адрес I2C |
I2COA |
Чтение/запись |
0118h |
Сброс с PUC |
| Адрес
ведомого I2C |
I2CSA |
Чтение/запись |
011Ah |
Сброс с PUC |
| Вектор
прерываний I2C |
I2CIV |
Только чтение |
011Ch |
Сброс с PUC |
U0CTL, регистр управления USART0 в режиме I2C
| RXDMAEN |
TXDMAEN |
I2C |
XA |
LISTEN |
SYNC |
MST |
I2CEN |
| rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-1 |
| RXDMAEN |
Бит 7 |
Разрешение DMA при
приеме. Этот бит включает контроллер DMA, чтобы переносить данные из
модуля I2C после приема данных модулем I2C. Когда RXDMAEN=1,
RXRDYIE автоматически очищается. 0 Выключен 1 Включен |
| TXDMAEN |
Бит 6 |
Разрешение DMA при
передаче. Этот бит включает контроллер DMA, что может быть использовано
для переноса данных в модуль I2C для передачи. Когда
TXDMAEN=1, TXRDYIE автоматически очищается. 0 Выключен 1 Включен |
| I2C |
Бит 5 |
Включение режима I2C.
Этот бит позволяет выбрать режим I2C или SPI, когда SYNC=1. 0 Режим SPI
1 Режим I2C |
| XA |
Бит 4 |
Расширенная адресация 0
7-разрядная адресация 1 10-разрядная адресация |
| LISTEN |
Бит 3 |
Прослушивание. Этот бит
устанавливает режим обратной петли. Бит LISTEN действителен только когда
MST=1 и I2CTRX=1 (ведущий передатчик). 0 Нормальный режим 1 SDA
внутренне подключается назад к приемнику (обратная петля) |
| SYNC |
Бит 2 |
Включение синхронного
режима 0 Режим UART 1 Режим SPI или I2C |
| MST |
Бит 1 |
Выбор режима
ведущий/ведомый. Этот бит выбирает режим ведомого или ведущего. Бит MST
автоматически очищается при потере арбитража. 0 Режим ведомого 1 Режим
ведущего |
| I2CEN |
Бит 0 |
Включение I2C.
Бит включает или выключает модуль I2C. В исходном состоянии
он установлен, и для UART или SPI функционирует как SWRST. Когда первыми
после PUC устанавливаются биты I2C и SYNC, этот бит
функционирует как I2CEN и автоматически очищается. 0 Работа I2C
запрещена. 1 Работа I2C разрешена. |
I2CTCTL, регистр управления передачей в режиме I2C
| I2CWORD |
I2CRM |
I2CSSELx |
I2CTRX |
I2CSTB |
I2CSTP |
I2CSTT |
| rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
Модифицируется, только когда I2CEN=0
| I2CWORD |
Бит 7 |
Режим слова I2C.
Выбирается режим байта или слова для регистра данных I2C. 0
Режим байта 1 Режим слова |
| I2CRM |
Бит 6 |
Режим повтора I2C
0 I2CNDAT определяет количество переданных байтов 1 Количество
передаваемых байт определяется программным обеспечением. I2CNDAT не
используется. |
| I2CSSELx |
Биты
5-4 |
Выбор источника
тактирования I2C. Когда MST=1 и арбитраж потерян,
автоматически используется внешний сигнал SCL. 00 Нет тактирования –
модуль I2C неактивен 01 ACLK 10 SMCLK 11 SMCLK |
| I2CTRX |
Бит 3 |
Передача I2C.
Этот бит выбирает функцию передачи или приема для контроллера I2C, когда
MST=1. Когда MST=0, бит R/W байта адреса определяет направление данных и
I2CTRX отражает направление вывода SDA. 0 Режим приема. Данные
принимаются на выводе SDA. 1 Режим передачи. Данные передаются на выводе
SDA. |
| I2CSTB |
Бит 2 |
Стартовый байт.
Установка бита I2CSTB при MST=1 инициирует стартовый байт. 0 Нет
действия 1 Отправка условия СТАРТ, стартового байта (03h), но не условия
останова. |
| I2CSTP |
Бит 1 |
Бит стоп. Этот бит
используется для генерации условия СТОП. После условия СТОП бит I2CSTP
автоматически очищается. 0 Нет действия 1 Отправка условия СТОП |
| I2CSTT |
Бит 0 |
Бит старт. Этот бит
используется для генерации условия СТАРТ. После условия СТАРТ бит I2CSTT
автоматически очищается. 0 Нет действия 1 Отправка условия СТАРТ |
I2CDCTL, регистр управления данными I2C
Не исполь
зуется |
Не исполь
зуется |
Не исполь
зуется |
I2C
SCLLOW |
I2XSBD |
I2XTXUDF |
I2CRXOVR |
I2CBB |
| r0 |
r0 |
r0 |
r-0 |
r-0 |
r-0 |
r-0 |
r-0 |
Не исполь
зуется |
Биты
7-5 |
Не используются. Всегда
читаются как 0. |
I2C
SCLLOW |
Бит 4 |
«Низкий» SCL I2C.
Этот бит показывает, что ведомый удерживает линию SCL в низком
состоянии, когда MSP430 – ведущий. Этот бит не используется в режиме
ведомого. 0 SCL не удерживается в состоянии низкого уровня. 1 SCL
удерживается в состоянии низкого уровня. |
| I2CSBD |
Бит 3 |
Один байт данных I2C.
Этот бит показывает, что содержится в регистре приема – слово или байт.
Бит I2CSBD действителен только когда I2CWORD=1. 0 Слово было принято
полностью 1 В I2CDR достоверен только младший байт |
| I2CTXUDF |
Бит 2 |
Опустошение при
передаче I2C 0 Опустошения нет 1 Произошло опустошение при
передаче |
| I2CRXOVR |
Бит 1 |
Переполнение при приеме
I2C. 0 Переполнения при приеме не произошло. 1 Произошло
переполнение при приеме. |
| I2CBB |
Бит 0 |
Бит занятости I2C.
Условие старта устанавливает I2CBB в 1. I2CBB сбрасывается условием стоп
или при I2CEN=0. 0 Не занято 1 Занято |
I2CDR, регистр данных I2C
| Старший байт
данных I2C (передается вторым) |
| rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
Младший
байт данных I2C
(передается первым) |
| rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
| I2CDRx |
Биты
15-0 |
Данные I2C |
I2CNDAT, регистр подсчета переданных байтов I2C
| rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
| I2CNDATx |
Биты
7-0 |
Количество байтов I2C.
Эти биты обеспечивают автоматический подсчет байтов данных. В режиме
слова I2CNDATx должен иметь четное значение.Запись в регистр: Количество байтов
Чтение из регистра, I2CBB=1: Количество байтов, остающихся при передаче
Чтение из регистра, I2CBB=0: Количество байтов, которые были переданы
|
Примечание: Регистр
I2CNDAT
Не изменяйте регистр I2CNDAT, когда I2CBB=1 и I2CRM=0. |
I2CPSC, регистр прескалера тактирования I2C
| rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
Модифицируется, только когда I2CEN=0
| I2CPSCx |
Биты
7-0 |
Прескалер тактирования
I2C. Входная тактовая частота I2C делится содержимым I2CPSCx,
обеспечивая внутреннюю тактовую частоту I2C. Коэффициент
деления равен I2CPSC+1.
000h Деление на 1
001h Деление на 2
.
.
0FFh Деление на 256 |
I2CSCLH, сдвиговый регистр высокого уровня сигналов тактирования I2C
| rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
Модифицируется, только когда I2CEN=0
| I2CSCLHx |
Биты 7-0 |
Сдвиговый регистр
высокого уровня тактовых импульсов I2C. Эти биты определяют
продолжительность высокого уровня сигнала на SCL, когда контроллер I2C
находится в режиме ведущего. Длительность высокого уровня SCL составляет
(I2CSCLH + 2) * I2CPSC.
000h Не используется
001h Не используется
002h Не используется
003h Длительность высокого уровня SCL = 5 * I2CPSC
.
.
0FFh Длительность высокого уровня SCL = 257 * I2CPSC |
I2CSCLL, сдвиговый регистр низкого уровня сигналов тактирования I2C
| rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
Модифицируется, только когда I2CEN=0
| I2CSCLLx |
Биты
7-0 |
Сдвиговый регистр
низкого уровня тактовых импульсов I2C. Эти биты определяют
продолжительность низкого уровня сигнала на SCL, когда контроллер I2C
находится в режиме ведущего. Длительность низкого уровня SCL составляет
(I2CSCLL + 2) * I2CPSC.
000h Не используется
001h Не используется
002h Не используется
003h Длительность низкого уровня SCL = 5 * I2CPSC
.
.
0FFh Длительность низкого уровня SCL = 257 * I2CPSC |
I2COA, регистр собственного адреса I2C в 7-разрядном адресном режиме
| r0 |
r0 |
r0 |
r0 |
r0 |
r0 |
rw-0 |
rw-0 |
| r0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
Модифицируется, только когда I2CEN=0
| I2COAx |
Биты
15-0 |
Собственный адрес I2C.
Регистр I2COA содержит локальный адрес контроллера I2C
MSP430. Регистр I2COA выровнен по правому краю. Старшим битом (MSB)
является 6-ой бит. Биты 15-7 всегда равны 0. |
I2COA, регистр собственного адреса I2C в 10-разрядном адресном режиме
| r0 |
r0 |
r0 |
r0 |
r0 |
r0 |
rw-0 |
rw-0 |
| rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
Модифицируется, только когда I2CEN=0
| I2COAx |
Биты
15-0 |
Собственный адрес I2C.
Регистр I2COA содержит локальный адрес контроллера I2C MSP430. Регистр
I2COA выровнен по правому краю. Старшим битом (MSB) является 9-ый бит.
Биты 15-10 всегда равны 0. |
I2CSA, регистр адреса ведомого I2C в 7-разрядном адресном режиме
| rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
| I2CSAx |
Биты
15-0 |
Адрес ведомого I2C.
Регистр I2CSA содержит адрес внешнего ведомого устройства, которое
адресуется MSP430. Он используется только в режиме ведущего. Регистр
I2CSA выровнен по правому краю. Старшим битом (MSB) является 6-ой бит.
Биты 15-7 всегда равны 0. |
I2CSA, регистр адреса ведомого I2C в 10-разрядном адресном режиме
| r0 |
r0 |
r0 |
r0 |
r0 |
r0 |
rw-0 |
rw-0 |
| rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
rw-0 |
| I2CSAx |
Биты
15-0 |
Адрес ведомого I2C.
Регистр I2CSA содержит адрес внешнего ведомого устройства, которое
адресуется MSP430. Он используется только в режиме ведущего. Регистр
I2CSA выровнен по правому краю. Старшим битом (MSB) является 9-ый бит.
Биты 15-10 всегда равны 0. |
содержание ..
3
4
5
6 ..
|