打印

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

[复制链接]
10577|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jack.king|  楼主 | 2011-3-3 17:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
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中断一次,如果在中断中直接处理协议的话,这对中断程序要求很高的,
如果不能产生标准的波特率,越高的话那么定时器的误差越大

使用特权

评论回复
5
jack.king|  楼主 | 2011-3-3 17:31 | 只看该作者
本帖最后由 jack.king 于 2011-3-3 17:34 编辑

呵呵!原来若此,开始执行快速处理没有顾及这么多,我用的是at89c51ed2可以产生115200的波特率谢谢各位的分析!
补充说明:我的接受是中断接收!中断发送

使用特权

评论回复
6
sdpz| | 2011-3-3 20:50 | 只看该作者
建议用队列,中断时加入新数据,主循环读出数据,中断的开销会很小。若每字节数据用两个ascii码表示,在读出数据时做转二进制和做LRC校验,那么收到结束符的时候已经校验完成,将获得更多的数据处理时间。由于使用文本协议能有效区分协议头尾和数据体,因此多帧数据就能连续地保存在一个队列(数组)里面,能避免传输过快造成数据丢失。

使用特权

评论回复
7
chunyang| | 2011-3-3 23:33 | 只看该作者
原因多种,比如处理能力不足、程序流程不当、波特率误差过大、电路设计不良、电缆不合适等导致的信号畸变……具体是什么,需要楼主提供足够的相关信息才能判断。

使用特权

评论回复
8
justrong| | 2011-3-4 08:54 | 只看该作者
有时也不一定全是本地的问题,可能客户端也会产生相应的匹配问题的,毕竟是两个独立的设备独立的时钟啊!

使用特权

评论回复
9
白衣夜行| | 2015-7-15 14:56 | 只看该作者
marK

使用特权

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

本版积分规则

488

主题

2158

帖子

1

粉丝