串口通信问题排查总结

串口通信问题排查

排查原则:

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

串口通信问题排查方法

  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. 电源问题,不稳定的电源或电源不足也可能导致通信故障。
相关推荐
无名3875 分钟前
Debian12 安装 sippts
通信
智商偏低1 小时前
单片机之helloworld
单片机·嵌入式硬件
青牛科技-Allen2 小时前
GC3910S:一款高性能双通道直流电机驱动芯片
stm32·单片机·嵌入式硬件·机器人·医疗器械·水泵、
森焱森4 小时前
无人机三轴稳定控制(2)____根据目标俯仰角,实现俯仰稳定化控制,计算出升降舵输出
c语言·单片机·算法·架构·无人机
白鱼不小白4 小时前
stm32 USART串口协议与外设(程序)——江协教程踩坑经验分享
stm32·单片机·嵌入式硬件
S,D5 小时前
MCU引脚的漏电流、灌电流、拉电流区别是什么
驱动开发·stm32·单片机·嵌入式硬件·mcu·物联网·硬件工程
芯岭技术8 小时前
PY32F002A单片机 低成本控制器解决方案,提供多种封装
单片机·嵌入式硬件
youmdt8 小时前
Arduino IDE ESP8266连接0.96寸SSD1306 IIC单色屏显示北京时间
单片机·嵌入式硬件
嘿·嘘8 小时前
第七章 STM32内部FLASH读写
stm32·单片机·嵌入式硬件
Meraki.Zhang8 小时前
【STM32实践篇】:I2C驱动编写
stm32·单片机·iic·驱动·i2c