Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

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

.pdf
Скачиваний:
337
Добавлен:
12.08.2013
Размер:
3.31 Mб
Скачать

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

 

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

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

Соседние файлы в предмете Микроконтроллеры ЭВМ