
Семейство микроконтроллеров MSP430X1XX, руководство пользователя (2004)
.pdf
Раздел XIII. |
|
Периферийный интерфейс USART, режим UART |
||||||
|
Мажоритарный выбор: (m=0) |
|
|
|
|
|
||
Стартовый |
|
(m= 1) |
|
|
|
|
||
бит |
|
|
|
|
|
|
|
|
BRCLK |
|
|
N/2 |
N/2•1 N/2•2 |
|
N/2 |
N/2•1 |
|
Счетчик |
N/2 N/2•1 N/2•2 |
1 |
1 |
|||||
1 |
0 |
N/2 N/2•1 |
1 |
0 |
N/2 |
|||
|
|
|||||||
BITCLK |
|
|
|
|
|
|
|
|
|
INT(N/2) + m(= 0) |
|
|
Nчетн.: INT(N/2) |
|
|
|
|
|
INT(N/2) + m(= 1) |
|
|
Nнечетн.: INT(N/2) + R(= 1) |
|
|
||
|
|
|
Период бита |
|
|
|
m: соответствующий бит модуляции R: остаток от деления N/2
Рис. 13-8. Синхронизация скорости передачи BITCLK
Синхронизация скорости передачи бит
Первая ступень контролера скорости передачи – 16-разрядный счетчик и компаратор. В начале передачи или приема каждого бита счетчик загружается величиной INT(N/2), где N – значение, сохраненное в комбина4ции UxBR0 и UxBR1. Счетчик перезагружает INT(N/2) каждый полупериод периода бита, обеспечивая полный период бита N BRCLK. Для данного источника тактирования BRCLK, скорость передачи определяется требуемым коэффициентом деления N:
N = BRCLK / скорость передачи в бодах;
Коэффициент деления N зачастую является нецелым числом, целочисленная часть которого может быть принята прескалером/делителем. Вторая ступень генератора скорости передачи – модулятор, используемый для максимально точного учета дробной части. Коэффициент деления N в этом случае определяется так:
|
1 |
n 1 |
N UxBR |
|
m , |
|
||
|
n |
i |
|
i 0 |
где:
N – получаемый коэффициент деления;
UxBR – 16-разрядное представление регистров UxBR0 и UxBR1; i – позиция бита в фрейме;
n – общее количество битов в фрейме;
mi – данные каждого соответствующего модуляционного бита (1 или 0). BITCLK может подстраиваться от бита к биту с помощью модулятора для
удовлетворения потребностей в синхронизации в случае, когда необходим де-
Библиотека Компэла |
|
231 |
|

MSP430x1xxFamily
Скорость_ передачи |
BRCKL |
|
BRCLK |
||
|
|
1 |
n 1 |
||
|
N |
|
|||
|
|
|
UxBR |
|
m |
|
|
|
|
||
|
|
|
|
n |
i |
|
|
|
|
i 0 |
литель нецелого числа. Синхронизация каждого бита расширяется одним тактовым циклом BRCLK, если бит модулятора mi установлен. Каждый раз при получении или передаче бита, следующий бит в регистре управления модуляцией определяет синхронизацию этого бита. Установленный модуляционный бит увеличивает коэффициент деления на единицу, в то же время очищенный бит модуляции сохраняет коэффициент деления, заданный UxBR.
Синхронизация стартового бита определяется UxBR плюс m0, следующего бита UxBR плюс m1 и так далее. Модуляционная последовательность начинается с младшего бита. Когда символ содержит более 8 бит, модуляционная последовательность вновь начинается с m0 и продолжается до окончания обработки всех битов.
Определение модуляционного значения
Определение модуляционного значения – интерактивный процесс. Использование формулы ошибки синхронизации, начиная со стартового бита, позволяет рассчитать ошибку для каждого бита с последующей установкой или сбросом соответствующего бита модуляции. Модуляционный бит устанавливается с наименьшей выбранной ошибкой и рассчитанной ошибкой следующего бита. Этот процесс продолжается до минимизации ошибок всех битов. Если фрейм содержит более 8 бит, модуляционные биты повторяются. К примеру, 9-й бит фрейма использует бит модуляции 0.
Синхронизация битов при передаче
Синхронизация каждого символа в совокупности представляет собой сумму синхронизаций отдельных разрядов. При модуляции каждого бита сокращается накапливающая поразрядная погрешность. Индивидуальную разрядную погрешность можно рассчитать так:
где:
|
|
|
n 1 |
|
|
baudrate |
|
UxBR m |
|
|
|
Ошибка [%] |
|
( j 1) |
|
( j 1) 100%, |
|
|
|||||
BRCLK |
|
i |
|
|
|
|
|
|
i 0 |
|
|
baudrate – желаемая скорость передачи в бодах; BRCLK – входная частота: UCLKI, ACLK или SMCLK;
j – позиция бита – 0 для стартового бита, 1 для бита данных D0 и т.д.; UxBR – коэффициент деления в регистрах UxBR1 и UxBR0.
Например, ошибки передачи при приведенных ниже условиях рассчитываются так:
232 |
|
Библиотека Компэла |
|
Раздел XIII. |
Периферийный интерфейс USART, режим UART |
baudrate = 2400
BRCLK = 32768 Гц (ACLK)
UxBR = 13, так как идеальный коэффициент деления равен 13.65 UxMCTL = 6Bh: m7=0, m6=1, m5=1, m4=0, m3=1, m2=0, m1=1 и m0=1. Сначала используется младший бит UxMCTL.
baudrate |
|
|
|
|
Ошибка _ стартового _ бита [%] |
|
[(0 1) |
UxBR 1] 1 100% |
2.54% |
|
||||
BRCLK |
|
|
|
baudrate |
|
|
|
|
||
Ошибка _ бита _ данных _ D0 [%] |
|
|
[(1 1) |
UxBR 2] 2 |
100% 5.08% |
|
|
|
|||||
BRCLK |
|
|
|
|
||
baudrate |
|
|
|
|
||
Ошибка _ бита _ данных _ D1 [%] |
|
|
[(2 1) |
UxBR 2] 3 |
100% 0.29% |
|
|
|
|||||
BRCLK |
|
|
|
|
||
baudrate |
|
|
|
|
||
Ошибка _ бита _ данных _ D2 [%] |
|
|
[(3 1) |
UxBR 3] 4 |
100% 2.83% |
|
|
|
|||||
BRCLK |
|
|
|
|
|
baudrate |
|
|
|
|
|
|
||||||||
Ошибка _ бита _ данных _ D3 [%] |
|
|
|
|
|
|
|
|
[(4 1) |
UxBR 3] 5 |
100% 1.95% |
||||
|
|
|
|
|
|
||||||||||
|
BRCLK |
|
|
|
|
|
|
||||||||
Ошибка _ бита _ данных _ D4 [%] |
baudrate |
[(5 1) |
UxBR 4] |
|
100% 0.59% |
||||||||||
|
|
|
|
|
|
6 |
|||||||||
|
|
|
|
|
|||||||||||
|
|
BRCLK |
|
|
|
|
|
|
|||||||
Ошибка _ бита _ данных _ D5 [%] |
baudrate |
|
[(6 1) |
UxBR 5] |
|
100% 3.13% |
|||||||||
|
|
|
|
|
|
7 |
|||||||||
|
|
|
|
|
|||||||||||
|
|
BRCLK |
|
|
|
|
|
|
|||||||
|
baudrate |
|
|
|
|
|
|
||||||||
Ошибка _ бита _ данных _ D6 [%] |
|
|
|
|
|
|
|
|
[(7 1) |
UxBR 5] 8 |
100% 1.66% |
||||
|
|
|
|
|
|
|
|||||||||
|
BRCLK |
|
|
|
|
|
|
||||||||
Ошибка _ бита _ данных _ D7 [%] |
baudrate |
|
[(8 1) |
UxBR 6] |
|
100% 0.88% |
|||||||||
|
|
|
|
|
|
9 |
|||||||||
|
|
|
|
|
|||||||||||
|
|
BRCLK |
|
|
|
|
|
|
|||||||
baudrate |
|
|
|
|
|
|
|||||||||
Ошибка _ бита _четности [%] |
|
|
|
|
|
|
|
|
[(9 1) UxBR 7] 10 |
100% 3.42% |
|||||
BRCLK |
|||||||||||||||
|
|
|
|
|
|
|
|||||||||
baudrate |
|
|
|
|
|
|
|||||||||
Ошибка _ стопового _ бита _1[%] |
|
|
|
|
|
|
|
|
[(10 1) |
UxBR 7] 11 |
100% 1.37% |
||||
BRCLK |
|
|
|
|
|
|
Результаты показывают, что максимальная поразрядная ошибка была 5,08% за период BITCLK.
Синхронизация битов при приеме
Синхронизация приема состоит из двух источников ошибок. Первый – побитовая ошибка синхронизации. Второй – ошибка между появлением стартового фронта и стартовым фронтом, принятым USART. На рис. 13-9 показаны асинхронные ошибки синхронизации между данными на выводе URXDx и внутренним тактированием скорости передачи.
Библиотека Компэла |
|
233 |
|

Раздел XIII. |
|
|
|
|
|
|
|
Периферийный интерфейс USART, режим UART |
|||||||||||||
|
baudrate |
[2 |
|
(1 6) (0 |
UxBR 0)] 1 |
|
|
|
|||||||||||||
Ошибка _ стартового _ бита [%] |
|
|
|
|
|
|
|
|
|
0 |
100% 2.54% |
||||||||||
|
|
|
|
BRCLK |
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
Ошибка _ бита _ данных _ D0 [%] |
baudrate |
|
[2 |
(1 6) (1 |
UxBR 1)] 1 |
|
100% 5.08% |
||||||||||||||
|
|
|
|
|
|
|
1 |
||||||||||||||
BRCLK |
|
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
baudrate |
[2 |
(1 6) |
(2 |
|
1)] 1 |
|
|
|
|||||||||||
Ошибка _ бита _ данных _ D1[%] |
|
|
|
|
|
|
UxBR |
2 |
100% 0.29% |
||||||||||||
BRCLK |
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
baudrate |
|
|
|
|
|
|
|
|
|
|
|||||||||
Ошибка _ бита _ данных _ D2 [%] |
|
|
|
|
|
|
[2 |
|
(1 6) |
(3 |
UxBR |
2)] 1 3 |
100% 2.83% |
||||||||
|
BRCLK |
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
baudrate |
|
|
|
|
|
|
|
|
|
|
||||||||||
Ошибка _ бита _ данных _ D3 [%] |
|
|
|
|
|
|
|
[2 |
|
(1 6) (4 |
UxBR 2)] 1 4 |
100% 1.95% |
|||||||||
|
|
|
BRCLK |
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
Ошибка _ бита _ данных _ D4 [%] |
baudrate |
[2 |
|
(1 6) (5 |
UxBR |
3)] 1 |
|
100% 0.59% |
|||||||||||||
|
|
|
|
|
|
|
5 |
||||||||||||||
|
BRCLK |
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
Ошибка _ бита _ данных _ D5 [%] |
baudrate |
[2 |
|
(1 6) (6 |
UxBR |
4)] 1 |
|
100% 3.13% |
|||||||||||||
|
|
|
|
|
|
|
6 |
||||||||||||||
|
BRCLK |
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
baudrate |
|
|
|
|
|
|
|
|
|
|
||||||||||
Ошибка _ бита _ данных _ D6 [%] |
|
|
|
|
|
|
[2 |
|
(1 6) (7 |
UxBR 4)] 1 7 |
100% 1.66% |
||||||||||
|
|
|
|
BRCLK |
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
baudrate |
|
|
|
|
|
|
|
|
|
|
|||||||||
Ошибка _ бита _ данных _ D7 [%] |
|
|
|
|
|
|
[2 |
|
(1 6) (8 |
UxBR |
5)] 1 8 |
100% 0.88% |
|||||||||
|
BRCLK |
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
baudrate |
|
|
|
|
|
|
|
|
|
|
|||||||||||
Ошибка _ бита _ четности [%] |
|
|
|
|
|
|
|
|
|
|
[2 |
(1 6) (9 |
UxBR 6)] 1 9 |
100% 3.42% |
|||||||
|
BRCLK |
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
baudrate |
[2 |
(1 6) (10 |
UxBR 6)] 1 |
|
|
|
|||||||||||||||
Ошибка _ стопового _ бита _ 1[%] |
|
|
|
|
|
|
|
|
|
10 |
100% 1.37% |
||||||||||
|
|
|
BRCLK |
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Результаты показывают, что максимальная поразрядная ошибка была 5,08% за период BITCLK.
Типовые скорости передачи и ошибки
Стандартные скорости передачи данных в бодах для UxBR и UxMCTL приведены в таблице 13-2 для часового кристалла (ACLK) на 32768 Гц и для типичного значения SMCLK 1048576 Гц.
Ошибка приема – это накопленное время в сравнении с идеальным временем загрузки сдвигового регистра в середине каждого бита. Ошибка передачи – накопленное время ошибки в сравнении с идеальным временем периода бита.
Библиотека Компэла |
|
235 |
|


Раздел XIII. |
|
|
|
|
Периферийный интерфейс USART, режим UART |
||||||||
|
|
|
|
|
|
|
UTXIEx |
||||||
|
|
|
|
|
|
Q |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Clear |
|
|
|
|
|
|
|
|||
PUC or SWRST |
|
|
|
|
|
|
|
|
|
|
|
Запрос обработки |
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
прерывания |
|
|
|
|
Set |
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
UTXIFGx |
||||||||||
V CC |
|
D Q |
|||||||||||
|
|
|
|
|
|
|
|
||||||
Перемещение |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
SWRST |
|||||||
символа |
|
Clear |
|
||||||||||
|
|
|
|
|
|
|
|
||||||
из буфера |
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
||
в сдвиговый регистр |
|
|
|
|
|
|
Запись данных в UxTXBUF |
||||||
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
IRQA |
|||||
|
|
|
|
|
|
|
|
Рис. 13-10. Прерывание при передаче
пользуется для автоматического обнаружения правильных символов адреса и отклонения нежелательных символов данных.
|
SYNC |
|
|
URXS |
Правильный стартовый бит |
|
S |
||
Получен полный символ |
|
|
||
|
|
|
||
|
URXSE |
|
|
|
From URXD |
|
Clear |
|
|
Отклонение ошибочного символа |
|
|
||
|
|
URXIEx |
||
PE |
|
|
|
|
FE |
|
|
|
Запрос обработки |
BRK |
URXEIE |
|
S |
|
|
прерывания |
|||
|
|
|||
|
|
|
|
URXIFGx |
URXWIE |
|
|
Clear |
SWRST |
RXWAKE |
|
|
|
|
|
|
Принят символ |
|
PUC |
Отклонение символа, |
|
Чтение UxRXBUF |
||
или |
|
|||
не являющегося адресом |
|
URXSE |
||
обнаружен |
|
IRQA |
||
|
|
|
||
|
|
разрыв |
|
|
|
|
|
|
Рис. 13-11. Прерывание при приеме
Два типа символов не устанавливают URXIFGx:
•Ошибочные символы при URXEIE=0
•Символы, не являющиеся адресом при URXWIE=1
Когда URXEIE=1, состояние разрыва установит бит BRK и флаг URXIFGx.
Библиотека Компэла |
|
237 |
|

MSP430x1xxFamily
Функционирование механизма обнаружения стартового фронта при приеме
Бит URXSE включает возможность обнаружения стартового фронта при приеме. Рекомендуется использовать возможность обнаружения стартового фронта при приеме, когда источником для BRCLK является DCO, который выключен из-за действующего режима пониженного энергопотребления. Ультрабыстрое включение DCO позволяет выполнить прием символа после обнаружения стартового фронта.
Когда URXSE, URXIEx и GIE установлены и на URXDx появился стартовый фронт, будет установлен внутренний сигнал URXS. После установки URXS будет сгенерирован запрос на прерывание при приеме, но URXIFGx не установится. Программное обеспечение пользователя в процедуре обработки прерывания приема может проверить URXIFGx для определения источника прерывания. Если URXIFGx=0, обнаружен стартовый фронт, а когда URXIFGx=1, был принят правильный символ (или разрыв).
Если процедура обработки прерывания (ISR) обнаружила, что запрос прерывания поступил от стартового фронта, пользовательское программное обеспечение переключает URXSE и должно включить источник BRCLK, вернувшись из ISR в активный режим или в режим пониженного энергопотребления, в котором источник активен. Если возврат из ISR произошел в режим пониженного энергопотребления, в котором источник BRCLK неактивен, символ не будет принят. Переключение URXSE очищает сигнал URXS и вновь активирует возможность обнаружения стартового фронта для последующих символов. См. раздел «Системный сброс, прерывания и режимы работы» для получения информации о входе и выходе из режимов пониженного энергопотребления.
Теперь активный BRCLK позволяет USART принять остаток символа. После приема полного символа и перемещения его в UxRXBUF устанавливается URXIFGx и снова запрашивается обработка прерывания. На входе ISR установка URXIFGx=1 показывает, что символ был получен. Флаг URXIFGx очищается, когда программное обеспечение пользователя читает UxRXBUF.
;Обработчик прерывания для условия старта фрейма ;и приема символа. BRCLK=DCO.
U0RX_Int |
BIT.B #URXIFG0,&IFG2 |
;Проверка URXIFGx для определения |
||
|
|
JNE ST_COND |
;старт или символ ? |
|
|
|
MOV.B &UxRXBUF,dst |
;Чтение буфера |
|
|
|
... |
; |
|
ST_COND |
RETI |
; |
|
|
BIC.B #URXSE,&U0TCTL |
;Очистка сигнала URXS |
|||
|
|
BIS.B #URXSE,&U0TCTL ;Повторное разрешение |
||
|
|
|
;определения фронта |
|
|
|
BIC #SCG0+SCG1,0(SP) ;Включение BRCLK = DCO |
||
|
|
RETI |
; |
|
|
|
|
|
Библиотека Компэла |
238 |
|
|
|
|
|
|
|

Раздел XIII. |
Периферийный интерфейс USART, режим UART |
Примечание: Определение разрыва при остановленном тактировании UART
Когда используется возможность определения стартового фронта при приеме символа, состояние разрыва не может быть выявлено, если источник BRCLK выключен.
Условия определения стартового фронта при приеме
Когда URXSE=1, система подавления импульсных помех предотвращает случайный запуск USART. Любой сигнал низкого уровня на URXDx короче времени tt (около 300 нС) будет проигнорирован USART и запрос прерывания не будет сгенерирован, как показано на рис. 13-12. См. руководство по применению конкретного устройства для выяснения точных параметров.
URXDx
URXS
t
Рис. 13-12. Подавление импульсной помехи – прием в USART не начинается
Когда импульсная помеха дольше tt или на URXDx появился правильный стартовый бит, USART начинает операцию приема по мажоритарному принципу, как показано на рис. 13-13. Если стартовый бит мажоритарно не обнаружен, USART останавливает прием символа.
Мажоритарный выбор
URXDx
URXS
t
Рис. 13-13. Подавление импульсной помехи, USART активен
Если прием символа остановлен, активность BRCLK не требуется. Период простоя дольше продолжительности приема символа может использоваться программным обеспечением для индикации, что символ не был принят в ожидаемое время и программа может отключить BRCLK.
Библиотека Компэла |
|
239 |
|

MSP430x1xxFamily
13.3.Регистры USART: режим USART
Втаблице 13-3 приведен перечень регистров для всех устройств с модулем USART. Таблица 13-4 справедлива только для устройств со вторым USART модулем – USART1.
Таблица 13-3. Регистры управления и статуса 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 разрешения прерывания |
IE1 |
Чтение/запись |
000h |
000h после PUC |
|
SFR* |
|||||
|
|
|
|
||
|
|
|
|
|
|
Регистр 1 флага прерывания SFR* |
IFG1 |
Чтение/запись |
002h |
082h после PUC |
|
|
|
|
|
|
* Не применимо к устройствам `12xx. См. описания регистров для выяснения расположения регистров и бит у этих устройств.
Таблица 13-4. Регистры управления и статуса USART1
|
Регистр |
Краткое |
Тип |
Адрес |
Исходное |
|
|
обозначение |
регистра |
состояние |
|||
|
|
|
|
|||
|
|
|
|
|
||
Регистр управления USART |
U1CTL |
Чтение/запись |
078h |
001h после PUC |
||
|
|
|
|
|
||
Регистр управления передачей |
U1TCTL |
Чтение/запись |
079h |
001h после PUC |
||
|
|
|
|
|
||
Регистр управления приемом |
U1RCTL |
Чтение/запись |
07Ah |
000h после PUC |
||
|
|
|
|
|
||
Регистр управления модуляцией |
U1MCTL |
Чтение/запись |
07Bh |
Не изменяется |
||
|
|
|
|
|
|
|
|
|
|
|
|
Библиотека Компэла |
|
240 |
|
|
|
|
||
|
|
|
|