226 CPU与第三方仪表通讯,开始用9600波特率通讯时,仪表返回的数开始几个字节都是错误的,但有时所有接到的字节都正确的,每秒轮询一次仪表,超时时间为500MS。后来我把波特率都给提高了,发现接到的错误率低了,现在通讯的波特率是57600(仪表已是最高了)虽然大部分接收的都正确,但是还是有错误,这个问题已经困扰我好几天了,所有想到的都试了,还是没有解决。请大神们帮着分析下是什么原因呢!
仪表通过串口调试助手试过最高速率设置为200MS发送,返回的没有错误,如果在低的话有时会返回错误字节!
请大神帮助!
-
-
atmupkeep 发表于 2016/9/9 16:00:29
波特率不正确是收不到正确字符的。 如果在多种波特率下均可收到正确字符,对方要有侦测波特率的机制,一般仪表是很难做到的。 你把通讯双方的参考地连起,看看错误是否会消除?2楼 回复本楼
引用 atmupkeep 2016/9/9 16:00:29 发表于2楼的内容
-
-
bonbo 发表于 2016/9/11 14:43:54
一般老说,如果你的程序写得正确合理,波特率低出现错误的机率小,而你的情况恰恰相反,只能说你的程序写得不够合理。 试着调整RCV、XMT这2个指令所在网络段在整个程序中的位置,或许可以解决问题。3楼 回复本楼
引用 bonbo 2016/9/11 14:43:54 发表于3楼的内容
-
-
fung 发表于 2016/9/11 16:45:19
我也有二楼的感觉。 可能是一些较为隐含的时序不合理造成个别出错。具体很难说,好像有些中断出现在很接近end指令的时候出错机会会大减,而中断出现在程序开始位置时,出错机会会很大。这是不同流程之间不同步引出的必须的同步问题。4楼 回复本楼
引用 fung 2016/9/11 16:45:19 发表于4楼的内容