• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

串口接受怎么能保证数据不丢帧

liuxiaofei126 2017-12-27 浏览量:5171
在单片机接受数据时,有啥好的方法,保证数据不丢帧
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 可以使用ModBus之类的协议。如果有丢帧,主机得不到回复就检测到了。重新发送就好了
    • 发布于 2017-12-27
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了 :BSC123N08NS3GATMA1是完整的订购料号, 回复

其他答案 数量:19
  • 用好了协议,应该就有保障机制啊。

    要知道无论什么怎么,理论上通信传输都不是绝对稳定的,只能通过外部机制来保证通信有效性。比如重传、校验等等机制,通过这些来保证数据传输是完整的。

    比如: 数据包(帧中)有相应编号,并有内容验证校验,这样即使丢失了也可以要求重传啊。

    • 发布于2017-12-27
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :见资料文字描述https://www.ti.com.cn/zh-cn/support-quality/environmental-info/logo-product-labeling.html 回复

  • 数据不丢帧这个只能让发送方多发几次确保保险了,常规的CRC校验只能检测错误不能修复错误。

    • 发布于2017-12-27
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :MSDS没有这个文档,只有这样的https://bertech.com/wp-content/uploads/2019/08/5-Mil-Kapton-Tape-Datasheet-KPT5.pdf 回复

  • 多发并不能保证不丢帧的,需要其他确认机制。
    • 发布于2017-12-27
    • 举报
    • 评论 3
    • 0
    • 0
liuxiaofei126 回复了 xdsnet :环形队列用过没,可以确保不丢帧? 回复
xdsnet 回复了 liuxiaofei126 :我的意思是简单的多发并不能保证不丢帧啊,说个极端情况,如果通信两端受到极致干扰,完全就连不通,无论你怎么多发没有用吧。 回复
电子老工程师 回复了  :FZX210531728091 回复

  • 自定义好协议,增加校验,只能是这么保证了。然后的话,串口本身也算比较可靠吧。传输距离不长,应该挺可靠的啊。对了,频繁的发送处理发送处理,可以使用FIFO循环队列来处理。
    • 发布于2017-12-27
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :这个型号是防水塞,不是公接头。确认错料。 回复

  • 可以参考下网络传输,或者一些其他传输方式。

    我说一个比较简单的办法。接收完一帧反馈一下,如果没反馈重发。   之前我stm32做串口升级程序时,就是真样保证的。

    • 发布于2017-12-27
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :这个型号是一个8PIN IC芯片,实物从外观判断是个MOS管,确认错料 回复

  • 不可能不丢的呀,只能保证收到的是正确的就行了,把不正确的帧丢掉即可。
    • 发布于2017-12-27
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :请查看FZX210601199931 回复

  • 每帧数据都要求确认,超时没收到确认信号的重传,这样可以保证数据不出错。
    • 发布于2017-12-27
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :已沟通,客户这批货有读取的问题,已把问题物料焊下来了,库存料换上去,测试ok都已发货,目前客户后续会看看是否还有库存料,若有会提供库存料与这批料的高清对比照片,同时提供交叉验证的测试报告或文档 回复

  • 通讯应答,能让你确认帧是否被对方接收
    通讯协议,能保证你的帧是否完整
    • 发布于2017-12-27
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :尾缀包装区别,产品同一物料
回复

  • 对于串口帧来讲,从两个方面考虑,硬件方面要靠硬件协议保证,例如电平识别度、传输距离、干扰等。软件方面,主要抓住这点就可以,概括来讲就是CPU总是处于时刻准备接收数据的状态。包括中断不能太臃肿,内存不能被覆盖,寄存器标志要及时清除等。有以上几点,可保证不丢帧。另外,波特率太高会产生误码,不属于丢帧范围。
    • 发布于2017-12-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 接收方把校验和发给发送方,发送方确认一下值是不是错了,错了就重发一下。
    • 发布于2017-12-27
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :https://optoelectronics.liteon.com/upload/download/DS70-2016-0039/LTV-314%20series.pdf 回复

  • 串口不是同步传输的,如果想保证不丢数据的话,波特率不建议设置太高,传输距离不宜太远,最好能加上cts和rts继续硬件握手,软件方面做好软握手协议,如果有错误包,马上重新发送
    • 发布于2017-12-28
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :这个料件是黑色的。没有错料。 回复

  • 不丢帧,最好办法是扩展成DB9,使用硬件流控控制发送或接收
    • 发布于2017-12-28
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :供阳极有货的就客户原型号一个 回复

  • 使用rtos系统加fifo就能保证不丢帧,满足百分之九十九的多任务应用。
    • 发布于2017-12-28
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :EDH476M100A9PAA 厂牌:KEMET 回复

电子老工程师 回复了  :就是,链接是官网资料, https://www.phoenixcontact.com/online/portal/us?uri=pxc-oc-itemdetail:pid=1755765&library=usen&tab=1 回复
电子老工程师 回复了  :MSTBVA 2,5/ 5-G-5,08 系列说明。 175576​​5是标准型号。 回复

  • 最好采用DMA接收,同时,数据采用包方式,增加包头、校验数据。
    • 发布于2017-12-29
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :经查官网显示 红色,没有查到变更文件https://www.chinese.molex.com/molex/products/part-detail/quick_disconnects/0190060001 回复

  • 加入校验机制,接收正确返回ACK不正确重发
    • 发布于2017-12-31
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :只有图纸参考 回复

电子老工程师 回复了  :都是停产料件没有相关料件参数信息。跟采购供应商确认一下。 回复

  • 串口丢帧是很正常的,最好的方式就是加一个重发机制,出错就重发
    • 发布于2018-01-01
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :2-644488-6 TE 回复

  • 无法保证,只能通过加校验的方式,丢掉错误的帧。
    • 发布于2018-01-01
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :SLM6635 厂牌:无锡松朗微 回复

相关问题

问题达人换一批

串口接受怎么能保证数据不丢帧