Руководство пользователя MSP430 (1041606), страница 26
Текст из файла (страница 26)
Рис.13-11. Прерывание при приеме
URXEIE используется для разрешения или запрещения установки URXIFGx от ошибочных символов. В многопроцессорном адресном режиме URXWIE используется для автоматического обнаружения правильных символов адреса и отклонения нежелательных символов данных.
Два типа символов не устанавливают URXIFGx:
-
Ошибочные символы при URXEIE=0
-
Символы, не являющиеся адресом при URXWIE=1
Когда URXEIE=1, состояние разрыва установит бит BRK и флаг URXIFGx.
Функционирование механизма обнаружения стартового фронта при приеме
Бит 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 ; Чтение буфера
;
RETI ;
ST_COND BIC.B #URXSE,&U0TCTL ; Очистка сигнала URXS
BIS.B #URXSE,&U0TCTL ; Повторное разрешение определения фронта
BIC #SCG0+SCG1,0(SP) ; Включение BRCLK = DCO
RETI ;
Примечание: Определение разрыва при остановленном тактировании UART |
Условия определения стартового фронта при приеме
Когда URXSE=1, система подавления импульсных помех предотвращает случайный запуск USART. Любой сигнал низкого уровня на URXDx короче времени t? (около 300 нС) будет проигнорирован USART и запрос прерывания не будет сгенерирован, как показано на рис.13-12. См. руководство по применению конкретного устройства для выяснения точных параметров.
Рис.13-12. Подавление импульсной помехи – прием в USART не начинается
Когда импульсная помеха дольше t? или на URXDx появился правильный стартовый бит, USART начинает операцию приема по мажоритарному принципу, как показано на рис.13-13. Если стартовый бит мажоритарно не обнаружен, USART останавливает прием символа.
Если прием символа остановлен, активность BRCLK не требуется. Период простоя дольше продолжительности приема символа может использоваться программным обеспечением для индикации, что символ не был принят в ожидаемое время и программа может отключить BRCLK.
Рис.13-13. Подавление импульсной помехи, USART активен
Периферийный интерфейс USART, режим UART
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 разрешения прерывания SFR* | IE1 | Чтение/запись | 000h | 000h после PUC |
Регистр 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 | Не изменяется |
Регистр 0 управления скоростью передачи | U1BR0 | Чтение/запись | 07Ch | Не изменяется |
Регистр 1 управления скоростью передачи | U1BR1 | Чтение/запись | 07Dh | Не изменяется |
Регистр буфера приема | U1RXBUF | Чтение | 07Eh | Не изменяется |
Регистр буфера передачи | U1TXBUF | Чтение/запись | 07Fh | Не изменяется |
Регистр 2 включения модуля SFR | ME2 | Чтение/запись | 005h | 000h после PUC |
Регистр 2 разрешения прерывания SFR | IE2 | Чтение/запись | 001h | 000h после PUC |
Регистр 2 флага прерывания SFR | IFG2 | Чтение/запись | 003h | 000h после PUC |
Примечание: Изменение битов SFR |
UxCTL, регистр управления USART
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
PENA | PEV | SPB | CHAR | LISTEN | SYNC | MM | SWRST |
rw-0 | rw-0 | rw-0 | rw-0 | rw-0 | rw-0 | rw-0 | rw-1 |
PENA | Бит 7 | Включение контроля четности. 0 Контроль четности отключен 1 Контроль четности включен. Бит контроля четности сгенерирован (UTXDx) и ожидается (URXDx). В многопроцессорном режиме с адресным битом он учитывается при вычислении четности. |
PEV | Бит 6 | Выбор четности. PEV не используется, когда контроль четности отключен. 0 Нечетный 1 Четный |
SPB | Бит 5 | Выбор стопового бита. Количество передаваемых стоповых битов. Приемник всегда проверяет один стоповый бит. 0 Один стоповый бит 1 Два стоповых бита |
CHAR | Бит 4 | Длина символа. Можно выбрать 7-ми или 8-ми разрядный символ. 0 7-разрядные данные 1 8-разрядные данные |
LISTEN | Бит 3 | Включение прослушивания. Бит LISTEN включает режим обратной петли. 0 Отключен 1 Включен. UTXDx внутренне подключается назад к приемнику. |
SYNC | Бит 2 | Включение синхронного режима 0 Режим UART 1 Режим SPI |
MM | Бит 1 | Выбор многопроцессорного режима 0 Многопроцессорный протокол со свободной линией 1 Многопроцессорный протокол с адресным битом |
SWRST | Бит 0 | Разрешение программного сброса 0 Отключен. Сброс USART не задействован 1 Разрешен. Логика USART удерживается в состоянии сброса |
UxTCTL, регистр управления передачей USART
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Не исполь | CKPL | SSELx | URXSE | TXWAKE | Не исполь | TXEPT |
rw-0 | rw-0 | rw-0 | rw-0 | rw-0 | rw-0 | rw-0 | rw-1 |
Не используется | Бит 7 | Не используется. |
CKPL | Бит 6 | Выбор полярности тактового сигнала. 0 UCLKI = UCLK 1 UCLKI = инвертированный UCLK |
SSELx | Биты | Выбор источника. Эти биты выбирают источник тактирования для BRCLK 00 UCLKI 01 ACLK 10 SMCLK 11 SMCLK |
URXSE | Бит 3 | UART принимает стартовый фронт. Бит включает возможность приема UART`ом стартового фронта. 0 Отключено 1 Включено |
TXWAKE | Бит 2 | «Пробуждение» передатчика 0 Следующий передаваемый фрэйм - данные 1 Следующий передаваемый фрэйм – адрес |
Не используется | Бит 1 | Не используется |
TXEPT | Бит 0 | Флаг опустошения передатчика 0 UART передает данные и/или данные ожидают в UxTXBUF 1 Сдвиговый регистр передатчика и UxTXBUF пусты или SWRST=1 |
UxRCTL, регистр управления приемом USART
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
FE | PE | OE | BRK | URXEIE | URXWIE | RXWAKE | RXERR |
rw-0 | rw-0 | rw-0 | rw-0 | rw-0 | rw-0 | rw-0 | rw-0 |
FE | Бит 7 | Флаг ошибки фрэйма 0 Нет ошибки 1 Символ принят со стоповым битом низкого уровня |
PE | Бит 6 | Флаг ошибки контроля четности. Когда PENA=0, PE читается как 0. 0 Нет ошибки 1 Символ принят с ошибкой четности |
OE | Бит 5 | Флаг ошибки переполнения. Этот бит устанавливается, когда символ перемещен в UxRXBUF до завершения чтения предыдущего символа. 0 Нет ошибки 1 Произошла ошибка переполнения |
BRK | Бит 4 | Флаг обнаружения разрыва 0 Нет состояния разрыва 1 Появилось состояние разрыва |
URXEIE | Бит 3 | Разрешение прерывания при приеме ошибочного символа 0 Ошибочный символ отклоняется, а URXIFGx не устанавливается 1 Принятый ошибочный символ устанавливает URXIFGx |
URXWIE | Бит 2 | Запуск приема с разрешением прерывания. Этот бит разрешает URXIFGx быть установленным, когда принят адресный символ. Если URXEIE=0, символ адреса не будет устанавливать URXIFGx, если он принят с ошибками. 0 Все принятые символы устанавливают URXIFGx 1 Только принятые адресные символы устанавливают URXIFGx |
RXWAKE | Бит 1 | Флаг «пробуждения» при приеме 0 Принятый символ - данные 1 Принятый символ – адрес |
RXERR | Бит 0 | Флаг ошибки приема. Этот бит показывает, что символ был принят с ошибкой (ошибками). Если RXERR=1, один или более флагов ошибок (FE, PE, OE, BRK) также устанавливаются. RXERR очищается, когда UxRXBUF прочитан. 0 Ошибки приема не обнаружены 1 Обнаружена ошибка приема |
UxBR0, регистр 0 управления скоростью передачи USART
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 |
rw | rw | rw | rw | rw | rw | rw | rw |
UxBR1, регистр 1 управления скоростью передачи USART
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
215 | 214 | 213 | 212 | 211 | 210 | 29 | 28 |
rw | rw | rw | rw | rw | rw | rw | rw |
UxBRx | Биты 7-0 | Правильный диапазон управления скоростью передачи лежит в пределах 3 <= UxBR <= 0FFFFh, где UxBR={UxBR1+UxBR0}. Если UxBR < 3, произойдет непредсказуемая синхронизация приема и передачи. |
UxMCTL, регистр управления модуляцией USART
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
m7 | m6 | m5 | m4 | m3 | m2 | m1 | m0 |
rw | rw | rw | rw | rw | rw | rw | rw |
UxMCTLx | Биты 7-0 | Биты модуляции. Эти биты выбирают модуляцию для BRCLK. |
UxRXBUF, регистр буфера приема USART
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 |
r | r | r | r | r | r | r | r |
UxRXBUFx | Биты 7-0 | Буфер принятых данных доступен пользователю и содержит последний принятый из сдвигового регистра приема символ. Чтение UxRXBUF сбрасывает биты ошибок приема, бит RXWAKE и URXIFGx. В режиме 7-разрядных данных, UxRXBUF выравнивается по младшему разряду (LSB), а старший разряд (MSB) всегда сбрасывается. |