登录注册
论坛
一粒金砂(初级)
1
0
1590218527(1).jpg (26.19 KB, 下载次数: 0) 下载附件 保存到相册 2020-5-25 15:57 上传
1590218527(1).jpg (26.19 KB, 下载次数: 0)
下载附件 保存到相册
2020-5-25 15:57 上传
如图所示为接收命令帧部分程序,因为modbus中单次写入与读取功能码的长度为固定的8个字节,所以while条件为RXFFST中接收到8个字节便触发中断进入while循环,将读取的命令帧存在接收缓存器不同位置。
但是modbus中0x10连续写入功能码的长度不是固定的,若长度超过8个字节则会导致触发接收中断时命令帧超过8个字节的部分丢失,程序应当如何设置才能使SCI中断接收到不同字节完整的命令帧?恳请解答疑惑,万分感谢!
ps:尝试过while条件修改为RXFFST不等于0时进入循环,但会出现RXFFST接收到一字节便进入while循环,接收不到命令帧剩余字节。
扫一扫,分享给好友
2
good,想法很好
一粒金砂(中级)
3
沉睡的洋葱 发表于 2022-7-21 14:01 建议通过2帧之间的时间间隔判断这一帧是否结束,可以搭配一个定时器使用。
以前我是通过modbus协议来判断需要接收的字节数,但这种方法不好。
版主
6105
4
一个字节就接收放到缓存(最好是环型缓存)。再分析判断缓存里面的数据。如果是一帧数据就执行。缓存读出数据后起始指针移位。
发表回复 回帖后跳转到最后一页
论坛测评队员
EEWorld Datasheet 技术支持
查看 »