Файл: Семейство микроконтроллеров MSP430X1XX, руководство пользователя (2004).pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 16.06.2025
Просмотров: 2849
Скачиваний: 1
MSP430x1xxFamily
Если передатчик включен (UTXEx=1), данные не будет записываться в UxTXBUF, пока его готовность принимать новые данные не будет объявлена установкой UTXIFGx=1. Нарушение этого может привести к ошибочной передаче, т.к. измененные данные будет перемещены в сдвиговый регистр TX.
Рекомендуется отключать передатчик (UTXEx=0) только после завершения любой выполнявшейся передачи. На это указывает установка бита опустошения передатчика (TXEPT=1). Любые данные, записанные в UxTXBUF в тот момент, когда передатчик отключен, будут находится в буфере, но не будут помещены в сдвиговый регистр передачи или переданы. Однократная установка UTXEx вызовет немедленную загрузку в сдвиговый регистр передачи данных из буфера передачи и возобновит передачу символа.
13.2.6. Контроллер скорости передачи UART
Контроллер (генератор) скорости передачи USART может создавать стандартные скорости передачи от источников нестандартных частот. Контроллер скорости передачи использует один прескалер/делитель и модулятор, показанные на рис. 13-7. Эта комбинация позволяет получить дробные коэффициенты деления при генерации скорости передачи в бодах. Максимальная скорость передачи USART составляет одну треть источника таковой частоты USART BRCLK.
SSEL1 |
SSEL0 N = 215 ... |
28 |
27 |
... |
20 |
|||
UCLKI |
00 |
UxBR1 |
UxBR0 |
|||||
BRCLK |
8 |
8 |
||||||
ACLK |
01 |
|||||||
16•разрядный счетчик R |
||||||||
SMCLK |
10 |
|||||||
Q15 ............ |
Q0 |
|||||||
SMCLK |
11 |
FF |
||||||
Сравнение +0 или 1 (0 или 1) |
BITCLK |
|||||||
Триггер |
||||||||
R
Сдвиговый регистр данных |
R |
|||
модуляции |
||||
(первый • младший бит) |
||||
mX |
m7 |
8 |
m0 |
|
UxMCTL |
Стартовый бит |
|||
Рис. 13-7. Контроллер генератора передачи MSP430
Синхронизация каждого бита показана на рис. 13-8. Для каждого полученного бита используется мажоритарный принцип определения значения бита. Мажоритарные выборки происходят в N/2-1, N/2 и N/2+1 периоды BRCLK, где N – число импульсов BRCLKs на один импульс BITCLK.
230 |
Библиотека Компэла |
|
Раздел 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 |
|