news 2026/6/17 11:16:19

AED绞车控制板 — CAN 通信上电失败问题分析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AED绞车控制板 — CAN 通信上电失败问题分析

背景

在绞车控制系统中,控制板(aed_winch_control v1.1)通过 CAN 总线驱动AK60-6 v1.1 KV80智能伺服电机实现正反转控制。操作员通过控制板上的装载开关(P6)和卸载开关(P7)触发 MCU,MCU 将开关量转换为 CAN 命令发给电机。

现象

  • 控制板第一次上电后,与电机的 CAN 通信概率性失败(无响应、无应答)。
  • 将电机 CAN 通信线(P14)插拔一次后,通信即恢复正常。
  • 再次断电重新上电,问题可能再次复现。

电路结构梳理

节点说明
P14电机 CAN 接口:pin1 = GND,pin2 = CAN_H,pin3 = CAN_L
U6CAN 收发器 TJA1042T/3/1J;VCC = input_5V,VIO = 3V3
R19120 Ω 终端电阻,硬接在 CANH/CANL 之间
U6 STB直接接 GND(常驻 Normal 模式,无需软件控制)
MCUCAN_TX / CAN_RX → U6 TXD / RXD
P6 / P7装/卸开关输入,1 kΩ 限流 + PESD3V3 ESD 保护 + 100 nF 滤波 + 4.7 kΩ 上拉,连接 MCU GPIO

P6 / P7 是开关量输入,由固件翻译成 CAN 指令,不直接操作 CAN 总线。

根本原因分析

核心判断:上电时序竞争 → CAN 控制器进入 Bus-Off → 固件无自恢复

触发路径
控制板上电 │ ├─ MCU 启动完成(< 100 ms)─→ 立即开始发 CAN 帧 │ └─ AK60-6 上电自检(需 数百 ms)─→ 尚未就绪,无法响应 ACK │ ↓ 发送帧得不到 ACK TEC(发送错误计数)快速递增 │ TEC ≥ 128 → Error-Passive │ TEC ≥ 256 → Bus-Off(CAN 控制器停止收发) │ 若固件未启用 ABOM 自动恢复 │ ↓ 控制器永久锁死在 Bus-Off 即使电机随后就绪,通信也无法建立
插拔为何有效

插拔电机 CAN 线的本质:

  1. 拔出瞬间:移除总线上驱动显性的来源(或切断错误帧的物理路径),总线回到隐性空闲状态。
  2. MCU CAN 控制器检测到连续128 × 11 个隐性位→ 自动退出 Bus-Off(如果硬件支持);或者拔出期间 MCU 侧总线干净,重启 CAN 外设后恢复正常。
  3. 重新插入时:电机已完成自检、进入工作模式,握手成功 → 通信正常。

这与"规律性上电失败、插拔即恢复"的现象完全吻合。

次要风险:CAN_TX 上电初期可能为低

STM32 等 MCU 在 boot 阶段 GPIO 默认为输入/浮空,CAN_TX 引脚若短暂为低,将通过 U6 把总线强制拉成显性,导致总线被锁死。此时另一方同样无法通信。

复现条件

条件说明
控制板与电机同时上电概率最高
控制板先于电机上电必然复现(电机还没就绪)
电机先上电、完成自检后控制板再上电一般不复现

修复方案

优先级 1 — 固件(无需改板)

  1. 开启 ABOM 自动 Bus-Off 恢复

    STM32 bxCAN 初始化时设置:

    hcan.Init.ABOM=ENABLE;// 自动 Bus-Off 恢复

    FDCAN:

    hfdcan.Init.AutoRetransmission=ENABLE;hfdcan.Init.TransmitPause=ENABLE;
  2. 上电握手 + 重试机制

    不要上电后立即发业务帧,先做"等待 + 心跳 + 重试":

    // 上电延时,等待电机就绪HAL_Delay(1000);// 带超时的握手循环for(intretry=0;retry<5;retry++){if(CAN_SendHeartbeat()==OK)break;// Bus-Off 检测:重新初始化 CANif(CAN_IsBusOff()){HAL_CAN_Stop(&hcan);HAL_Delay(200);HAL_CAN_Start(&hcan);}HAL_Delay(500);}
  3. 保证 CAN_TX 上电期间为隐性(高)

    在 CAN 初始化之前,先将 CAN_TX 对应 GPIO 配置为推挽输出并置高,避免浮空拉低总线。

优先级 2 — 硬件确认

检查项方法预期值
总线终端电阻断电测 CANH-CANL≈ 60 Ω(两端各 120 Ω 并联)
AK60-6 是否自带终端电阻查电机手册或实测确认是否需要移除一端
P14 连接器焊接目视 + 万用表无虚焊,导通正常
上电时序示波器验证抓 CANH/CANL 上电波形是否长时间停在显性(差分 ~2 V 不回隐性)

结论

首要原因:上电时序竞争触发 CAN 控制器 Bus-Off,固件缺少 ABOM 自动恢复与重试导致通信永久锁死。

优先从固件层修复(ABOM + 上电延时 + 重试),成本最低、无需改板,大概率一次性解决问题。同时建议用示波器验证上电瞬间总线波形,排除终端电阻配置和接触不良的叠加影响。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/17 11:13:59

Python学习第88天:详解神经网络模型——从感知机到深度学习

Python学习100天(从入门到精通系列文章) 文章目录 Python学习100天(从入门到精通系列文章) 前言 一、神经网络的基本概念 1.1 从生物神经元到人工神经元 1.2 神经网络的基本构成 二、神经网络的工作原理 2.1 最简单的神经网络 2.2 神经元的数学表达 2.3 常用激活函数详解 (…

作者头像 李华
网站建设 2026/6/17 11:11:08

3分钟免费实现Figma中文界面:设计师必备的终极本地化方案

3分钟免费实现Figma中文界面&#xff1a;设计师必备的终极本地化方案 【免费下载链接】figmaCN 中文 Figma 插件&#xff0c;设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 还在为Figma的英文界面而烦恼吗&#xff1f;想象一下&#xff0c;当…

作者头像 李华
网站建设 2026/6/17 11:01:38

当算法有了“五感”:多模态数据融合如何向人体感官协同学习?

当算法有了“五感”&#xff1a;多模态数据融合如何向人体感官协同学习&#xff1f; 引言 你有没有想过&#xff1a;为什么自动驾驶汽车在浓雾中容易“失明”&#xff0c;而人类司机却能凭耳朵听到对向车鸣笛、凭身体感受到路面颠簸&#xff0c;依然做出正确判断&#xff1f;为…

作者头像 李华
网站建设 2026/6/17 10:53:52

HoRain云--React Memo

&#x1f3ac; HoRain云小助手&#xff1a;个人主页 &#x1f525; 个人专栏: 《Linux 系列教程》《c语言教程》 ⛺️生活的理想&#xff0c;就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站&#xff0c;性价比超高&#xff0c;大内存超划算&#xff01;…

作者头像 李华
网站建设 2026/6/17 10:46:24

ARM Cortex-M3 技术解析:核寄存器R1-R15介绍及使用

作为嵌入式开发领域的经典处理器内核&#xff0c;ARM Cortex-M3&#xff08;CM3&#xff09;凭借其高效能、低功耗和丰富特性&#xff0c;在工业控制、物联网、消费电子等领域广泛应用。而内核寄存器是我们调试代码&#xff0c;理解程序运行逻辑必不可少的好帮手&#xff0c;理…

作者头像 李华