1.UART传输未完成导致数据丢失
如下代码 , 只考虑非空 , 但实际传输并未完成 。
但发送非空不代表发送完成 , 虽然在某些场合更高效 , 但某些场合就会导致数据丢失 。
比如:使用此函数发送之后进入休眠、关闭接收端设备电源等情况下 。
解决办法:
等待发送完成:
如果使用标准外设库 , 要根据实际情况封装函数 , 比如发送超时 。
或者使用HAL封装的接口 , 代码包含判断传输完成:
2.线路延时导致数据丢失
UART通常会使用232或者485以增加传输距离和增强干扰 。 但是一旦数据线路太长就存在传输延时的情况 , 特别是485传输长距离 , 并使用MCU控制传输方向的情况下 。
解决办法:
- 软件增加延时处理
- 使用通信协议增加应答机制
UART应用的场景比较多 , 有些应用在复杂的工厂 , 干扰较大从而导致数据丢失;有些应用在温差较大的环境 , 时钟偏移较大导致数据丢失 。
解决办法需要根据实际情况 , 有针对性解决问题 。 比如:使用更好的通信线 , 软件做好容错处理等 。
声明:
本文转载自嵌入式专栏 , 作者strongerHuang, 如涉及作品内容、版权和其它问题 , 请于联系工作人员 , 我们将在第一时间和您对接删除处理!
- 软件|工作的好帮手:8款设计软件介绍
- 软件|6个好用到令人发指的黑科技软件,第二款你肯定用过!
- 软件|盘点7款性价比高的设计软件
- 苹果|苹果或拒修丢失模式iPhone!禁止技术人员解锁设备,网友:丢失模式最好能自动报警
- 全球财经网|ZStack入选e-works《工业软件与服务选型指南》
- 软件|电脑配置16G内存够用吗?看完这篇文章后,就知道该如何配置了
- 软件|最快的勒索软件被发现仅用4分多钟就加密了53GB的数据
- iOS|iOS、鸿蒙、ColorOS,三大系统软件打开速度对比
- 软件|比芯片短缺更严重!超过90%大陆市场,被美国巨头垄断,望周知!
- 华为|macOS安装和卸载软件
