完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
各位大神好
我自己在做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); 在实际测试过程中发现设置为奇校验后,将计算机串口设置成奇偶校验都可以进行通信 好像校验位并没有产生实际的校验作用 实际的寄存器中我也跟过,对奇偶校验位也有设置 我就是想搞清楚到底是什么地方的问题 谢谢 |
|
相关推荐
9个回答
|
|
|
你的上位机支持奇偶校验吗
|
|
|
|
|
|
|
|
|
|
|
|
一般的串口调试工具都支持吧,比如SSCOM32。
|
|
|
|
|
|
|
|
|
|
|
|
实际上奇偶校验要互相匹配才能通讯吧,不匹配的时候串口送过来的是固定的数据还是通讯的数据?
|
|
|
|
|
|
仔细核对了STM8heSTM32的手册,发现STM32的串口状态寄存器在先读出USART_SR,再读出USART_DR寄存器后,所有的状态位被清除,所以在判断奇偶标志位错误的时候,应该在读取DR寄存器之前判断,从而判别奇偶校验的正确,这个小小的细节和以前用的MCU真的不一样,在使用STM32的时候,还得仔细阅读数据手册啊
|
|
|
|
|
|
我从来没有用过奇偶校验这个功能,也没有遇到过错误,首先如果错误了,奇偶校验成功了,那么系统会怎么做,是认为的重发,还是系统自动重发,收发器能够自动完成吗
|
|
|
|
|
|
确实是,以前没用过校验功能。最近用时才发现,需要打开校验错的中断才行。但还发现无校验时,串口调试助手随便设置无校验、奇校验或者偶校验都可以通信。
|
|
|
|
|
|
楼主你好,大部分的串口通讯软件都不判断校验位,你可以试试一个电脑差两个串口,交叉接好,用串口工具,不同的校验位打开,都是可以互相通讯的,最好的办法是买个逻辑分析仪,可以非常方便的查看通讯问题
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32F405驱动DS1302时钟模块,输出时间错乱该怎么排查?
2797 浏览 2 评论
stm32f405rgt6驱动DS1302ZN出现时间错乱问题
2403 浏览 1 评论
stm32用fsmc读取ad7606采集数据,数据不变,只有开发版复位才更新数据
2276 浏览 0 评论
2388 浏览 1 评论
1637 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 00:28 , Processed in 0.753564 second(s), Total 58, Slave 51 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2436