打印
[STM32H7]

STN32H750串口接收最后一个字符错误

[复制链接]
1090|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
l21s12w|  楼主 | 2022-6-24 10:00 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
STM32H750 在做串口通信时,接收出现异常
工作条件:
STM32H750做MODBUS主站, 通信波特率9600,8,N,1;
某仪表做从站通信,通信9600,8,N,1, 实际工作波特率9700.
主站发送数据 01 03 00 00 00 02 C4 0B
从站正常应答 01 03 04 02 B9 01 40 2A 0E;  实际应答时,在最后一个字节的停止位后紧跟一个7us 左右的下拉电平,使得主站对其最后一个字符识别错误,  


正确字符为16#0E即二进制的2#00001110 ;实际H750接收进来后,识别为2#10000111,即16#87,因此引起CRC校验错误。
由于需要适配的仪表种类各有不同,都需要考虑做良好适配,暂时考虑从H750这边着手结局此问题(使用103或其它品牌的M4 的MCU均未发现会引起接收异常)。
通过做接收中断标识,发现H750在波特率匹配或H750的通信时钟更高时,接收字符中断可以立即产生或提前产生, 而在H750波特率相比从站的通信时钟更慢时(1个字节慢的时间不超过3/16 位);接收字符中断将滞后产生,(滞后约3/16+5/16 =8/16)。  此时由于产生滞后字符中断,在非最末字节时候,数据都比较正常; 而在最末数据,由于在字符中断还未产生的时候,又出现了一个异常的短的下降沿,使得应该为正常的数据被移了一位,由此产生接收异常。
仪表方面的最后一个脉冲的出现,可能是由于采用了一种收发自动切换的电路而引起的此类现象。有发现过此类问题的进来探讨一下解决方案。

使用特权

评论回复
沙发
diweo| | 2022-6-24 15:50 | 只看该作者
个人觉得还是时钟没配置正确的原因

使用特权

评论回复
板凳
kiwis66| | 2022-6-24 20:32 | 只看该作者
时钟问题,或者干扰

使用特权

评论回复
地板
kiwis66| | 2022-6-24 20:33 | 只看该作者
时钟问题,或者干扰

使用特权

评论回复
5
l21s12w|  楼主 | 2022-6-25 12:10 | 只看该作者
时钟偏差这个是肯定的, 但是这个偏差是在容许范围内的。  是基于时钟偏差,接收到发送方的时钟更快一些, 使得最后一个字符的完成位之后出现的下拉的位被错误识别进去,使得最后一个位出错。  同样存在时钟偏差的情况, 用其它芯片都没这类问题。

使用特权

评论回复
6
foxsbig| | 2022-6-29 21:05 | 只看该作者
找到原因了么

使用特权

评论回复
7
dongnanxibei| | 2022-6-30 09:43 | 只看该作者
应该是时钟问题

使用特权

评论回复
8
l21s12w|  楼主 | 2022-6-30 15:18 | 只看该作者
本身当然是时钟引起了。但这个属于容许范围内的时钟偏差。。。不应该出现这种问题的。  同样的偏差情况下用其它系列IC 都没有这种问题。这个目前有用其它方式绕过这个问题, 但是这个问题本身的根源还是在IC上的。。。建议厂家技术及时能给予解答

使用特权

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

本版积分规则

1

主题

3

帖子

0

粉丝