Файл: Семейство микроконтроллеров MSP430X1XX, руководство пользователя (2004).pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 16.06.2025

Просмотров: 2835

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

MSP430x1xxFamily

i

0

1

2

t ideal

t0

t1

1

2

3

4

5

6

7

8

9 10 11121314 1

2

3

4

5

6

7

8

9 10 11121314 1

2

3

4

5

6

BRCLK

URXDx

STD0D2

URXDS

ST

D0D2

tactual

t0

t1

t2

Ошибка синхронизации ± 0,5xBRCLK

Выборка URXDS

Int(UxBR/2)+m0 =

UxBR +m1 = 13+1 = 14

UxBR +m2 = 13+0 = 13

Int (13/2)+1 = 6+1 = 7

Принятый

Принятый

Принятый

мажоритарный

мажоритарный

мажоритарный

выбор

выбор

выбор

Рис. 13-9. Ошибка приема

Идеальное тактирование стартового бита tideal(0) есть половина тактирования скорости передачи tbaud rate, поскольку бит проверяется в середине этого пе-

риода. Идеальное тактирование скорости передачи tideal(i) для оставшихся битов символа есть тактирование скорости передачи tbaud rate. Ошибки каждого конкрет-

ного бита рассчитываются следующим образом:

UxBR

baudrate

i

Ошибка [%]

2

m0

int

BRCLK

2

n 1

UxBR mi i 1

1 j 100%,

где:

baudrate – желаемая скорость передачи в бодах;

BRCLK – входная частота, которую можно выбрать из UCLK, ACLK или SMCLK;

j – позиция бита – 0 для стартового бита, 1 для бита данных D0 и т.д.; UxBR – коэффициент деления в регистрах UxBR1 и UxBR0.

Например, ошибки приема при приведенных ниже условиях рассчитываются так:

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.

234

Библиотека Компэла


Раздел 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


MSP430x1xxFamily

Таблица 13-2. Наиболее часто используемые величины скорости передачи, скорость передачи данных в бодах и ошибки.

Деление на

Скорость

передачи,

A:

B:

бод

1200

27.31

873.81

2400

13.65

436.91

4800

6.83

218.45

9600

3.41

109.23

19200

54.61

38400

27.31

76800

13.65

115200

9.1

A: BRCLK = 32768 Гц

B: BRCLK = 1048576 Гц

UxBR1

UxBR0

UxMCTL

Макс. ошибка TX, %

Макс. ошибка RX, %

Ошибка синхр. RX, %

UxBR1

UxBR0

UxMCTL

Макс. ошибка TX, %

Макс. ошибка RX, %

0

1B

03

-4/3

-4/3

±2

03

69

FF

0/0.3

±2

0

0D

6B

-6/3

-6/3

±4

01

B4

FF

0/0.3

±2

0

06

6F

-9/11

-9/11

±7

0

DA

55

0/0.4

±2

0

03

4A

-21/12

-21/12

±15

0

6D

03

-0.4/1

±2

0

36

6B

-0.2/2

±2

0

1B

03

-4/3

±2

0

0D

6B

-6/3

±4

0

09

08

-5/7

±7

13.2.7. Прерывания USART

USART имеет один вектор прерывания для передачи и один вектор прерывания для приема.

Функционирование прерывания USART при передаче

Флаг прерывания UTXIFGx устанавливается передатчиком для индикации готовности UxTXBUF к приему другого символа. Запрос прерывания генерируется, если установлены флаги UTXIEx и GIE. UTXIFGx автоматически сбрасывается, если запрос прерывания обслужен или если символ записан в UxTXBUF.

UTXIFGx устанавливается после PUC или когда SWRST=1. UTXIEx сбрасывается после PUC или когда SWRST=1. Это показано на рис. 13-10.

Функционирование прерывания USART при приеме

Флаг прерывания URXIFGx устанавливается каждый раз при приеме символа и его загрузки в UxRXBUF. Запрос прерывания генерируется, если также установлены флаги URXIEx и GIE. URXIFGx и URXIEx сбрасываются сигналом системного сброса PUC или когда SWRST=1. URXIFGx сбрасывается автоматически, если запрос прерывания обработан (когда URXSE=0) или когда прочитан UxRXBUF. Это показано на рис. 13-11.

URXEIE используется для разрешения или запрещения установки URXIFGx от ошибочных символов. В многопроцессорном адресном режиме URXWIE ис-

236

Библиотека Компэла


Раздел 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