关于STM32串口奇偶校验的问题

2019-07-21 00:46发布

以前都没用过奇偶校验,今天用了一下,发现问题了。  摘自手册中的一段:  偶校验:校验位使得一帧中的7或8个LSB数据以及校验位中’1’的个数为偶数。 
例如:数据=00110101,有4个’1’,如果选择偶校验(在USART_CR1中的PS=0),校验位将
是’0’。
奇校验:此校验位使得一帧中的7或8个LSB数据以及校验位中’1’的个数为奇数。
例如:数据=00110101,有4个’1’,如果选择奇校验(在USART_CR1中的PS=1),校验位将
是’1’。
传输模式:如果USART_CR1的PCE位被置位,写进数据寄存器的数据的MSB位被校验位替换
后发送出去(如果选择偶校验偶数个’1’,如果选择奇校验奇数个’1’)。如果奇偶校验失败,
USART_SR寄存器中的PE标志被置’1’,并且如果USART_CR1寄存器的PEIE在被预先设置的
话,中断产生。
注意红 {MOD}部分,虽然括号里的不太明白什么意思,不过按照前面说的,数据的MSB被校验位替换了,那发出去的数据不就错了? 实际用串口助手测试,STM32串口启用奇校验,串口助手也打开奇校验,STM32向串口发送“AT”结果串口助手接收窗口显示“刘”(不包括引号)。不知各位怎么看?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
布沙尼神甫
1楼-- · 2019-07-21 12:58
 精彩回答 2  元偷偷看……
djfkdjf
2楼-- · 2019-07-21 18:35
我有一个问题,STM32F1只有三种校验方式:无校验、奇校验和偶校验,没有常0和常1校验,不知道你们有没有什么解决方法,如果有源码就最好了
xyang18
3楼-- · 2019-07-21 22:06
好人 发表于 2014-12-2 10:34
奇偶校验是硬件完成,不用管过程。stm32用校验位时,数据位要选9位,8位会出错。

非常有用
旮旯旭
4楼-- · 2019-07-22 00:01
 精彩回答 2  元偷偷看……

一周热门 更多>