Мегаобучалка Главная | О нас | Обратная связь


Регистры USART в микроконтроллерах STM32F100xx



2019-05-24 243 Обсуждений (0)
Регистры USART в микроконтроллерах STM32F100xx 0.00 из 5.00 0 оценок




USART _ SR (Status register): регистр состояния (таблица 1);

USART _ DR (Data register): регистр данных (таблица 2);

USART _ BRR (Baud rate register): регистр скорости передачи (таблица 3);

USART _ CR 1 (Control register 1): регистр управления 1 (таблица 4);

USART _ CR 2 (Control register 2): регистр управления 2 (таблица 5);

USART _ CR 3 (Control register 3): регистр управления 3 (таблица 6);

USART _ GTPR (Guard time and prescaler register): регистр защитного интервала и прескалера (таблица 7).

 

Таблица 2 – Формат регистра состояния USART_SR (Status register)

 

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Reserved

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Reserved

CTS LBD TXE TC RXNE IDLE ORE NF FE PE
rc_w0 rc_w0 r rc_w0 rc_w0 r r r r r

 

Значение после сброса: 0x00C0.

Примечание. После сброса установлены флаги TXE (регистр передаваемых данных пуст) и TC (передача завершена).

CTS: CTS flag - флаг изменения состояния nCTS. Устанавливается аппаратно, когда происходит переключение сигнала на входе nCTS. Если установлен бит CTSIE (USART_CR3.CTSIE==1), то при установке флага генерируется прерывание. Флаг сбрасывается программно записью 0.

LBD : LIN break detection flag - флаг приёма посылки Break. Устанавливается аппаратно при обнаружении посылки Break на входе; если установлен бит LBDIE (USART_CR3.LBDIE==1), то генерируется прерывание. Флаг сбрасывается программно записью 0.

TXE: Transmit data register empty - флаг устанавливается аппаратно, когда содержимое регистра передаваемых данных TDR пересылается в сдвигающий регистр (доступ к TDR осуществляется путём записи в регистр USART_DR). Если установлен бит TXEIE (USART_CR1.TXEIE==1), генерируется прерывание. Флаг сбрасывается путём записи в регистр USART_DR.

Примечание:

1) Этот бит используется в процессе однобуферной передачи.

2) После сброса этот бит установлен.

TC: Transmission complete - флаг завершения передачи, устанавливается аппаратно, если передача фрейма завершена, и флаг TXE установлен (т.е. регистр передаваемых данных пуст, больше нет данных для передачи). Если USART_CR1.TCIE==1, то при установке флага генерируется прерывание. Флаг сбрасывается программно последовательностью действий: чтение регистра USART_SR, затем запись в USART_DR. Также бит может быть сброшен записью в него 0.

Примечание. После сброса этот бит установлен.

RXNE: Read data register not empty - регистр данных для чтения не пуст. Флаг устанавливается аппаратно, когда содержимое принимающего сдвигающего регистра передаётся в регистр принимаемых данных RDR. Если USART_CR1.RXNEIE==1, при этом генерируется прерывание. Флаг сбрасывается чтением из регистра USART_DR. Также бит может быть сброшен записью в него 0.

IDLE : IDLE line detected - линия свободна. Флаг устанавливается аппаратно, если обнаружено что линия свободна. Это происходит, если получен целый фрейм единиц (лог. 1 на входе в течение целого фрейма). При этом генерируется прерывание, если USART_CR1.IDLEIE==1. Флаг сбрасывается программно последовательностью действий: чтение регистра USART_SR с последующим чтением из регистра USART_DR.

Примечание. IDLE бит не будет установлен снова до тех пор, пока не произойдёт установка флага RXNE (т.е. следующее освобождение линии будет обнаружено только после приёма данных).

ORE: Overrun error - ошибка переполнения. Флаг устанавливается аппаратно, когда слово, полученное в сдвигающей регистр готово к перемещению в регистр принимаемых данных RDR, но RXNE==1 (регистр RDR не пуст, содержит ещё не прочитанные из него принятые USART данные). Если USART_CR1.RXNEIE==1, то при установке флага генерируется исключение. Флаг сбрасывается программно последовательностью действий: чтение из регистра USART_SR с последующим чтением из USART_DR.

Примечание. Когда флаг устанавливается, содержимое регистра RDR не теряется, но сдвигающий регистр будет перезаписан следующими принимаемыми данными. В случае мультибуферной связи, прерывание генерируется при установке флага ORE, если установлен бит USART_CR3.EIE.

NF: Noise detected flag - флаг устанавливается аппаратно при обнаружении шума в полученном фрейме. Сбрасывается программно последовательностью действий: чтение из регистра USART_SR, затем чтение из регистра USART_DR.

Примечание.

1) Этот бит не генерирует прерывание, но если он устанавливается, это происходит в тот же момент, что и установка флага RXNE (регистр данных для чтения не пуст), а этот флаг сам генерирует прерывание. В случае мультибуферной связи прерывание генерируется при установке флага NF, если установлен в 1 бит EIE (USART_CR3.EIE==1).

2) В заведомо свободных от шума линиях, флаг NF может быть отключён установкой в 1 бита USART_CR3.ONEBITE, что увеличивает устойчивость USART к отклонениям тактовой частоты приёмника (к рассогласованию скоростей передатчика и приёмника).

FE: Framing error - ошибка фрейма. Флаг устанавливается аппаратно в случае нарушения синхронизации, чрезмерного шума в линии, при обнаружении символа Break. Флаг сбрасывается программно последовательностью действий: чтение из регистра USART_SR, затем чтение из регистра USART_DR.

Примечание. В отношении генерации прерывания этот флаг полностью аналогичен флагу NF.

PE: Parity error - ошибка чётности. Флаг устанавливается аппаратно, когда в принятом фрейме обнаружена ошибка чётности (если контроль чётности включён). Если USART_CR1.PEIE==1, то генерируется прерывание. Флаг сбрасывается программно последовательностью действий: чтение из регистра USART_SR, затем чтение либо запись регистра USART_DR. Перед сбросом флага, программа должна дождаться установки флага RXNE (регистр данных для чтения не пуст).

 

Таблица 2 – Формат регистра данных USART_DR (Data register)

 

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Reserved

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Reserved

DR[8:0]

rw rw rw rw rw rw rw rw rw

 

Значение после сброса: неопределённое.

DR[8:0]: Data value - регистр данных. Содержит полученный или передаваемый символ, в зависимости от того, производится чтение из него или запись в регистр. Регистр выполняет двойную функцию за счёт того, что он является составным, он объединяет в себе два регистра: один для передачи (TDR) и один для приёма (RDR). TDR обеспечивает загрузку данных в выходной сдвигающий регистр, сдвигающий регистр преобразует загруженное в него слово в последовательную форму. Получаемые в последовательной форме данные накапливаются в приёмном сдвигающем регистре, когда фрейм получен полностью, данные из сдвигающего регистра передаются в регистр RDR, который реализует параллельный интерфейс между внутренней шиной микроконтроллера и входным сдвигающим регистром.

Когда осуществляется передача данных с включённым контролем чётности (USART_CR1.PCE==1), старший бит, записываемый в регистр USART_DR (бит [7] или [8], в зависимости от выбранной длины слова, см. USART_CR1.M), не учитывается. Он замещается вычисленным битом чётности.

При получении данных с включённым контролем чётности, при чтении из USART_DR будем получать значение, содержащее полученный бит чётности.

DIV_Mantissa[11:0]: mantissa of USARTDIV - целая часть коэффициента деления делителя частоты.

DIV_Fraction[3:0]: fraction of USARTDIV - дробная часть коэффициента деления. В режиме с OVER8==1 в битовом поле DIV_Fraction[3:0] старший бит [3] не используется и должен быть сброшен.

 

Таблица 3 – Формат регистра скорости передачи USART_BRR (Baud rate register)

 

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Reserved

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

DIV_Mantissa[11:0]

DIV_Fraction[3:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

 

Значение после сброса: 0x0000.

С помощью регистра USART_BRR задаётся скорость передачи - одновременно как для приёмника USART, так и для передатчика.

 

Рисунок 3 – Установка скорости передачи USART

 

USART получает тактовый сигнал с шины APB2 (USART1) или с шины APB1 (USART2, USART3). По умолчанию, и в том, и в другом случае частота тактового сигнала равна тактовой частоте ядра, которая, в свою очередь, по умолчанию для устройств STM32F100xx обычно составляет 24 МГц. Тактовый сигнал поступает на вход делителя, который управляется регистром USART_BRR. Коэффициент деления зависит от значения в регистре USART_BRR, обозначим коэффициент как USARTDIV. С выхода делителя сигнал подаётся на схему управления приёмником, а на схему управления передатчиком тактовый сигнал подаётся через ещё один делитель с коэффициентом 16 или 8, в зависимости от бита USART_CR1.OVER8. В общем виде его коэффициент деления выражается соотношением 8*(2-OVER8), т.е. 16 при OVER=0 и 8 при OVER=1. Скорость передачи равна частоте тактового сигнала, который получает передатчик. Приёмник получает тактовый сигнал с частотой в 8 или 16 раз больше - это требуется для реализации метода оверсэмрлинга.

Таким образом, скорость передачи S в k раз меньше частоты f тактового сигнала USART: S=f/k. Коэффициент k - общий коэффициент деления двух названных выше делителей частоты, k=USARTDIV*8*(2-OVER8). Величина k выражается целым числом, начиная с 16 или 8 (если OVER8=0 или 1) с точностью до 1. Соответственно, USARTDIV выражается дробным числом (с фиксированной точкой, 4 бита или 3 бита после точки). С этим связано разделение регистра USART_BRR на целую и дробную части: DIV_Mantissa[11:0] и DIV_Fraction[3:0].

В руководстве указано, что USARTDIV=DIV_Mantissa+DIV_Fraction/(8*(2-OVER8)).

Соотношения между USART_BRR, DIV_Mantissa и DIV_Fraction:

DIV_Mantissa=USART_BRR>>4;

DIV_Fraction=USART_BRR&0xF.

Следовательно, в режиме с OVER==0 получаем, что S=f/USART_BRR, т.е. общий коэффициент деления просто равен содержимому регистра USART_BRR, если рассматривать его как целое число. Соответственно, USART_BRR=round(f/S).

В режиме с OVER==1 получается несколько более сложное соотношение из-за того, что бит [3] регистра не используется и должен быть равен 0. В этом случае
USART_BRR=k&0x7|(k<<1)&0xFFF0; где k=round(f/S). В обратную сторону:
k=((USART_BRR&0xFFF0)>>1)|USART_BRR&0x7.

 

Таблица 4 – Формат регистра управления USART_CR1 (Control register 1)

 

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Reserved

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
OVER8

Res.

UE M WAKE PCE PS PEIE TXEIE TCIE RXNEIE IDLEIE TE RE RWU SBK
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

 

Значение после сброса: 0x0000

UE: USART enable - включить USART (включается установкой бита в 1). Когда бит программно сбрасывается, в конце передачи текущего байта прекращается работа прескалеров и выходов для уменьшения потребления тока.

M: Word length - длина слова, задаёт количество бит данных в одном фрейме. Бит не должен модифицироваться в процессе обмена данными (это касается как передачи, так и приёма).

0: 1 старт-бит, 8 бит данных, n стоп-битов (количество стоп-битов программируется с помощью USART_CR2.STOP);

1: 1 старт-бит, 9 бит данных, n стоп-битов.

Примечание. Бит чётности считается битом данных.

WAKE: Wakeup method - метод пробуждения USART.

0: "линия свободна" (Idle line);

1: адресная метка.

PCE: Parity control enable - включить аппаратный контроль чётности (генерация бита чётности при передаче данных и проверка в принимаемых данных). Когда контроль чётности включён, бит чётности помещается в позицию старшего бита данных (9-й или 8-й бит, в зависимости от выбранной длины слова). После установки, контроль чётности активируется после завершения приёма/передачи текущего бита.

0: контроль чётности отключён;

1: контроль чётности включён.

PS: Parity selection - выбор метода контроля чётности. Выбор происходит после завершения передачи/приёма текущего байта.

0: контроль на чётность;

1: контроль на нечётность.

PEIE: PE interrupt enable - разрешение прерывания от PE.

0: прерывание запрещено;

1: генерируется прерывание от USART, когда USART_SR.PE==1.

TXEIE: TXE interrupt enable - разрешение прерывания от TXE.

0: прерывание запрещено;

1: генерируется прерывание от USART, когда USART_SR.TXE==1.

TCIE: Transmission complete interrupt enable - разрешение прерывания после завершения передачи.

0: прерывание запрещено;

1: генерируется прерывание от USART, когда USART_SR.TC==1.

RXNEIE: RXNE interrupt enable - разрешение прерывания от RXNE.

0: прерывание запрещено;

1: генерируется прерывание от USART, когда USART_SR.ORE==1 или USART_SR.RXNE==1.

IDLEIE: IDLE interrupt enable - разрешение прерывания при обнаружении, что "линия свободна" (Idle line).

0: прерывание запрещено;

1: генерируется прерывание от USART, когда USART_SR.IDLE==1.

TE: Transmitter enable - включить передатчик USART (включается установкой бита в 1).

Примечание.

1. Если в процессе передачи сформировать 0-импульс в бите TE (сбросить в 0 с последующей установкой в 1), происходит передача преамбулы (формируется сигнал "линия свободна" - Idle line) вслед за текущим словом. Преамбула не формируется в smartcard режиме.

2. После установки бита TE делается задержка длительностью в 1 бит (длительностью 1/S, где S - скорость передачи данных) перед началом передачи данных.

RE: Receiver enable - включить приёмник USART (включается установкой бита в 1). После установки бита, приёмник начинает поиск старт-бита во входном сигнале.

RWU: Receiver wakeup - переводит USART в тихий режим. Этот бит устанавливается и сбрасывается программно, а также может сбрасываться аппаратно при обнаружении пробуждающей последовательности.

0: приёмник в активном режиме;

1: приёмник в тихом режиме.

Примечание.

1. Прежде чем установить бит RWU, USART должен получить байт данных, иначе он не сможет функционировать в тихом режиме с пробуждением при обнаружении свободной линии (Idle line).

2. В конфигурации с пробуждением при обнаружении адресной метки (бит WAKE==1), бит RWU не может быть программно модифицирован, пока установлен бит RXNE.

SBK: Send break - отправить Break посылку. Бит может быть установлен и сброшен программно. Его необходимо программно установить в 1 для формирования Break посылки, он будет сброшен аппаратно во время формирования stop-бита в Break фрейме.

0: Break-символ не передаётся;

1: Break-символ будет передан.

LINEN: LIN mode enable - включить режим LIN (включается установкой бита в 1). В режиме LIN имеется возможность отправлять и принимать синхронизирующую посылку Break.

STOP[1:0]: STOP bits - битовое поле задаёт количество используемых стоп-битов.

00: 1 стоп-бит;

01: 0.5 стоп-бита;

10: 2 стоп-бита;

11: 1.5 стоп-бита.

 

Таблица 5 – Формат регистра управления USART_CR2 (Control register 2)

 

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Reserved

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Res.

LINEN

STOP[1:0]

CLKEN CPOL CPHA LBCL

Res.

LBDIE LBDL

Res.

ADD[3:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw

 

Значение после сброса: 0x0000.

Примечание: биты CLKEN, CPOL, CPHA, LBCL; длительность стоп-битов 0.5 и 1.5 недоступны для UART4 и UART5.

CLKEN: Clock enable - включить выход SCLK (включается установкой бита в 1).

CPOL: Clock polarity - полярность тактового сигнала на выходе SCLK в синхронном режиме. Этот бит используется совместно с CPHA битом.

0: 0 на выходе SCLK в отсутствие передачи данных;

1: 1 на выходе SCLK в отсутствие передачи данных.

CPHA: Clock phase - фаза тактового сигнала на выходе SCLK в синхронном режиме.

0: первый захват данных происходит по первому перепаду тактового сигнала;

1: первый захват данных происходит по второму перепаду тактового сигнала.

Перепады тактового сигнала, по которым фиксируются данные, приходятся примерно на середину передаваемого (принимаемого) бита.

LBCL: Last bit clock pulse - разрешить тактовый импульс на выходе SCLK для последнего бита передаваемых данных в синхронном режиме.

0: тактовый импульс не формируется для последнего бита (старшего бита) во фрейме;

1: тактовый импульс формируется для последнего бита.

Биты CPOL, CPHA, LBCL не должны изменяться при включённом передатчике USART.

LBDIE: LIN break detection interrupt enable - разрешить прерывание при обнаружении Break посылки.

0: прерывание запрещено;

1: прерывание генерируется всякий раз, когда бит USART_SR.LBD==1.

LBDL: lin break detection length - дина детектируемой Break посылки.

0: обнаружение 10-битовой Break посылки;

1: обнаружение 11-битовой Break посылки.

ADD[3:0]: Address of the USART node - битовое поле, с помощью которого назначается адрес узла USART; используется для мультипроцессорной связи для пробуждения из тихого состояния при обнаружении адресной метки.

 

Таблица 6 – Формат регистра управления USART_CR3 (Control register 3)

 

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Reserved

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Reserved

ONEBITE CTSIE CTSE RTSE DMAT DMAR SCEN NACK HDSEL IRLP IREN EIE
rw rw rw rw rw rw rw rw rw rw rw rw

 

Значение после сброса: 0x0000.

Примечание: биты CTSIE, CTSE, RTS, SCEN, NACK недоступны в устройствах UART4 и UART5.

ONEBITE: One sample bit method enable - выбор метода сэмплирования входного сигнала.

0: используется трёхбитный метод;

1: используется однобитный метод; выбор этого метода отключает флаг обнаружения шума NF.

CTSIE: CTS interrupt enable - разрешить прерывание от CTS.

0: прерывание запрещено;

1: прерывание генерируется всякий раз, когда устанавливается в 1 бит USART_SR.CTS.

CTSE: CTS enable - включить контроль сигнала CTS.

0: отключить аппаратный контроль управления потоком CTS;

1: включить аппаратный контроль управления потоком CTS, передача нового фрейма может начаться только в случае, когда на входе nCTS установлен низкий уровень nCTS==0. На передачу текущего фрейма сигнал nCTS не влияет.

RTSE: RTS enable - включить управление сигналом RTS.

0: отключить аппаратный контроль управлением потоком посредством сигнала RTS.

1: разрешить прерывание от RTS, данные запрашиваются только при наличии свободного места в приёмном буфере - на выходе nRTS устанавливается 0, если данные могут быть приняты.

DMAT, DMAR - управление обменом с использованием DMA.

SCEN: Smartcard mode enable - включить смарт-карт режим (включается установкой бита в 1).

NACK: Smartcard NACK enable - в смарт-карт режиме включить передачу NACK (нет подтверждения) в случае ошибки чётности (включается установкой бита в 1).

HDSEL: Half-duplex selection - выбор полудуплексного режима (включается установкой бита в 1).

IRLP: IrDA low-power - выбор между нормальным и низкопотребляющим IrDA режимами:

0: нормальный режим;

1: режим с низким потреблением.

IREN: IrDA mode enable - включить режим IrDA (включается установкой бита в 1).

EIE: Error interrupt enable - разрешить прерывание в случае ошибки при мультибуферном обмене (генерировать прерывание при установке в регистре USART_SR флага FE - ошибка фрейма, ORE - переполнение, NF - шум). Мультибуферный обмен включается установкой в 1 бита USART_CR3.DMAR.

0: прерывания запрещены; 1: прерывание генерируется всякий раз, когда USART_CR3.DMAR==1 и в регистре USART_SR хотя бы один из флагов FE, ORE или NF установлен в 1.

 

Таблица 6 – Формат регистра защитного интервала и прескалера USART_GTPR (Guard time and prescaler register)

 

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

 

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

GT[7:0]

PSC[7:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

 

Значение после сброса: 0x0000.

Примечание: этот регистр недоступен в устройствах UART4 и UART5.

GT[7:0]: Guard time value - защитный интервал времени. Это битовое поле используется в смарт-карт режиме и задаёт время задержки перед установкой флага "Transmission Complete". Величина задаётся в количестве тактов с частотой, равной скорости передачи данных.

PSC[7:0]: Prescaler value - значение для предварительного делителя частоты; используется в режимах IrDA и смарт-карт; восьмибитовое значение определяет коэффициент деления для прескалера, который делит частоту системного тактового сигнала. Значение 0 зарезервировано и не должно использоваться.

Значение в обычном режиме IrDA: 1. Значения больше 1 используются в режимах с малым потреблением.

В смарт-карт режиме используется для обеспечения требуемой тактовой частоты; в этом режиме делитель определяется 5 младшими битами поля, значение делителя получается умножением поля на 2 (значение поля 1 соответствует делителю 2, 2 соответствует делителю 4 и т.д.).

 

Содержание отчета

 

Отчет по лабораторной работе должен содержать:

- титульный лист;

- название и цель работы;

- ответы на контрольные вопросы.

 

4 Контрольные вопросы

 

1) Назначение UART и USART.

2) Приведите схемы соединения устройств для обмена по UART и USART.

3) Опишите формат передачи данных по UART и USART.

4) Как осуществляется управление передачей по UART и USART?

5) Перечислите характеристики и сигналы интерфейса RS-232.

6) Приведите схему гальванической развязки устройств при подключении к COM-порту.

7) Опишите основные возможности USART в STM32.

8) Приведите и опишите функциональную схему USART в STM32.

9) Опишите структуру и назначение регистров USART в STM32. Приведите формат и назначение битов отдельного регистра USART в STM32 по заданию преподавателя.

 



2019-05-24 243 Обсуждений (0)
Регистры USART в микроконтроллерах STM32F100xx 0.00 из 5.00 0 оценок









Обсуждение в статье: Регистры USART в микроконтроллерах STM32F100xx

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (243)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.008 сек.)