当前位置: 首页 > news >正文

串口通信问题排查总结

串口通信问题排查

排查原则:

  • 软件从发送处理到接收处理,核查驱动、控制及发送接收数据是否正常。
  • 硬件从发送到接收,针对信号经过的各段,分段核对信号是否正常。示波器、逻辑分析仪。
  • 用万用表、示波器、逻辑分析仪等工具,确保电路电源、接地正常,信号物理链路导通正常,信号波形及电平正常。

串口通信问题排查方法

在这里插入图片描述

在这里插入图片描述

  1. 检查中间件
    串口通信必然存在发送端和接收端,且两者通过中间件(例如导线),遇到问题,首先应该保证导线连接正常。如果这一部分没有确定,直接排查其他方向,很可能在做无用功。

  2. 排查硬件层
    通过逻辑分析仪、示波器等仪器来判断发送端、接收端在发送、接收、空闲时的引脚波形是否正常。串口空闲时为高电平,有数据时才会有电平变化。同时需要确定电压是否正常。波形测量的位置先从最终点开始测量,然后依次排查中间部分的探测点,来判断问题位置。
    如果发现波形变形、失真、电压不正常等情况,请让硬件工程师协助进行排查。在其起始点可以看到波形,但是终点看不到,需要使用万用表来确定是否引脚存在虚焊。

  3. 检查串口驱动层
    如果排查了硬件无问题以后,但是发送端串口没有波形,这时候就需要检查串口驱动是否配置成功了。可以先将发送端的Tx、Rx引脚短接,进行回环测试。最好先用一个简单例程进行测试,尽量排除多个变量的影响。排查时需要特别注意的是,不能只看代码逻辑,要注重实际调试,善于利用软件调试窗口来观察相关寄存器的值。

  4. 应用协议层
    通过以上方向的排查,可以证明自发自收没有问题。接下来就验证双方是否可以正常通信。
    应用协议层可能存在的问题有:

    1. 发送端与接收端数据协议有问题,例如CRC、帧头帧尾校验、解析数据包等方面。
    2. 发送端与接收端串口配置的参数:波特率、校验位不一致,导致无法通信。

    另外也需注意下面这几点:

    1. 由于信号容易被干扰,建议使用带屏蔽线,并且接线一定要严格,需要接地的最好接地。有些rs485总线通信,还需要考虑接上终端电阻来匹配。如果是RS232总线通信,尽量不要让线太长。
    2. 因为很多设备通过外部晶振或者内部时钟计算的波特率都是存在误差的。这样的话如果一旦报文过长,会导致误差累积,进而出现串口识别乱码或者收不到的情况。
    3. 在一些可能会存在干扰的地方,可以考虑使用奇校验或者偶校验,这样可以将错误的报文过滤掉或者尽量使用一些数据校验协议,防止数据出错。

其他串口通信排查方法:

  1. 通信共地,检查并确保设备间的GND(地线)连接是正确的。
  2. 串口参数,通信双方的串口参数包括波特率、数据位、停止位和校验位等。
  3. 硬件连接,使用示波器等硬件分析工具来检查线路上的电压、数据格式和波特率等参数是否正确。
  4. 设备兼容,不同的设备之间电气特性、波特率等可能存在兼容性问题。
  5. 数据传输,检查软件设置和硬件连接,确保没有误操作或损坏的部件。
  6. 回环检测,Loopback检测是一种诊断方法,将串口的发送和接收端短接来测试串口是否正常工作。
  7. 软件配置,检查软件中的串口配置,确保与硬件设置相匹配。
  8. 外部干扰,某些环境下电磁干扰可能会影响串口通信的质量,尝试更换通信线或使用屏蔽线。
  9. 电源问题,不稳定的电源或电源不足也可能导致通信故障。

相关文章:

  • Flink 对接 Hudi 查询数据,java代码编写
  • Windows驱动开发系列文章一
  • Deepin Linux 深度 V23 beige 官方源及换镜像源方法。
  • 【MySQL精通之路】优化
  • 一千题,No.0037(组个最小数)
  • 2021职称继续教育--中国共产党的光辉历程及其经验
  • 服务器的远程桌面无法连接,服务器远程桌面无法连接问题处理教程
  • nginx配置文件
  • 分布式事务-TCC
  • 锐捷网络与您相约第七届数字中国建设峰会 共话数字未来
  • RestTemplet 自定义消息转换器总结
  • 香港Web3媒体:Techub News
  • 动手学深度学习(Pytorch版)代码实践-深度学习基础-01基础函数的使用
  • 价值飙升30%,AI PC拉动半导体出货潮
  • 今日好料推荐(大数据湖体系规划)
  • 分享的文章《人生如棋》
  • Android单元测试 - 几个重要问题
  • canvas绘制圆角头像
  • JS 面试题总结
  • js中forEach回调同异步问题
  • k8s如何管理Pod
  • magento2项目上线注意事项
  • nginx 配置多 域名 + 多 https
  • Node 版本管理
  • node 版本过低
  • nodejs:开发并发布一个nodejs包
  • oldjun 检测网站的经验
  • Python - 闭包Closure
  • python大佬养成计划----difflib模块
  • Spring Boot MyBatis配置多种数据库
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 使用common-codec进行md5加密
  • 使用parted解决大于2T的磁盘分区
  • -- 数据结构 顺序表 --Java
  • 物联网链路协议
  • 一道面试题引发的“血案”
  • 再谈express与koa的对比
  • 06-01 点餐小程序前台界面搭建
  • Linux权限管理(week1_day5)--技术流ken
  • python最赚钱的4个方向,你最心动的是哪个?
  • 阿里云服务器如何修改远程端口?
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​埃文科技受邀出席2024 “数据要素×”生态大会​
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • ‌JavaScript 数据类型转换
  • #android不同版本废弃api,新api。
  • #includecmath
  • (C++20) consteval立即函数
  • (pycharm)安装python库函数Matplotlib步骤
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (十)Flink Table API 和 SQL 基本概念
  • (已解决)什么是vue导航守卫
  • (原)本想说脏话,奈何已放下