Периферийный интерфейс 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. Диаграмма состояний прерывания при приеме
|