Файл: Семейство микроконтроллеров MSP430X1XX, руководство пользователя (2004).pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 16.06.2025
Просмотров: 2817
Скачиваний: 1
Раздел XIV. |
Периферийный интерфейс USART, режим SPI |
||||
Ведущий |
SIMO |
SIMO |
Ведомый |
||
Буфер приема UxRXBUF |
Буфер передачи UxTXBUF |
Буфер приема SPI |
|||
Px.x |
STE |
||||
STE |
SS |
||||
Port.x |
|||||
Сдвиговый регистр |
Сдвиговый регистр SOMI |
SOMI Сдвиговый регистр |
|||
приема |
передачи |
данных (DSR) |
|||
MSB |
LSB |
MSB |
LSB |
MSB |
LSB |
UCLK |
SCLK |
||||
MSP430 USART |
Обычный SPI |
||||
Рис. 14-2. USART – ведущий, внешнее устройство – ведомое
Чтобы принимать данные в USART в режиме ведущего, данные должны быть записаны в UxTXBUF, поскольку операции приема и передачи выполняются одновременно.
4-х выводной режим ведущего SPI
В 4-х выводном режиме ведущего STE используется для предотвращения конфликтов с другим ведущим. Ведущий функционирует нормально, когда STE имеет высокий уровень. Когда у STE низкий уровень:
•SIMO и UCLK установлены на ввод и более не управляют шиной
•Установлен бит ошибки FE, что указывает на нарушение целостности связи, которое будет обработано пользователем
Сигнал STE низкого уровня не сбрасывает модуль USART. Входной сигнал STE не используется в 3-х выводном режиме ведущего.
14.2.3. Режим ведомого
На рис. 14-3 показан USART в качестве ведомого в обеих 3-х и 4-х выводных конфигурациях. UCLK используется как вход для тактирования SPI и должен управляться внешним ведущим. Скорость передачи данных определяется этим тактовым сигналом и не зависит от внутреннего генератора скорости передачи. Данные записываются в UxTXBUF и перемещаются в сдвиговый регистр TX до старта передачи UCLK на SOMI. Данные на SIMO сдвигаются в сдвиговый регистр приема по противоположному фронту UCLK и перемещаются в UxRXBUF, когда принято заданное количество бит. Когда данные перемещаются из сдвигового регистра RX в UxRXBUF, устанавливается флаг прерывания URXIFGx, указывая, что данные были приняты. Бит ошибки переполнения OE устанавливается, когда предыдущие принятые данные не были прочитаны из UxRXBUF до перемещения новых данных в UxRXBUF.
Библиотека Компэла |
253 |
|
MSP430x1xxFamily |
|||||||
Ведущий |
SIMO |
SIMO |
Ведомый |
||||
Буфер приема SPI |
Буфер передачи UxTXBUF |
Буфер приема UxRXBUF |
|||||
Px.x |
STE |
||||||
STE |
SS |
||||||
Port.x |
|||||||
Сдвиговый регистр |
SOMI |
SOMI |
Сдвиговый регистр |
Сдвиговый регистр |
|||
данных DSR |
передачи |
приема |
|||||
MSB |
LSB |
MSB |
LSB |
MSB |
LSB |
||
SCLK |
UCLK |
||||||
Обычный SPI |
MSP430 USART |
||||||
Рис. 14-3. USART – ведомый, внешнее устройство – ведущее |
|||||||
4-х выводной режим ведомого SPI
В 4-х выводном режиме ведущего STE используется ведомым для разрешения операций передачи и приема и управляется ведущим SPI. Когда STE имеет низкий уровень, ведомый работает нормально. Когда у STE высокий уровень:
•Любая выполняющаяся операция приема на SIMO останавливается
•SOMI устанавливается на направление ввода
Высокий уровень сигнала STE не сбрасывает модуль USART. Входной сигнал STE не используется в 3-х выводном режиме ведомого.
14.2.4. Включение SPI
Бит включения USPIEx передачи/приема SPI включает или отключает USART в режиме SPI. Когда USPIEx=0, USART останавливает работу после завершения текущей передачи или немедленно, если действий не выполнялось.
USPIEx = 0 |
Данные не записаны |
Не завершено |
|||
в буфер переноса |
|||||
USPIEx = 1 |
Состояние |
USPIEx = 1 |
Условия обработки |
||
Передача |
простоя |
Передача |
|||
запрещена |
(передатчик |
данные |
выполняется |
прерывания |
|
USPIEx = 0 |
включен) |
записаны |
|||
в буфер передачи |
Символ |
||||
SWRST |
USPIEx = 1 |
передан |
|||
PUC |
|||||
USPIEx = 0, последнее |
|||||
содержимое буфера передано |
|||||
Рис. 14-4. Разрешение передачи в режиме ведущего |
|||||
254 |
Библиотека Компэла |
||||
Раздел XIV. |
Периферийный интерфейс USART, режим SPI |
Сигнал PUC или установка бита SWRST отключают USART немедленно, при этом любая выполняющаяся передача прерывается.
Разрешение передачи
Когда USPIEx=0, любая последующая запись в UxTXBUF не приводит к передаче. Данные, записанные в UxTXBUF начнут передаваться, когда USPIEx=1 и активен источник BRCLK. На рис. 14-4 и рис. 14-5 показаны диаграммы состояний при разрешении передачи.
USPIEx = 0 |
Нет тактирования UCLK |
Не завершено |
||||
USPIEx = 1 |
Состояние |
USPIEx = 1 |
Условия обработки |
|||
Передача |
простоя |
Передача |
||||
прерывания |
||||||
запрещена |
(передатчик |
используется |
выполняется |
|||
USPIEx = 0 |
включен) |
внешнее |
Символ |
|||
тактирование |
||||||
SWRST |
USPIEx = 1 |
передан |
||||
PUC |
||||||
USPIEx = 0
Рис. 14-5. Диаграмма состояний разрешения передачи ведомого
Разрешение приема
Диаграммы состояний разрешения приема SPI показаны на рис. 14-6 и рис. 14-7. Когда USPIEx=0, UCLK не сдвигает данные в сдвиговый регистр RX.
USPIEx = 0 |
Данные не записаны |
Не завершено |
|||
в UxTXBUF |
|||||
USPIEx = 1 |
Состояние |
USPIEx = 1 |
Прием |
Условия обработки |
|
Прием |
ожидания |
||||
запрещен |
(приемник |
данные |
полного |
прерывания |
|
символа |
|||||
USPIEx = 0 |
включен) |
записаны |
|||
в UxTXBUF |
Символ |
||||
SWRST |
USPIEx = 1 |
принят |
|||
PUC |
|||||
USPIEx = 0
Рис. 14-6. Диаграмма состояний разрешения приема в режиме ведущего SPI
14.2.5. Управление последовательным тактированием
Сигнал UCLK на шине SPI обеспечивается ведущим. Когда MM=1, BITCLK обеспечивается генератором скорости передачи USART на выводе UCLK, как
Библиотека Компэла |
255 |
|
MSP430x1xxFamily |
|||||
USPIEx = 0 |
Нет тактирования UCLK |
Не завершено |
|||
USPIEx = 1 |
Состояние |
USPIEx = 1 |
Прием |
Условия обработки |
|
Прием |
ожидания |
||||
полного |
прерывания |
||||
запрещен |
(приемник |
||||
USPIEx = 0 |
включен) |
символа |
|||
Символ |
|||||
SWRST |
USPIEx = 1 |
принят |
|||
PUC
USPIEx = 0
Рис. 14-7. Диаграмма состояний разрешения приема ведомым SPI
показано на рис. 14-8. Когда MM=0, тактирование USART на выводе UCLK обеспечивается ведущим, генератор скорости передачи не используется, а значения битов SSELx не учитываются. Приемник и передатчик SPI работают параллельно и используют одинаковый источник тактирования для передачи данных.
SSEL1 SSEL0 N = 215 ... |
28 |
27 |
... |
20 |
||||
UCLKI |
UxBR1 |
UxBR0 |
||||||
00 |
BRCLK |
8 |
8 |
|||||
ACLK |
01 |
|||||||
16•разрядный счетчик R |
||||||||
SMCLK |
10 |
|||||||
Q15 ............ |
Q0 |
|||||||
SMCLK |
11 |
Перекл. |
||||||
Сравнение (0 или 1) |
FF |
BITCLK |
||||||
Сдвиговый регистр |
R |
|||||||
R |
||||||||
модуляции данных |
||||||||
(первый млад. разряд) |
||||||||
mX |
m7 |
8 m0 |
||||||
UxMCTL |
Начальный разряд |
|||||||
Рис. 14-8. Генератор скорости передачи SPI |
||||||||
16-разрядное значение UxBR0+UxBR1 представляет собой коэффициент деления источника тактирования USART – BRCLK. Максимальная скорость передачи, генерируемая в режиме ведущего равна BRCLK/2. Модулятор в генераторе скорости передачи USART не используется в режиме SPI, рекомендуется устанавливать его значение равным 000h. Частота UCLK определяется так:
Скорость передачи = BRCLK/UxBR, где UxBR = [UxBR1, UxBR0]
256 |
Библиотека Компэла |
|
Раздел XIV. |
Периферийный интерфейс USART, режим SPI |
Полярность и фаза последовательного тактирования
Полярность и фаза UCLK раздельно конфигурируются через управляющие биты CKPL и CKPH модуля USART. Синхронизация для каждого случая показана на рис. 14-9.
Номер |
||||||||||
CKPH CKPL |
цикла |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
|
0 |
0 |
UCLK |
||||||||
0 1 UCLK
1 0 UCLK
11 UCLK
0 |
Х |
SIMO/ |
MSB |
LSB |
|
SOMI |
|||||
1 |
Х |
SIMO/ |
MSB |
LSB |
|
SOMI |
Перемещение в UxTXBUF
Элементы выборок RX
Рис. 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.
Примечание: запись в UxTXBUF в режиме SPI
Запись данных в UxTXBUF, когда UTXIFGx=0 и USPIEx=1 может привести к ошибочной передаче данных.
Работа прерывания SPI при приеме
Флаг прерывания URXIFGx устанавливается каждый раз, когда символ принят и загружен в UxRXBUF, как показано на рис. 14-11 и 14-12. Запрос пре-
Библиотека Компэла |
257 |
|