呵呵!为什么波特率越高越不稳定

[复制链接]
12013|8
 楼主| jack.king 发表于 2011-3-3 17:08 | 显示全部楼层 |阅读模式
呵呵!为什么波特率越高越不稳定!   之前做 的一个项目,发现偶尔有问题,主要是通讯方面。双CPU(8位)
  找了好久原因也没有找到!后来就只改变了波特率就好了
原来波特率为:115200。现在改成9600就好了
ayb_ice 发表于 2011-3-3 17:13 | 显示全部楼层
太快了,MCU处理不过来
HWM 发表于 2011-3-3 17:16 | 显示全部楼层
原因有二,其一是电缆过长,信号完整性变差;其二是波特率过高后产生波特率的计数器一周的计数值减小,以致计时相对误差加大。
ayb_ice 发表于 2011-3-3 17:26 | 显示全部楼层
本帖最后由 ayb_ice 于 2011-3-3 17:28 编辑

标准51的话,115200的波特率,一个字节的时间是1000000US/115200*(8+1+1)=87US,87US只能运行不到87条单周期指令(11.0592MHZ)
也就说可能87US中断一次,如果在中断中直接处理协议的话,这对中断程序要求很高的,
如果不能产生标准的波特率,越高的话那么定时器的误差越大
 楼主| jack.king 发表于 2011-3-3 17:31 | 显示全部楼层
本帖最后由 jack.king 于 2011-3-3 17:34 编辑

呵呵!原来若此,开始执行快速处理没有顾及这么多,我用的是at89c51ed2可以产生115200的波特率谢谢各位的分析!
补充说明:我的接受是中断接收!中断发送
sdpz 发表于 2011-3-3 20:50 | 显示全部楼层
建议用队列,中断时加入新数据,主循环读出数据,中断的开销会很小。若每字节数据用两个ascii码表示,在读出数据时做转二进制和做LRC校验,那么收到结束符的时候已经校验完成,将获得更多的数据处理时间。由于使用文本协议能有效区分协议头尾和数据体,因此多帧数据就能连续地保存在一个队列(数组)里面,能避免传输过快造成数据丢失。
chunyang 发表于 2011-3-3 23:33 | 显示全部楼层
原因多种,比如处理能力不足、程序流程不当、波特率误差过大、电路设计不良、电缆不合适等导致的信号畸变……具体是什么,需要楼主提供足够的相关信息才能判断。
justrong 发表于 2011-3-4 08:54 | 显示全部楼层
有时也不一定全是本地的问题,可能客户端也会产生相应的匹配问题的,毕竟是两个独立的设备独立的时钟啊!
白衣夜行 发表于 2015-7-15 14:56 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

488

主题

2158

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部