STM32 STM32VL Discovery STM32F100RBT6 (урок 9) USART, теория

| 13.03.2016

STM32 STM32VL Discovery STM32F100RBT6 (урок 9) USART, теория

Main

Общее
USART – Универсальный синхронный – асинхронный приемопередатчик. Это узел вычислительных устройств, предназначенный для организации связи с другими цифровыми устройствами. Преобразует передаваемые данные в последовательный вид так, чтобы было возможно передать их по цифровой линии другому аналогичному устройству. Метод преобразования хорошо стандартизован и широко применяется в компьютерной технике.

Передача данных в UART осуществляется по одному биту в равные промежутки времени. Этот временной промежуток определяется заданной скоростью UART и для конкретного соединения указывается в бодах (что в данном случае соответствует битам в секунду). Существует общепринятый ряд стандартных скоростей: 300; 600; 1200; 2400; 4800; 9600; 19200; 38400; 57600; 115200; 230400; 460800; 921600 бод. Скорость (S, бод) и длительность бита (T, секунд) связаны соотношением T = 1/S . Скорость в бодах иногда называют сленговым словом битрейт.
Помимо собственно информационного потока, UART автоматически вставляет в поток синхронизирующие метки, так называемые стартовый и стоповый биты. При приёме эти лишние биты удаляются из потока. Обычно стартовый и стоповый биты обрамляют один байт информации (8 бит), однако встречаются реализации UART, которые позволяют передавать по 5, 6, 7, 8 или 9 бит. Обрамленные стартом и стопом биты являются минимальной посылкой. Некоторые реализации UART позволяют вставлять два стоповых бита при передаче для уменьшения вероятности рассинхронизации приёмника и передатчика при плотном трафике. Приёмник игнорирует второй стоповый бит, воспринимая его как короткую паузу на линии.

Принято соглашение, что пассивным (в отсутствие потока данных) состоянием входа и выхода UART является логическая 1. Стартовый бит всегда логический 0, поэтому приёмник UART ждёт перепада из 1 в 0 и отсчитывает от него временной промежуток в половину длительности бита (середина передачи стартового бита). Если в этот момент на входе всё ещё 0, то запускается процесс приёма минимальной посылки. Для этого приёмник отсчитывает 9 битовых длительностей подряд (для 8-битных данных) и в каждый момент фиксирует состояние входа. Первые 8 значений являются принятыми данными, последнее значение проверочное (стоп-бит). Значение стоп-бита всегда 1, если реально принятое значение иное, UART фиксирует ошибку.

Для формирования временных интервалов передающий и приёмный UART имеют источник точного времени (тактирования). Точность этого источника должна быть такой, чтобы сумма погрешностей (приёмника и передатчика) установки временного интервала от начала стартового импульса до середины стопового импульса не превышала половины (а лучше хотя бы четверти) битового интервала. Для 8-битной посылки 0,5/9,5 = 5 % (в реальности не более 3 %). Поскольку эта сумма ошибок приёмника и передатчика плюс возможные искажения сигнала в линии, то рекомендуемый допуск на точность тактирования UART — не более 1,5 %.
Поскольку синхронизирующие биты занимают часть битового потока, то результирующая пропускная способность UART не равна скорости соединения. Например, для 8-битных посылок формата 8-N-1синхронизирующие биты занимают 20 % потока, что для физической скорости 115 200 бод даёт битовую скорость данных 92 160 бит/с или 11 520 байт/с.

Устройство USARTUSART_Hardware_flow_control_between_two_USARTs

Для обеспечения связи устройств по USART, у нас есть ряд ножек с зарезервированными именами и стандартизированным функционалом.
Tx – Передача данных (ножка передатчика)
По этой линии мы отправляем данные от передающего устройства в принимающее. Из этого следует, что эту ножку необходимо соединить с ножкой Rx на принимающей стороне.
Rx – Прием данных (ножка приемника)
По этой линии мы принимаем данные от передающего устройства. Из этого следует, что эту ножку необходимо соединить с ножкой Tx на отправляющей стороне.
Ck – Синхронизация передачи данных (ножка синхронизации)
Эта ножка нужна для обеспечения синхронной передачи данных. Во время передачи данных, передатчик помимо формирования данных на ножке Tx формирует на ножке Ck стробы синхронизации, нужные для определения моментов, когда приемнику следует считывать данные. Таким образом управление ножкой Ck это работа передатчика, а у приемника эта ножка является входом.
RTS – Request To Send (запрос передачи)(ножка разрешения передачи данных)
Дело в том, что внутреннее устройство подключаемого нами устройства по UART может быть не всегда точно известно. И вполне вероятна ситуация что входной буфер приемника заполнился и принимать уже ничего не может, так как в данный момент хранить данные не где. Для того, чтобы приемник имел возможность сказать передающему устройству : стой!, подожди!, не надо мне слать данные!, нужна эта ножка RTS у приемника, а у передатчика соответственно есть ножка которая называется CTS, которая является входом и соединяется с RTS. Таким образом, передатчик прежде чем передать данные смотрит на ножку RTS приемника, но так как она должна быть соединена с входом передатчика CST, то можно сказать, что происходит опрос состояния входа CST передатчика.
CST - Clear To Send (очищен для передачи)
Собственно вход передатчика, на который необходимо подключить выход передатчика RTS. Если подключенное устройство не выставит на этом входе сигнал готовности приема данных, то передача не начнется.

Где USART в нашем MK (STM32F100RBT6) ?
В нашем микроконтроллере есть несколько USART. USART1 – находится на шине APB2, а два других USART2 и USART3 на шине APB1. В других микроконтроллерах серии можно встретить большее число USART, но можно обнаружить, что у некоторых будет урезанный функционал.USART_mode_configuration
Глядя на картинку ниже, можно определить, какие ножки определенного USART на каком порту находятся. Необходимо не забывать про возможность ремапа, то есть изменение ножки, которую может взять под контроль блок USART.USART_PinsDiscr

USART character descriptionUSART_WordLength_Programming

Теперь пришло время немного пояснить как выглядят возможные осциллограммы передачи данных. Полезно знать как именно на физическом уровне происходит передача данных от одного устройства в другое по средством USART. Мы будем говорить о возможностях именно нашего блока USART представленного в микроконтроллере STM32F100RBT6. Есть несколько вариантов как будет выглядеть осциллограмма передачи данных.
1) BAUD RATE (скорость обмена)
Этот параметр определяет какое время выделяется на передачу одного бита. Увеличиваем скорость значит время уменьшается.
2) PARITY BIT (контроль четности – паритет)
Это не обязательный бит, который можно включать в посылки с целью увеличении надежности передачи данных. Этот бит говорит четное или не четное количество единиц в передаваемой посылке. Есть еще вариант настроит обратную ситуацию и назвать её бит не четности.
3) STOP BIT (стоп бит)
Это обязательный бит, но есть небольшая вариативность его использования. Вот варианты (половина, один, полтора, два):[0,5 / 1 / 1,5 / 2]
4) CLOCK POLARITY  (полярность линии синхронизации)
Этот параметр имеет место только в синхронном режиме передачи данных и определяет лог уровень линии синхронизации в свободном состоянии.
4) CLOCK PHASE  (фаза линии синхронизации)
Этот параметр имеет место только в синхронном режиме передачи данных и определяет лог уровень линии синхронизации в свободном состоянии.
5) LAST BIT CLOCK PULSE (импульс на последний бит)
Это относится опять к синхронной реализации и можно настроить делать ли такт синхронизации на последний бит.

Различные хитрые варианты использования USART
Есть несколько вариантов немного не стандартного использования нашего блока USART. Привычным или обычным видом использования я называю все то, о чем речь шла выше, но другие хитрые варианты использования будут совсем скромно описаны. Эти режимы работы требуют отдельного рассмотрения и приведения соответствующего кода.

Multiprocessor communication
Этот режим позволяет сделать некую сеть устройств подключенных таким образом что есть один мастер и куча рабов. Но для того чтобы нужный раб понял что мастер желает общаться именно с ним, есть механизм адресации конкретного раба. Есть хитрость работы в этом режиме которая заключается в том, что мы можем передавать или данные или адрес. И эти пакеты будут отличаться тем, что если самый старший бит 1, то это адрес, а 0 это данные. Теперь можно вспомнить про 9-ти битный режим работы и он как раз окажется весьма удобным для нас. После получения байта с адресом(4-е бита), выполняется проверка адреса, и если это не наш пакет — то все остальное до следующего пакета с адресом — игнорируется. Причем игнорируется аппаратно — прерывания не возникает. Все это счастье настраивается рядом битов, описание которых будет в разделе о регистрах.

USART_CR1 –  ( WAKE, RWU ),  USART_CR2 -  ( ADD )
На картинке два режима. сначала WAKE = 0 // потом WAKE = 1.USART_Mute_mode_using_Idle_line_detection USART_Mute_mode_using_address_mark_detection

LIN (local interconnection network) mode
Это стандарт промышленной сети, разработанный консорциумом европейских автопроизводителей и других известных компаний, включая Audi AG, BMW AG, Daimler Chrysler AG, Motorola Inc., Volcano Communications Technologies AB, Volkswagen AG и VolvoCar Corporation. Протокол LIN предназначен для создания дешёвых локальных сетей обмена данными на коротких расстояниях. Он служит для передачи входных воздействий, состояний переключателей на панелях управления и так далее, а также ответных действий различных устройств, соединённых в одну систему через LIN, происходящих в так называемом «человеческом» временном диапазоне (порядка сотен миллисекунд).

Структура шины представляет собой нечто среднее между I2C и RS-232 или можно вспомнить 1-wire. Шина подтягивается вверх к источнику питания через резистор в каждом узле и вниз через открытый коллекторный переход приемопередатчика, как в I2C. Но вместо стробирующей линии, каждый передаваемый байт обрамляется стартовым и стоповым битами и передается асинхронно, как в RS-232.image001USART synchronous mode
Этот режим упоминался выше и все же не является чем то из ряда вон, но все же решил определить его описание в эту часть статьи. Этот режим работы на самом деле очень легко понять если вы знакомы с SPI. Дело в том, что синхронный режим работы USART превращается как бы в SPI. Точнее становится очень на него похожим и появляется возможность подключать устройства с SPI интерфейсом. На картинке ниже видим поясняющие осциллограммы для быстрого понимания синхронного режима передачи данных по USART. Приведем картинку только для варианта 8-и битного режима передачи данных.USART_data_clock_timing_diagram_M0

Single-wire half-duplex communication
Вот супер режим, позволяющий работать в полу дупликсе. Мы можем уменьшить число соединительных линий, сказав, что в нашей системе мы все операции перемещения данных будем делать друг за другом. Дело в том, что ранее мы как бы в один момент перемещали данные как в том, так и в другом направлении. Этим можно пожертвовать и сделать одну универсальную ножку, способную как передавать, так и принимать. В нашем микроконтроллере такой маневр возможен и теперь у нас Single-wier режим работы (один провод). Этот режим позволяет легко подключать устройства с интерфейсом 1-wier.Simplex-half-fullSmartcard mode 
Очень интересный способ использования USART. Мы теперь можем попробовать наладить связь с смарт картами. В нашем случае поддерживаются контактные смарт карты стандарта ISO 7816-3. Наиболее массовые контактные смарткарты — это SIM-карты сотовой связи, таксофонные карты, современные банковские карточки. Таким образом берем карточку находим его распиновку и подаем питание и подключаем наш UART к выводам Tx и Rx соответственно. Конечно же не забыв настроить режим работы с смарт картами. Интересно, что в описании от stm есть абзац про то, что смарт карту можно подключить в режиме полу дуплексе.

IrDA SIR ENDEC block
Вот так сюрприз, неожиданная находка поддержки функционала появившегося в мобильных телефонах и исчезнувшая на моих глазах. Системы передачи данных по инфракрасному каналу связи появились в связи с необходимостью ведения обмена данными между переносными компьютерами и периферийным оборудованием. IrDA стандарт является дешевым и практическим протоколом передачи данных по инфракрасному каналу связи. Есть два режима работы, это обычный и энергосберегающий.

Из картинки выше видно во что превращается на выходе посылка по USART, когда мы используем IrDA модуль. По IrDA стандарту ИК импульс начинается в центре битового периода и имеет длительность 3/16 длительности битового периода.USART_IrDA_data_modulation_3_16Continuous communication using DMA
Это то с чем будем знакомиться когда изучим устройство DMA в нашем мк и тогда будут идти статьи про использования этого мощного инструмента во всех или почти всех периферийных блоках в составе нашего микроконтроллера. Просто пока надо сказать что DMA это плок позволяющий разгрузить процессор и позволить определенному механизму перемещать данные миную процессор.

Прерывания (interrupts)
Разное может произойти в процессе приема-передачи данных по USART. Для полного и надежного контроля за процессом передачи данных мы можем реагировать определенным образом на все доступные прерывания. Важно увидеть организацию прерываний в виде дерева, из чего следует, что в прерывании надо будет проверять, что именно случилось читая статусный регистр, содержащий флаги прерываний. В документации есть удобная табличка содержащее описание прерывания – выставляемый флаг – бит разрешения этого прерывания.USART_interrupt_requests

USART_interrupt_mapping_diagram

Ссылки на комплектующие:
Отладочная плата: STM32VL Discovery (ссылка)
Микроконтроллер: STM32F100RBT6 (
ссылка)
Провод USB :  (ссылка)
Преобразователь USB-UART : FTDI (ссылка)

Макетная плата: (ссылка)
Блок питания на 12V (ссылка)
Преобразователь 12V  в  3,3/5V (ссылка)
Перемычки для макетной платы (ссылка)

Регистры (USART)

USART_SR  [0x00c0]USART_SRОписание: Статусный регистр, состоящий из различных битов – флагов, которые устанавливаются аппаратно когда что-то значимое происходит.
Биты:
Bit 9    CTS:    CTS flag
Описание: Этот бит устанавливается аппаратно в случае, когда мы заметили изменение лог уровня на входе CTS, при условии что этот функционал нами включен, Бит CTSE. Очищается этот бит программно, записью нолика. Может быть настроено прерывание по этому событию, CTSIE=1 в регистре USART_CR3.
0:  Не замечено изменение лог уровня на входе CTS.
1:  Замечено изменение лог уровня на входе CTS.

Bit 8    LBD:    LIN break detection flag
Описание: 
Этот бит устанавливается аппаратно в случае, когда мы работая в режиме LIN обнаружили Break фрейм(это особый тип посылки выглядящий как огромный ноль). Очищается этот бит программно, записью нолика. Может быть настроено прерывание по этому событию, LBDIE=1 в регистре USART_CR2. 
0:  Не обнаружили Break
1:  Обнаружили Break

Bit 7    TXE:    Transmit data register empty
Описание: 
Этот бит устанавливается аппаратно в случае, когда регистр на отправку TDR опустел из-за того что его содержимое было перемещено в сдвиговый регистр. Очищается аппаратно путем записи значения в регистр USART_DR. Может быть настроено прерывание по этому событию, TXEIE=1 в регистре USART_CR1. 
0:  Данные не перемещены в сдвиговый регистр
1:  Данные перемещены в сдвиговый регистр

Bit 6    TС:    Transmission complete
Описание: 
Этот бит устанавливается аппаратно в случае, когда передача значения из сдвигового регистра закончилась, также должен быть установлен разрешающий бит TXE=1. . Может быть настроено прерывание по этому событию, TCIE=1 в регистре USART_CR1. Очищается этот бит программно, записью нолика
0:  Данные не отправлены
1:  Данные отправлены

Bit 5    RXNE:    Read data register not empty
Описание: 
Этот бит устанавливается аппаратно в случае, когда значение из сдвигового регистра перемещено в USART_DR. Очищается этот флаг чтением регистра USART_DR или также можно очистить записью нолика. Может быть настроено прерывание по этому событию, RXNEIE=1 в регистре USART_CR1. 
0:  Данные не перемещены в регистр USART_DR
1:  Данные перемещены в регистр USART_DR

Bit 4    IDLE:    IDLE line detected
Описание: 
Этот бит устанавливается аппаратно в случае, когда мы зафиксировали состоянии линии idle – (значит линия свободна, за время фрейма ничего не передавалось). Может быть настроено прерывание по этому событию, IDLEIE=1 в регистре USART_CR1. Очищается этот флаг следующей последовательностью – чтением регистра USART_SR потом читаем USART_DR.
0:  Не было замечено idle состояния линии
1:  Было замечено idle состояния линии

Bit 3    ORE:    Overrun error
Описание: 
Этот бит устанавливается аппаратно в случае, когда значение прочитано в сдвиговый регистр, а в регистре данных есть данные, поэтому это потенциально опасная ситуация, ведь если мы получим еще байт до того как освободим регистр данных USART_DR, то данные в сдвиговом регистре затрутся.  Может быть настроено прерывание по этому событию, RXNEIE=1 в регистре USART_CR1. Очищается этот флаг следующей последовательностью – чтением регистра USART_SR потом читаем USART_DR.
0:  Нет описанной ситуации
1:  Произошла описанная ситуация

Bit 2    NE:    Noise error flag
Описание: 
Этот бит устанавливается аппаратно в случае, когда выявлен шум на линии приема данных во время получения фрейма. Очищается этот флаг следующей последовательностью – чтением регистра USART_SR потом читаем USART_DR.
0:  Не найдено шума
1:  Найден шум

Bit 1    FE:    Framing error
Описание: 
Этот бит устанавливается аппаратно в случае, когда выявлена рассинхронизация, возможная по ряду причин. Другими словами это означает, что мы не можем верить данным в регистре принятых данных. Очищается этот флаг следующей последовательностью – чтением регистра USART_SR потом читаем USART_DR.
0:  Нет ошибки фрейма
1:  Выявлена ошибка фрейма

Bit 0    PE:    Parity error
Описание: 
Этот бит устанавливается аппаратно в случае, когда выявлено несоответствие бита паритета и количества единиц в передаваемых битах.  Очищается этот флаг следующей последовательностью – чтением регистра USART_SR потом читаем USART_DR. Программа пользователя должна учесть, что надо сначала дождаться установки бита RXNE до того как очищать бит PE. Может быть настроено прерывание по этому событию, PEIE=1 в регистре USART_CR1.
0:  Нет ошибки паритета
1:  Выявлена ошибка паритета

USART_DR [неопределенно]USART_DRОписание: Регистр данных.
Биты:
Bits 8:0    DR[8:0]:    Data value
Описание: Это регистр данных, который на самом деле является двумя регистрами. Просто операции записи и чтения происходят над разными регистрами. Такой подход удобен, ведь теперь мы можем использовать одно имя регистра записывая данные на отправку и читать полученные данные.

USART_BRR  [0x0000]USART_BRRОписание: Регистр определяющий скорость приемопередатчика Baud rate.
Биты:
Bits 15:4    DIV_Mantissa[11:0]:    mantissa of USARTDIV
Описание: Это целая часть числа.

Bits 3:0    DIV_Fraction[3:0]:    fraction of USARTDIV
Описание: Это дробная часть числа.

Берем формулу : USARTDIV  =  (F / BAUD  )
Значит хотим скорость 9600 , а частота шины, на которой стоит USART допустим 12 MGz.
USARTDIV  =  (F / BAUD  )  =  ( 12 000 000/ 9600  )  =  1250  == ox4E2
Кладем это число как есть в регистр USART_BRR , то есть получится DIV_Mantissa = 0x4E  , а  в DIV_Fraction = 0×2

** Глядя в даташит можно себя запутать, и я не совсем уверен что именно так формируется число для генерирования определенной скорости, но на момент, когда будет видео по этой статье я проверю при помощи осциллографа, какие скорости получаются при различных числах в DIV_Mantissa и DIV_Fraction

USART_CR1  [0x0000]USART_CR1Описание: Регистр конфигурационный под номером один, состоящий из различных битов – настройки, которые нужно установить для достижения определенного режима работы модуля USART.
Биты:
Bit 13    UE:    USART enable
Описание: Этот бит включения выключения нашего модуля. Этот бит очищается и устанавливается программно.
0:  Выключаем.
1:  Включаем.

Bit 12    M:    Word length
Описание: 
Этот бит определяет количество данных в фрейме. Этот бит очищается и устанавливается программно. 
0:  8 бит данных
1:  9 бит данных

Bit 11    WAKE:    Wakeup method
Описание: 
Этот бит определяет каким образом мы хотим переходить из режима игнорирования фреймов в нормальный режим приема данных. Этот бит очищается и устанавливается программно. 
0:  По обнаружению idle состояния на линии
1:  По обнаружению своего адреса (случай сети из USART)

Bit 10    PCE:    Parity control enable
Описание: 
Этот бит определяет добавляем мы или нет бит паритета в фрейм, причем это актуально как для передатчика, так и для приемника. Этот бит очищается и устанавливается программно. 
0:  Нет бита паритета
1:  Есть бит паритета

Bit 9    PS:    Parity selection
Описание: 
Этот бит определяет какой именно тип паритета мы выбрали для  фрейма, естественно имеет смысл если мы добавили паритет в фрейм. Этот бит очищается и устанавливается программно. 
0:  Even – Контроль на четность
1:  Odd –  Контроль на не четность

Bit 8    PEIE:    PE interrupt enable
Описание: 
Этот бит разрешения прерывания, когда бит PE=1, что говорит об ошибке паритета. Этот бит очищается и устанавливается программно. 
0:  Запретить
1:  Разрешить

Bit 7    TXEIE:    TXE interrupt enable
Описание: 
Этот бит разрешения прерывания, когда бит TXE=1, что говорит о  том, что регистр данных пуст так как его содержимое было перемещено в сдвиговый регистр для отправки. Этот бит очищается и устанавливается программно. 
0:  Запретить
1:  Разрешить

Bit 6    TCIE:    Transmission complete interrupt enable
Описание: 
Этот бит разрешения прерывания, когда бит TC=1, что говорит о  том, что сдвиговый регистр пуст, что означает окончание передачи данных. Этот бит очищается и устанавливается программно. 
0:  Запретить
1:  Разрешить

Bit 5    RXNEIE:    RXNE interrupt enable
Описание: 
Этот бит разрешения прерывания, когда бит ORE=1  или  RXNE=1, что говорит о  том, что нам пришли данные и надо их читать из регистра данных. Либо просто пришли данные либо данные мы забыли вычитать, а нам начинают передавать ещё. Два варианта причины, но решение одно, поэтому одно прерывание. Этот бит очищается и устанавливается программно. 
0:  Запретить
1:  Разрешить

Bit 4    IDLEIE:    IDLE interrupt enable
Описание: 
Этот бит разрешения прерывания, когда бит IDLE=1, что говорит о  том, что мы обнаружили idle состояние линии. Этот бит очищается и устанавливается программно. 
0:  Запретить
1:  Разрешить

Bit 3    TE:    Transmitter enable
Описание: 
Этот бит разрешения работы передатчика, Tx. Этот бит очищается и устанавливается программно. 
0:  Запретить
1:  Разрешить

Bit 2    RE:    Receiver enable
Описание: 
Этот бит разрешения работы приемника, Rx. Этот бит очищается и устанавливается программно. 
0:  Запретить
1:  Разрешить

Bit 1    RWU:    Receiver wakeup
Описание: 
Этот бит весьма хитрый. Он означает в каком режиме находится наш USART из двух возможных. Есть обычный режим работы, а другой режим позволяет игнорировать данные на линии. Этот бит может быть изменен аппаратно нашим модулем в определенном режиме работы. Это полезно когда мы хотим сделать сеть из USART устройств. Также изменять этот бит можно программно. 
0:  active mode – Обычный режим
1:  mute mode – Режим игнорирования

Bit 0    SBK:    Send break
Описание: 
Этот бит используется для отправки break фрейма. Этот бит очищается и устанавливается программно. 
0:  Не отправлять
1:  Отправить

 

USART_CR2  [0x0000]USART_CR2Описание: Регистр конфигурационный под номером два, состоящий из различных битов – настройки, которые нужно установить для достижения определенного режима работы модуля USART.
Биты:
Bit 14    LINEN:    LIN mode enable
Описание: Этот бит включения выключения режима LIN. Этот бит очищается и устанавливается программно.
0:  Выключаем.

1:  Включаем.

Bit 13:12    STOP:    STOP bits
Описание: 
Эти биты определяют количество стоп битов в фрейме. Эти биты очищаются и устанавливаются программно. 
00: 1 Stop bit
01: 0.5 Stop bit
10: 2 Stop bits
11: 1.5 Stop bit

Bit 11    CLKEN:    Clock enable
Описание: 
Этот бит включения ножки синхронизации CK. Этот бит очищается и устанавливается программно. 
0:  Отключить ножку CK
1:  Включить ножку CK

Bit 10    CPOL:    Clock polarity
Описание: 
Этот бит определяет полярность линии CK в синхронном режиме работы USART. Это один из двух бит, которые определяют поведение линии CK. Этот бит очищается и устанавливается программно. 
0:  Свободное состояние линии это ноль
1:  Свободное состояние линии это единица

Bit 9    CPHA:    Clock phase
Описание: 
Этот бит определяет полярность линии CK в синхронном режиме работы USART. Это один из двух бит, которые определяют поведение линии CK. Этот бит очищается и устанавливается программно. 
0:  Свободное состояние линии это ноль
1:  Свободное состояние линии это единица

Bit 8    LBCL:    Last bit clock pulse
Описание: 
Этот бит определяет нужен ли последний импульс синхронизации  в синхронном режиме работы USART. Этот бит очищается и устанавливается программно. 
0:  Не делать 
1:  Делать

Bit 6    LBDIE:    LIN break detection interrupt enable
Описание: 
Этот бит разрешения прерывания, когда бит LBD=1, что говорит о  том, что мы обнаружили break фрейм. Это актуально для работы в режиме LIN. Этот бит очищается и устанавливается программно. 
0:  Запретить
1:  Разрешить

Bit 5    LBDL:    lin break detection length
Описание: 
Этот бит определяет длину сигнала break  в режиме работы LIN. Этот бит очищается и устанавливается программно. 
0: 10 bit break detection — 10 Бит
1: 11 bit break detection  –  11 Бит

Bit 3:0    ADD[3:0]:    Address of the USART node
Описание: 
Этот набор бит определяет адрес нашего устройства, это используется в определенном формате использования нашего модуля для создания сети. Этот адрес используется мастером для общения с конкретным рабом. Этот бит очищается и устанавливается программно. 

 

USART_CR3  [0x0000]USART_CR3Описание: Регистр конфигурационный под номером три, состоящий из различных битов – настройки, которые нужно установить для достижения определенного режима работы модуля USART.
Биты:
Bit 10    CTSIE:    CTS interrupt enable
Описание: Этот бит разрешения прерывания, когда бит CTS=1, что говорит о  том, что мы заметили изменение лог уровня на входе CTS. Этот бит очищается и устанавливается программно.
0:  Запретить
1:  Разрешить

Bit 9    CTSE:    CTS enable
Описание: 
Этот бит разрешает или запрещает работу функционала ножки CTS, другими словами это означает что наш блок USART берет под контроль вход CTS или нет. Этот бит очищается и устанавливается программно. 
0:  Запретить
1:  Разрешить

Bit 8    RTSE:    RTS enable
Описание: 
Этот бит разрешает или запрещает работу функционала ножки RTS, другими словами это означает что наш блок USART берет под контроль вход RTS или нет. Этот бит очищается и устанавливается программно. 
0:  Запретить
1:  Разрешить

Bit 7    DMAT:    DMA enable transmitter
Описание: 
Этот бит разрешает или запрещает работу функционала DMA по отношению к нашему USART блоку [ разрешение передачи ]. Этот бит очищается и устанавливается программно. 
0:  Запретить
1:  Разрешить

Bit 6    DMAR:    DMA enable receiver
Описание: 
Этот бит разрешает или запрещает работу функционала DMA по отношению к нашему USART блоку [ разрешение приема ]. Этот бит очищается и устанавливается программно. 
0:  Запретить
1:  Разрешить

Bit 5    SCEN:    Smartcard mode enable
Описание: 
Этот бит разрешает или запрещает работу функционала Smartcard. Этот бит очищается и устанавливается программно.
0:  Запретить
1:  Разрешить

Bit 4    NACK:    Smartcard NACK enable
Описание: 
Этот бит разрешает или запрещает передачи ошибки паритета для Smartcard. Этот бит очищается и устанавливается программно.
0:  Запретить
1:  Разрешить

Bit 3    HDSEL:    Half-duplex selection
Описание: 
Этот бит разрешает или запрещает работу в режиме полу дуплекса. Этот бит очищается и устанавливается программно.
0:  Запретить
1:  Разрешить

Bit 2    IRLP:    IrDA low-power
Описание: 
Этот бит определяет режим работы irDA, этот бит актуален, если собственно этот вариант конфигурации USART используется. Этот бит очищается и устанавливается программно.
0: Normal mode  – Нормальный режим
1: Low-power mode — Режим пониженного потребления

Bit 1    IREN:    IrDA mode enable
Описание: 
Этот бит разрешает или запрещает работу в режиме irDA. Этот бит очищается и устанавливается программно.
0:  Запретить
1:  Разрешить

Bit 0    EIE:   Error interrupt enable
Описание: 
Этот бит разрешает или запрещает прерывания в случае выявления ошибки фрейма == ( FE , ORE , NE ). Этот бит очищается и устанавливается программно.
0:  Запретить
1:  Разрешить

 

USART_GTPR  [0x0000]USART_GTPRОписание: Регистр дополнительных настроек для режимов работы Smartcard  и  irDA.
Биты:
Bits 15:8    GT[7:0]:    Guard time value
Описание: Этот что-то зачем-то для Smartcard.

Bits 7:0    PSC[7:0]:    Prescaler value
Описание: Этот что-то зачем-то для irDa.



Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *