完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
一直在思考一个问题:上位机采用高级语言编程,下位机采用单片机,点对多通讯。在通讯测试中,发现随着单次发送(含下位机发送)字节数的增加,通讯的可靠性越来越低,而且上位机CPU的性能越来越接近百分之百。发送频率的提高,也会增加CPU的负担。
那么,以多少的发送频率、单次发送多少字节最为可靠呢?没有可靠性,追求速度没有用啊。 |
|
相关推荐
13个回答
|
|
“在通讯测试中,发现随着单次发送(含下位机发送)字节数的增加,通讯的可靠性越来越低,而且上位机CPU的性能越来越接近百分之百。发送频率的提高,也会增加CPU的负担。”
多高的波特率?光是通讯就能给上位机造成负荷? 帧长度还会影响通讯可靠性?你所用的物理层评估过可靠性了吗? |
|
|
|
数据的单帧长度过长且若缓冲区不够大的话,确实容易出错(丢失数据)。当然,若传输速率过快的话,也同样会有问题(接收速度跟不上)。具体得根据实际使之匹配,含物理及以上各协议层。
|
|
|
|
单次发送多少字节只取决于你的设计,只要缓冲区不溢出,多少字节都可以。
反而是每次帧间的间隔时间,必须合理计算留出足够的间隔让对方有足够的时间能够响应、处理,毕竟操作系统下的任务切换时间是比较长并且不确定的。 同时,好的协议才是关键。 |
|
|
|
使用 115200 xmodem 没见CPU满负荷啊
|
|
|
|
|
|
|
|
现实中遇到的,同样的测试,在RS232中没有遇到,很郁闷啊!
|
|
|
|
楼主的问题应该通过改进系统设计来解决,只要有数据校验和侦错重发机制,数据包的长度与可靠性无关。
|
|
|
|
不知道你们怎么都没遇到过这个问题:帧错误!
首先,单片机与PC机之间的波特率是存在误差的,理想情况是在每一个bit的中间位置判断电平高低,实际上随着帧长度的加长,波特率的误差会累积起来,导致不是在每个bit的中间位置判断高低电平,最终导致出错。解决这个问题的办法很简单,在每一个字节发送完成后,插入一小段延时,比如插入一个bit的时间,就足以让接收端重建同步,比如用1.5或2个停止位的方法,就可以大大提高通讯的可靠性。实际使用可以在发送数据前插入两个NOP指令,效果就好得多。 因为我在实践中就观察到帧错误的情况,表现为:接收到N个字节后,接下来的一个字节的停止位没被检测到,而这个字节的第一位刚好是0的话,就被当成是起始位,而最后一个停止位被当成第八位,这就接收到了一个错误的字节,并且下一个字节会漏掉,之后接收到的数据就会根据字节内容(0的位置)不断变化了。 补充一点:帧错误通常发生在PC端。 |
|
|
|
再说,你说“实际使用可以在发送数据前插入两个NOP指令,效果就好得多。”
“插入两个NOP指令”才多少时间,相对于串口波特率来说算什么? 不是DMA方式的话,一般都是基于字节接收完或发送完中断 来收发每个字节的,字节间必然会有间隙,就算用等待TI的方法,也会有间隙; 除非你是用的固定延时的非常规方法才会有一个字节毫无间隙接着一个字节发送的可能,甚至没发送完就接着送入下一字节(比如老x以前做的用单片机产生VGA显示信号,但那个波特率可是好几M的,正常设计没人会那样做的,也不应该那样做) |
|
|
|
可能是我理解错误,但我在实际应用中就是在每个字节发送前插入20-100个NOP指令,完美解决问题,否则PC机端就会出错,而且换不同PC机出错的几率大不一样。我单片机端是用的中断方式发送数据,波特率19200-38400,每次发送几十到数百个字节。
出错的时候,PC端的程序直接报帧错误,加入延时后不再出现此错误。 |
|
|
|
前面所说插入"两个"NOP是泛指,就是N个的意思。:lol
波特率偏差10-20%,我我认为在一个字节内就足以产生为偏差,导致张冠李戴了。不信就用12M晶振与11.0592M的来试一下,不改波特率设置,发送一串数据,绝对有问题。 |
|
|
|
如果是较多的数据,建议拆分成一个个小包发送,中间可以对每个数据包校验。错了就重发。
|
|
|
|
有道理,这种测试换了几台电脑了,从老些的到刚买的,都有类似的问题。结果是:与波特率关系不大,与通讯的频率和单次通讯的字节数有关。通讯次数多和通讯字节数多,会导致上位机电脑莫名其妙的退出测试。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-6-22 04:12 , Processed in 1.061681 second(s), Total 97, Slave 81 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191