打印
[STM32F1]

STM32F103VET6串口通信奇偶校验

[复制链接]
4742|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chenwhao|  楼主 | 2016-2-29 10:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大神好
我自己在做STM32F103VET6串口通信的时候,发现几个问题启用奇偶校验位后,数据通信有点困惑
我的初始化代码如下:
  USART_InitStructure.USART_BaudRate = 9600;  //通信波特率为9600
  Comm.Flag = RX_WAIT;        
  USART_InitStructure.USART_WordLength = USART_WordLength_9b; //数据位9
  USART_InitStructure.USART_StopBits = USART_StopBits_1;//停止位1               
  USART_InitStructure.USART_Parity = USART_Parity_Odd ;//奇校验
  USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  USART_InitStructure.USART_Mode = USART_Mode_Rx|USART_Mode_Tx;
  USART_Init(USART2, &USART_InitStructure);
  USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);
  USART_ClearFlag(USART2, USART_FLAG_TC);
  USART_ITConfig(USART2,USART_IT_TC,ENABLE);
  USART_Cmd(USART2, ENABLE);

在实际测试过程中发现设置为奇校验后,将计算机串口设置成奇偶校验都可以进行通信
好像校验位并没有产生实际的校验作用
实际的寄存器中我也跟过,对奇偶校验位也有设置
我就是想搞清楚到底是什么地方的问题
谢谢
沙发
yklstudent| | 2016-2-29 11:19 | 只看该作者
你的上位机支持奇偶校验?

使用特权

评论回复
板凳
chenwhao|  楼主 | 2016-2-29 11:24 | 只看该作者
yklstudent 发表于 2016-2-29 11:19
你的上位机支持奇偶校验?

我就是用普通的笔记本的串口
用的串口精灵
换了好多的软件了

使用特权

评论回复
地板
yiyigirl2014| | 2016-2-29 11:42 | 只看该作者
[table=98%]
给推荐个串口助手,比较好用,QT编写的。


试试这个软件。


使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
chenwhao + 1 很给力!
5
yiyigirl2014| | 2016-2-29 11:42 | 只看该作者
[table=98%]
给推荐个串口助手,比较好用,QT编写的。


试试这个软件,这个比较好用,支持所有瘟都死系统。


使用特权

评论回复
6
chenwhao|  楼主 | 2016-2-29 12:27 | 只看该作者
yiyigirl2014 发表于 2016-2-29 11:42
试试这个软件,这个比较好用,支持所有瘟都死系统。

谢谢,我先试试看,如果有问题再请教

使用特权

评论回复
7
chenwhao|  楼主 | 2016-2-29 13:15 | 只看该作者

还是一样的,奇偶校验都能通信
没有区别

使用特权

评论回复
8
LearningASM| | 2016-2-29 13:40 | 只看该作者
一般的串口调试工具都支持吧,比如SSCOM32。

使用特权

评论回复
9
chenwhao|  楼主 | 2016-2-29 13:54 | 只看该作者
不是调试工具的问题
就是串口的问题
现在奇偶校验都能通信,实在想不出什么地方有问题,如何处理了

使用特权

评论回复
10
aerwa| | 2016-3-1 08:24 | 只看该作者
实际上奇偶校验要互相匹配才能通讯吧,不匹配的时候串口送过来的是固定的数据还是通讯的数据?

使用特权

评论回复
11
chenwhao|  楼主 | 2016-3-1 13:28 | 只看该作者
结合香水城的以前的帖子,仔细核对了STM8heSTM32的手册,发现STM32的串口状态寄存器在先读出USART_SR,再读出USART_DR寄存器后,所有的状态位被清除,所以在判断奇偶标志位错误的时候,应该在读取DR寄存器之前判断,从而判别奇偶校验的正确,这个小小的细节和以前用的MCU真的不一样,在使用STM32的时候,还得仔细阅读数据手册啊,特此结贴,谢谢大家:handshake

使用特权

评论回复
12
玄德| | 2016-3-1 14:01 | 只看该作者

LZ设置为9位数据?

使用特权

评论回复
13
yiyigirl2014| | 2016-3-8 23:06 | 只看该作者
我从来没有用过奇偶校验这个功能,也没有遇到过错误,首先如果错误了,奇偶校验成功了,那么系统会怎么做,是认为的重发,还是系统自动重发,收发器能够自动完成吗

使用特权

评论回复
14
RF、龙龙| | 2016-9-29 12:13 | 只看该作者
大哥   你的问题解决了吗     小弟同求   谢谢

使用特权

评论回复
15
guoxiao69| | 2017-4-17 16:44 | 只看该作者
确实是,以前没用过校验功能。最近用时才发现,需要打开校验错的中断才行。但还发现无校验时,串口调试助手随便设置无校验、奇校验或者偶校验都可以通信。

使用特权

评论回复
16
qq3147106| | 2018-11-28 14:37 | 只看该作者
楼主你好,大部分的串口通讯软件都不判断校验位,你可以试试一个电脑差两个串口,交叉接好,用串口工具,不同的校验位打开,都是可以互相通讯的,最好的办法是买个逻辑分析仪,可以非常方便的查看通讯问题,如果还有不明白可联系QQ3147106

使用特权

评论回复
17
dingbo95| | 2018-11-29 12:41 | 只看该作者
找个有权威性的上位机

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

7

帖子

0

粉丝