串口通信问题那么多,我们如何排查?
eetrendMcu 2023-11-23

工作过程中,总是会遇到各种各样的通信问题,除了掌握软件知识,必要的硬件技能也必不可少,比如万用表、示波器、逻辑分析仪等,如此才能做到精准定位,早点打卡下班~~

鱼鹰根据个人多年的嵌入式开发经验,在此斗胆总结一番,希望可以给一些新人提供排查方向。

在此,以串口通信为例,介绍排查步骤或方向:

“红色代表可能出错的位置"红色代表可能出错的位置

1、示波器看波形

通信,不管是单向通信还是双向通信,必然存在两个器件,所以我们需要重点关注这两个,而两者之间必然存在物理连接--导线(无线除外),遇到通信问题,应该首先保证导线连接正常、电压正常,如果这一点都没有确定,直接跳过该步骤,很大可能做无用功,查来查去,最终可能查了一个寂寞。

串口双向通信,一般会设计成主从方式,即一个主器件通过双方约定好的协议主动向从机发起数据传输,并且从机永远是被动应答。这样保证在多从机通信的情况下,不会出现数据错乱的情况(如果多个从机同时发送数据,可能造成交通拥堵,毕竟一个方向只有一条道)。

这种情况下,可以让主机定时发送固定数据帧(比如版本查询,这样可以减少变量),通过查看示波器来确定从机是否有返回数据。

如此,我们可以确定两个问题:

1、观察主机发送引脚波形是否正常(串口平时一般为高电平,发数据时才会变化)、同时需要确定电压是否正常、波特率可看可不看、具体传输数据也是,因为该阶段只是从大的方向进行排查;

2、从机是否有回应。

这里又分为两种情况:

1)从机没有回应:

此时我们需要在接下来的排查步骤中确定几个问题:

<1>从机发送功能是否正常?

<2>主机发送的数据从机是否已经正常接收?

<3>主机发送的数据协议是否正确。

2)从机有回应。

这种情况下,问题就比较简单,重点排查上层协议即可(可以保证从机的收、发没有问题)。

这里特别注意的是,波形测量位置一定是在最终点,而不是中间某个探测点或者模拟开关之类的器件。

比如,主机发送引脚,测量位置应该在从机芯片的接收引脚,而测量主机的接收则在主机芯片的接收引脚,才不会导致结果误判。

2、根据波形情况,确定主从器件发送、接收功能

如果说步骤 1 发现主机没有正常传输波形产生,就要根据情况再确定一些问题。

1、如果发现波形失真、变形、电压不正常等情况,请呼叫硬件工程师一起排查。

2、主机芯片发送引脚可以看到波形,但从机接收引脚看不到,请使用万用表确定是否虚焊接。相反方向也排查一遍。

3、主机或从机不能正常发送或接收。

如果你使用了 DMA 发送,又使用了《终极串口接收方式,极致效率》笔记介绍的方式接收,那么你可以从以下方向进行排查(其他更简单的方式类似):

1)发送、接收引脚时钟是否开启、输入输出模式是否配置正常,发送引脚一般复用输出、接收一般上拉输入(如果只是引脚配置错误,发送 DMA的 计数器会变化,但是没有实际波形输出);

2)串口外设寄存器配置是否正常。如果全是 0 ,说时钟没有打开,或者未调用初始化函数,其次查看对应的 DMA 请求位(发送、接收,如果这个没有开启,DMA 计数器不会变化)、串口使能位等;波特率可以等发出波形再看,毕竟你现在连数据都没有。

3)查看 DMA 配置是否正常,外设、内存地址寄存器、计数器、使能位、对应通道的传输标志位(F4 如果传输标志不清除,无法启动下一次传输),总之把对应结构体的成员看一遍就对了,可能一个小配置错了,就导致整个传输失败。

4)如果是特殊引脚,看是否需要关闭默认功能,开启普通 GPIO 功能

5)如果是复映射功能,查看对应的映射寄存器是否配置正确,配置时,可能需要开启对应的时钟。

以上排查方法对发送、接收都适合。排查后,可以通过短接 Tx、Rx 引脚的方式确定发送、接收是否异常。如果是单方向的,可以配合串口模块测试。

终极杀招:

如果上述排查都没有发现问题,还是失败,要么换板子,要么换一个可以用的简单例程修改后测试,此时可以对比例程调试模式下的寄存器配置(寄存器配置截图后对比)。

另外, 排查时需要特别注意的是,不能只看代码,不看实际寄存器的值。因为有的时候,代码也可能有各种各样的问题(比如时钟如果没有打开,那么即使有对应的配置代码,你一个寄存器值也写不进去),只有看最终寄存器的值才最安心。这里也多次强调了时钟的重要性,不过一般这种问题很容易排查。

以上排查方向,配合鱼鹰的调试系列文章,消化好!

3、协议问题

上述排查,应该基本解决了双方通信问题的,即自发自收应该没有问题。但不代表双方就能够正常通信了。

这里可能存在几个问题:

1、双方波特率设置不匹配(这个问题比较容易查,直接看波形或寄存器(寄存器可能还没那么靠谱,外设一致可以)即可)

2、上层协议不匹配,比如 CRC 校验有问题、帧头定义有误等等……

3、对方解析函数有问题。

这个时候,配合逻辑分析仪分析是最方便的,到底是从机问题还是主机问题一目了然,当然你直接在Tx、Rx上并上两个串口模块的 Rx 去接收串口数据也是可以的~~

以上排查步骤不一定按顺序排查,但一般查看波形都是优先选择。

4、其他通信

在此继续介绍一下 SPI 通信可能出现的问题:

1、SPI 发送数据后,没有延时即立刻开始接收(此时从机可能没有反应过来,也就没有数据输出),SPI 的波形可能失真(通过示波器可以观察出来),也可能波形挺好,但接收就是有问题;

2、 CS 控制时机不对,或者也可能需要延时一段时间。

3、SPI 波特率太高,导致器件无法识别。测试时最好使用最低波特率,但也不排除太低波特率反而不行的情况,所以多试试几种。

总之,测试代码应该要考虑最极端的情况(比如延时久一点,波特率慢一点),调通之后再优化这些参数,提高通信效率。

另外,如果有参考例程,可以直接对比例程输出的波形进行修改,直到你的代码输出波形(注意,这里直接对比波形)和例程保持一致,如果还是有问题,那么换从机器件再试。当然,电源这里也一定要先确定没有问题。

一般来说,只要 CS、CLK、MOSI 控制时序正确,器件的 MISO 引脚一定会有数据输出(即使你没有接主机的 MISO),如果你能看到 MISO 输出波形,但主机还是没有正确接收,那么就查主机的 MISO 引脚配置和延时情况了。

I2C 通信:

1、和 SPI 类似,查看时序问题

2、注意地址问题,有可能说明书的地址和实际的地址之间换算可能需要移位。

3、注意从机锁死问题,传输前发几个停止信号过去试试


声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 相关技术文库
  • 测试
  • 测量
  • 示波器
  • 探头
  • 示波器的供电接口的“地”到底要不要拔掉?

    相信很多小伙伴都这么干过,把示波器的供电接口的“地”拔掉,如下图:核桃一开始也不明白,为什么要把“地”给拔掉!

    前天
  • 示波器x10探头的补偿原理

    工欲善其事必先利其器,而示波器正是我们最常使用的测试工具了,值得花一些时间了解清楚探头补偿的工作原理。

    04-03
  • 保护CT和测量CT总是被搞混?

    很多人常常把计量CT、保护CT和测量CT这三种搞混,没办法准确地根据不同用途,选出合适精度的CT

    04-01
  • 刹车片应如何检查与更换

    刹车片的寿命很难用一个明确的公里数或者时间去界定。 出现以下情况需要换刹车片: 1、看厚度:通常情况下一副全新的刹车片厚度在1.5cm左右,当肉眼观察到刹车片厚度小于0.5cm的时候,就要准备更换了。每个刹车片的...

    02-28
  • 放电机是什么?通过什么原理实现的?

    放电机是在一定介质中,利用两极(工具电极与工件电极)之间脉冲性火花放电时的电腐蚀现象对材料进行加工,以使零件的尺寸、形状和表面质量达到预定要求的加工方法。这种加工方法也被称为放电加工或电蚀加工也叫放电...

    02-28
  • 如何使用电机驱动分析仪进行电机运维?

    电机的重要性自动化系统中,电机消耗了所有发电量的65%以上。电机的输出能力从几毫瓦到数千千瓦不等。由于电机执行基本工作并消耗大量功率,因此必须以最具生产力和效率的方式对其进行控制。了解电机如何...

    02-20
  • 万能表怎么用的?

    使用前应认真阅读有关的使用说明书,熟悉电源开关、量程开关、插孔、特殊插口的作用。 将ON/OFF开关置于ON位置,检查9V电池,如果电池电压不足,将显示在显示器上,这时则需更换电池。如果显示器没有显示,则按以下...

    01-14
  • 三相电机机械

    三相电机在一般机械电气设备使用最广,对一台电机来说,如何判定其是否是好的,我们要借助一些仪表和工具来进行检测。首先观察外观,如果外观没问题,轴能正常转动无卡滞就进行下面的检查了。 1、用绝缘电阻表测量...

    01-14
  • 报警阀组的分类及组成

    1 报警阀组的分类及组成 报警阀组分为湿式报警阀组、干式报警阀组、雨淋报警阀组和预作用报警装置。 报警阀组的分类及其主要组成部分如下图: 2 报警阀组设置要求 1.自动喷水灭火系统应设报警阀组。保护室内钢屋架...

    01-14
  • 什么是相位噪声?

    相位噪声基础

    01-03
  • 什么是激光测距系统?应用原型平台介绍

    什么是激光测距系统?LiDAR是"Light Detection and Ranging"的简称,是指一边扫描激光,一边照射对象物,通过观测反射光,测量与对象物的距离的光传感器技术。如下表所示,测距传感器有各种...

    2024-12-09
下载排行榜
更多
评测报告
更多
广告