找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4180|回复: 0
打印 上一主题 下一主题
收起左侧

分析modebus485通讯,最后一桢数据错误

[复制链接]
跳转到指定楼层
楼主
ID:59284 发表于 2014-2-26 18:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1、51单片机,modebus485通讯数据直接发送到端口附近的移位寄存器

2、avr,stm32单片机,数据会先写入缓存,就是一级缓存,待端口附近移位寄存器空了才会将一级缓存放入移位寄存器,也就是二级缓存。这样就有两个标志:一个是一级缓存空,你可以写入数据;一个是二级缓存空,你可以发现发送完成。这样到底哪一次才是真的发送完就很明了。

3、很多时候会表现为发送和接受切换不及时引起,的确也是。但把握好何时才是真的数据发送完毕,应该也是可以解决,毕竟硬件电路上的传输十分迅速。但若真是这样的,发送接受切换时间不对,下策就是延时,稍微好点可以在前后加入几个干扰较小的数据。最好的听说有linux的delaywork方法,暂时不知是什么。

4、当stm32用fsmc来读取16c554,16c554通过串口连接数据,这样的系统也是通讯的最后发现数据错误,但是接下来一组数据开头一个错误。在16c554之前通讯数据对,而16c554接受错误,或者fsmc错误,而一旦错误就会反复出现,时好时坏,奇怪哉。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表