реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> STM32 USART Parity processing, размещение бита чётности
sonycman
сообщение Jan 2 2009, 19:23
Сообщение #1


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Судя по мануалу к STM32F10ххВ:

Data register (USART_DR)

Bits 8:0 DR[8:0]: Data value.
Contains the Received or Transmitted data character, depending on whether it is read from
or written to.
---
When transmitting with the parity enabled (PCE bit set to 1 in the USART_CR1 register), the
value written in the MSB (bit 7 or bit 8 depending on the data length) has no effect
because
it is replaced by the parity.
When receiving with the parity enabled, the value read in the MSB bit is the received parity
bit
.

Получается, с включенным контролем чётности невозможно передавать данные в 9-ти битном формате, так как девятый бит заменяется битом чётности?
Ну это ладно.
Но вот второе - ну зачем мне бит чётности нужен в виде MSB? Там же аппаратный контроль!

Получается, чтобы принимать байты с контролем, надо устанавливать ширину 9 бит?
Go to the top of the page
 
+Quote Post
Lelikk
сообщение Jan 7 2009, 13:51
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 81
Регистрация: 15-12-07
Из: Москва
Пользователь №: 33 326



Может быть вам он и не нужен, до даже для аппаратного контроля он должен как-то передаваться.
Кстати, 9-ти битный формат, это какая-то экзотика: 5, 7 или 8 обычно.

Цитата(sonycman @ Jan 2 2009, 22:23) *
Получается, с включенным контролем чётности невозможно передавать данные в 9-ти битном формате, так как девятый бит заменяется битом чётности?
Ну это ладно.
Но вот второе - ну зачем мне бит чётности нужен в виде MSB? Там же аппаратный контроль!

Получается, чтобы принимать байты с контролем, надо устанавливать ширину 9 бит?
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jan 7 2009, 17:00
Сообщение #3


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(Lelikk @ Jan 7 2009, 17:51) *
Может быть вам он и не нужен, до даже для аппаратного контроля он должен как-то передаваться.

Конечно, должен. Дополнительным битом за словом данных.
А у ST он просто замещает MSB слова данных.

Не знаю, может, другие фирмы тоже так делают, просто в доках к девайсам по-другому это описывают?
В принципе, это не проблема, конечно. Интересно было... smile.gif
Go to the top of the page
 
+Quote Post
Lelikk
сообщение Jan 8 2009, 07:47
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 81
Регистрация: 15-12-07
Из: Москва
Пользователь №: 33 326



Цитата(sonycman @ Jan 7 2009, 20:00) *
Конечно, должен. Дополнительным битом за словом данных.
А у ST он просто замещает MSB слова данных.

Не знаю, может, другие фирмы тоже так делают, просто в доках к девайсам по-другому это описывают?
В принципе, это не проблема, конечно. Интересно было... smile.gif


У NXP этот бит например просто не виден в регистре данных.
Просто ST зачем-то показала его на обозрение, чем и вызывает смущение.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 8 2009, 08:10
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(sonycman @ Jan 2 2009, 22:23) *
Но вот второе - ну зачем мне бит чётности нужен в виде MSB? Там же аппаратный контроль!

Аппаратный-то контроль почти везде, только наиболее часто в железе данные отдельно - ошибки отдельно. При этом те-же данные ,например, буферизирубтся в FIFO, а флаги ошибок - нет. В результате признак ошибки делокализуется. Только изредка (типа Am186) встречается действительно продвинутое железо UART.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jan 8 2009, 11:28
Сообщение #6


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(zltigo @ Jan 8 2009, 12:10) *
Аппаратный-то контроль почти везде, только наиболее часто в железе данные отдельно - ошибки отдельно. При этом те-же данные ,например, буферизирубтся в FIFO, а флаги ошибок - нет. В результате признак ошибки делокализуется. Только изредка (типа Am186) встречается действительно продвинутое железо UART.

То есть наоборот, это признак продвинутого железа? Хм...
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 11:38
Рейтинг@Mail.ru


Страница сгенерированна за 0.0141 секунд с 7
ELECTRONIX ©2004-2016