登录/注册

CAN 普通模式 TX引脚没有波形

更多

好的,遇到CAN总线在普通模式下TX引脚没有波形(没有信号输出),通常意味着数据根本没有从CAN控制器成功发出。这需要从多个方面进行排查:

核心排查方向:

  1. 硬件连接与电源:

    • MCU/CAN控制器电源: 确认MCU和集成的CAN控制器部分供电正常且稳定(通常3.3V或5V)。
    • CAN收发器电源: 确认CAN收发器(如TJA1050, SN65HVD23x等)的VCC/VDD引脚供电正确(通常5V或3.3V),且电压稳定。特别留意3.3V供电的收发器用5V供电会导致损坏或不工作。
    • 收发器使能引脚(EN/STB):
      • 如果收发器有使能引脚(如 EN 或 STB),请确认该引脚的电平配置正确。对于高电平使能的收发器(如 TJA1050 的 STB = High有效),需要保证该引脚为高电平(通常是 VCC)。对于低电平使能的收发器,该引脚需要为低电平(通常是 GND)。请查阅具体收发器的数据手册确认使能逻辑。 最常见的错误是将该引脚悬空(浮空)或配置成了禁能状态。
    • TX引脚连接: 确认MCU的TX引脚(或CAN控制器的TXO引脚)正确无误地连接到了CAN收发器的TXD(输入)引脚上。检查是否有虚焊、断路、短路(特别是对地或VCC短路)的情况。
    • 接地: 确认MCU、CAN控制器、CAN收发器具有良好、可靠的共地连接。
    • 基础检查: 使用万用表测量关键点电压(电源、使能引脚、TX引脚电压 - 空闲时CAN控制器TX引脚通常为高电平)。
  2. 软件配置与初始化:

    • 时钟: 确认MCU和外设(特别是CAN控制器)的时钟源已正确配置并启用。没有时钟,CAN控制器基本无法工作。
    • GPIO复用功能: 确认MCU的TX引脚(以及RX引脚,虽然不影响TX输出)已配置为正确的复用功能模式(Alternate Function, AF) 输出,而不是简单的GPIO输入或输出模式。这是导致“信号压根不出MCU”的常见原因。
    • CAN控制器初始化:
      • 波特率: 检查波特率寄存器(BRP, TS1, TS2, SJW)的设置是否准确无误。计算出的波特率是否与你实际期望的波特率匹配?
      • 工作模式: 绝对确保初始化代码已将CAN控制器配置为Normal Operating Mode(正常操作模式)。检查控制寄存器(如CAN_MCR, CAN->MCR 或类似寄存器)中的SLEEP位(或类似名称的省电模式位)是否已被清零(禁用),以及INRQ/INIT位是否已被清零(表示离开初始化模式进入正常工作模式)。另一个常见错误是控制器被置于SLEEP模式或Loopback模式而未察觉。
      • 中断/轮询配置: 虽然不影响基本TX输出,但确保中断已启用或轮询逻辑正确,这样你才能知道帧是否被尝试发送。
      • 过滤器配置: 虽然接收过滤器不影响发送,但如果有错误的配置阻止了接收器进入正常工作状态(尽管少见),也可能间接影响。可以暂时配置为接受所有ID试试。
    • 发送代码: 确认发送函数确实被调用执行了。
      • 检查发送邮箱(Mailbox)的状态(使用标志位或寄存器查询),是在等待发送(Pending)、正在发送(Transmitting)还是发送成功(Transmitted)?或者是否有出错标志(如丢失仲裁错误)?
      • 检查发送邮箱是否已正确地填充了数据(ID, DLC, 数据字节)并请求发送。
      • 确认没有其他错误(如硬件复位、总线关闭状态)阻止发送。
  3. 信号测量方法:

    • 测量点: 你测量的“TX引脚”是MCU(或CAN控制器)的TX引脚?还是CAN收发器的TXD(输入)引脚?或者误测了收发器的TX(即总线的CANH/CANL)?
      • 最有效的诊断点: 直接在MCU的TX引脚上进行测量。 如果这里有信号,问题出在MCU与收发器之间或收发器本身。如果这里也没信号,问题肯定在MCU(软件、时钟、GPIO配置)或更前端。
    • 测量工具:
      • 示波器: 最可靠。关键设置:
        • 通道:连接MCU TX引脚。
        • 电压范围:根据MCU电平选择(1V/div 或 2V/div 对于3.3V/5V系统)。
        • 时基:波特率为 500Kbps 时,1个位时间2μs。时基设置到 10us/div 或 20us/div 通常能捕捉到部分波形。波特率越低,时基越慢。使用上升沿触发,触发电平设在0.5V左右。
        • 探头接地夹: 一定要夹在离测量点最近的MCU或板上的GND点,形成最短的地回路。不良的接地是示波器测量不准或看不到信号的常见原因!
        • 触发方式:设置为单次触发自动触发。如果使用单次触发,确保在开始测量后立即执行发送操作(如果代码是手动触发发送)。
      • 逻辑分析仪: 也可以用来捕捉TX引脚的逻辑电平变化。确保采样率足够高(比如>4倍波特率时钟)。
    • 假负载: 如果CAN总线上没有其他节点,CAN收发器可能因总线空闲状态不正确(差分电压不够)而不工作或在错误状态。建议在CANH和CANL之间接入一个60欧姆的终端电阻(作为假负载),模拟一个最小的总线环境。这可以解决某些收发器在没有总线负载时表现异常的问题。
  4. 硬件故障:

    • 在确认软件配置无误、供电、使能都正确后,如果MCU TX引脚依然没有信号,考虑:
      • MCU/CAN控制器损坏。
      • PCB走线问题: 布线错误、走线严重受损。
    • 如果MCU TX引脚有信号(TTL/CMOS电平),但收发器输出没有差分信号(CANH/CANL之间无变化),考虑:
      • CAN收发器损坏。
      • 收发器输入引脚短路或连接错误。
      • 收发器型号选择错误。
      • 收发器周围的保护电路(如TVS管)损坏导致短路。

建议的排查流程:

  1. 断电检查硬件: 仔细核对原理图,特别是MCU TX -> 收发器 TXD 的连接、收发器电源、收发器使能引脚、终端电阻(如有)。用万用表测量MCU TX引脚到收发器TXD引脚的通断性、以及TX引脚/GND/TX引脚/VCC之间是否有短路。
  2. 上电静态测量:
    • 测量收发器使能引脚的电平是否符合其激活要求(High使能则为高电平,Low使能则为低电平)。
    • 测量MCU TX引脚在空闲状态下的电平(通常应为高电平)。
    • 测量收发器电源引脚电压是否正常。
    • 测量CANH与CANL之间的差分电压(空载或带假负载),在静默状态下应接近0V(允许较小偏差),有信号传输时应有±1.5V左右(取决于波特率/收发器)的剧烈变化。但此时TX没有波形,应该还是接近0。
  3. 确认软件: 仔细检查MCU时钟初始化、GPIO复用配置(设置成CAN TX功能输出)、CAN控制器初始化代码(尤其波特率、SLEEP模式位是否清零、INIT模式是否退出)。
  4. 执行发送并示波器测量: 运行发送代码,同时用示波器(确保探头地可靠连接在MCU GND上)观测:
    • MCU的TX引脚(最重要!): 如果这里出现代表CAN数据帧的高电平变化,则MCU侧基本正常,问题在收发器或之后的连接。
    • 收发器的TXD引脚(输入): 应该与MCU TX信号一致。如果不一致,检查中间连线。
    • 收发器的RXD引脚(输出): 用于回读总线状态给MCU。对于发送问题不是首要诊断点,但如果它一直是高/低电平不动,也从侧面反映收发器工作异常(或者接收回路未配置)。
    • CANH与CANL之间的差分电压: (需要用示波器差分测量或两个通道相减)。如果发送正常,应该能看到清晰的差分信号。如果看不到,且收发器输入TXD有信号,则收发器或其后级问题。
  5. 简化与隔离:
    • 注释掉或删除所有不相关的代码,只保留初始化CAN和发送一个固定帧的功能。
    • 如果可能,尝试将代码移植到一个已知硬件工作正常的开发板上测试(使用相同的CAN控制器芯片)。
    • 如果使用了复杂的驱动库(如HAL库),检查其配置和用法是否正确。
    • 在总线上挂一个可靠的已知工作节点(或者CAN分析仪),观察该节点是否能收到报文。这可以终极判断TX信号是否真的发出并到达总线。
  6. 检查特定寄存器/标志: 在发送函数后,查询CAN控制器的发送状态寄存器、错误状态寄存器(如CAN_ESR),了解控制器的内部状态和是否有错误发生(如仲裁丢失、错误被动等),这些错误可能阻止发送完成或导致信号不正常。

最常见的原因:

遵循以上步骤,从基础硬件到软件配置,再到动态测量,逐步排查,应该能找到问题所在。祝你调试顺利!

CAN loopback模式测试

CAN loopback 模式是一种用于自测试和调试的 CAN 总线工作模式

2025-01-18 16:29:42

can总线的故障波形有哪些

详细介绍CAN总线的故障波形及其原因和解决方法。 故障波形概述 故障波形

2024-06-16 10:04:58

STM32F302 CAN测试回环模式can_Tx引脚没有波形是为什么?

测试了回环模式,可以正常工作,在Tx上可以看到波形。换成正常模式,DEB

2024-03-29 06:00:17

TX-1C普通版原理图下载

TX-1C普通版原理图下载

资料下载 ah此生不换 2021-12-13 16:07:52

爱华立体声盒式录音机HS-TX481/HS-TX421V

爱华立体声盒式录音机HS-TX481/HS-TX421V

资料下载 迪克来了 2021-05-27 09:29:15

爱华立体声盒式录音机HS-TX481/HS-TX481V

爱华立体声盒式录音机HS-TX481/HS-TX481V

资料下载 迪克来了 2021-05-26 10:28:47

爱华立体声盒式录音机HS-TX526/HS-TX529

爱华立体声盒式录音机HS-TX526/HS-TX529

资料下载 迪克来了 2021-05-26 10:25:49

爱华立体声盒式磁带收音机HS-TX506/HS-TX606

爱华立体声盒式磁带收音机HS-TX506/HS-TX606

资料下载 迪克来了 2021-05-26 09:52:08

为什么FlexCAN0在禁用环回模式后其CAN_TX引脚上的数据都消失了呢

个 FlexCAN0 中使用了环回模式并且它正在工作。但是在禁用环回模式后,我看不到带有范围的 CAN_TX

2022-12-13 08:47:02

如何知道CANFD引脚使用的是哪种模式

使用 CANFD 时我不能使用没有 FD_MODE 的那些但仅用于 CAN2.0 吗?引脚如何知道使用的是哪种

2022-12-13 06:12:58

CAN收发器的引脚CAN_RX和CAN_TX出现错误有没有办法去解决呢

我发现收发器引脚 CAN_RX 和 CAN_TX 的连接连接到 CAN_TX

2022-12-08 07:51:28

CH32V203F6P6的CAN的LOOPBACK_MODE模式,为啥TX没有波形呢?

波,结果用示波器看为第二张图,幅值也很小大概0.3V,所以我认为是没有波形的,又测了一下PA11,默认为高电平。串口一直显示发送成功,还有一件事,我尝试配置到

2022-10-18 06:26:07

28377D,can-loop-back-cpu1例程,外部回环测试下,Tx引脚自发自收,应该是有波形的吧

示波器观察Tx上并没有波形。引脚改进的代码如下, InitGpio();

2019-12-17 19:38:23

CAN收发器的TX与RX能否直接与普通串口相连

CAN收发器的TX与RX能否直接与普通串口相连,如果可以的话收到的是什么数据呢?

2019-07-21 16:31:45

无法看到带有示波器的CAN_TX引脚上的任何数据

禁用环回模式后,我无法看到带有示波器的CAN_TX引脚上的任何数据。我配置了: b [0]为

2019-06-19 09:28:37
7天热门专题 换一换
相关标签