CAN 普通模式 TX引脚没有波形
更多
好的,遇到CAN总线在普通模式下TX引脚没有波形(没有信号输出),通常意味着数据根本没有从CAN控制器成功发出。这需要从多个方面进行排查:
核心排查方向:
-
硬件连接与电源:
- 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引脚通常为高电平)。
-
软件配置与初始化:
- 时钟: 确认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, 数据字节)并请求发送。
- 确认没有其他错误(如硬件复位、总线关闭状态)阻止发送。
-
信号测量方法:
- 测量点: 你测量的“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欧姆的终端电阻(作为假负载),模拟一个最小的总线环境。这可以解决某些收发器在没有总线负载时表现异常的问题。
- 测量点: 你测量的“TX引脚”是MCU(或CAN控制器)的TX引脚?还是CAN收发器的TXD(输入)引脚?或者误测了收发器的TX(即总线的CANH/CANL)?
-
硬件故障:
- 在确认软件配置无误、供电、使能都正确后,如果MCU TX引脚依然没有信号,考虑:
- MCU/CAN控制器损坏。
- PCB走线问题: 布线错误、走线严重受损。
- 如果MCU TX引脚有信号(TTL/CMOS电平),但收发器输出没有差分信号(CANH/CANL之间无变化),考虑:
- CAN收发器损坏。
- 收发器输入引脚短路或连接错误。
- 收发器型号选择错误。
- 收发器周围的保护电路(如TVS管)损坏导致短路。
- 在确认软件配置无误、供电、使能都正确后,如果MCU TX引脚依然没有信号,考虑:
建议的排查流程:
- 断电检查硬件: 仔细核对原理图,特别是MCU TX -> 收发器 TXD 的连接、收发器电源、收发器使能引脚、终端电阻(如有)。用万用表测量MCU TX引脚到收发器TXD引脚的通断性、以及TX引脚/GND/TX引脚/VCC之间是否有短路。
- 上电静态测量:
- 测量收发器使能引脚的电平是否符合其激活要求(High使能则为高电平,Low使能则为低电平)。
- 测量MCU TX引脚在空闲状态下的电平(通常应为高电平)。
- 测量收发器电源引脚电压是否正常。
- 测量CANH与CANL之间的差分电压(空载或带假负载),在静默状态下应接近0V(允许较小偏差),有信号传输时应有±1.5V左右(取决于波特率/收发器)的剧烈变化。但此时TX没有波形,应该还是接近0。
- 确认软件: 仔细检查MCU时钟初始化、GPIO复用配置(设置成CAN TX功能输出)、CAN控制器初始化代码(尤其波特率、SLEEP模式位是否清零、INIT模式是否退出)。
- 执行发送并示波器测量: 运行发送代码,同时用示波器(确保探头地可靠连接在MCU GND上)观测:
- MCU的TX引脚(最重要!): 如果这里出现代表CAN数据帧的高电平变化,则MCU侧基本正常,问题在收发器或之后的连接。
- 收发器的TXD引脚(输入): 应该与MCU TX信号一致。如果不一致,检查中间连线。
- 收发器的RXD引脚(输出): 用于回读总线状态给MCU。对于发送问题不是首要诊断点,但如果它一直是高/低电平不动,也从侧面反映收发器工作异常(或者接收回路未配置)。
- CANH与CANL之间的差分电压: (需要用示波器差分测量或两个通道相减)。如果发送正常,应该能看到清晰的差分信号。如果看不到,且收发器输入TXD有信号,则收发器或其后级问题。
- 简化与隔离:
- 注释掉或删除所有不相关的代码,只保留初始化CAN和发送一个固定帧的功能。
- 如果可能,尝试将代码移植到一个已知硬件工作正常的开发板上测试(使用相同的CAN控制器芯片)。
- 如果使用了复杂的驱动库(如HAL库),检查其配置和用法是否正确。
- 在总线上挂一个可靠的已知工作节点(或者CAN分析仪),观察该节点是否能收到报文。这可以终极判断TX信号是否真的发出并到达总线。
- 检查特定寄存器/标志: 在发送函数后,查询CAN控制器的发送状态寄存器、错误状态寄存器(如CAN_ESR),了解控制器的内部状态和是否有错误发生(如仲裁丢失、错误被动等),这些错误可能阻止发送完成或导致信号不正常。
最常见的原因:
- 收发器使能(EN/STB)引脚未正确激活(悬空或逻辑错误)。
- GPIO未配置为复用功能输出模式(配置成普通GPIO或输入)。
- CAN控制器未真正进入正常工作模式(SLEEP位未清零 或 INIT位未清零)。
- 硬件连线错误(TX接错到收发器的其他引脚或未连接)。
- 电源问题或短路。
遵循以上步骤,从基础硬件到软件配置,再到动态测量,逐步排查,应该能找到问题所在。祝你调试顺利!
为什么FlexCAN0在禁用环回模式后其CAN_TX引脚上的数据都消失了呢
个 FlexCAN0 中使用了环回模式并且它正在工作。但是在禁用环回模式后,我看不到带有范围的 CAN_TX
2022-12-13 08:47:02
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
7天热门专题
换一换
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- EDA是什么?有什么作用?
- dtmb信号覆盖城市查询
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- amoled屏幕和oled区别
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机