STM32 的 CAN(控制器局域网)模块具备一定的容错能力,主要通过硬件和协议层的错误检测与处理机制实现。以下是其容错特性的详细说明及配置建议:
1. CAN 协议自带的容错机制
STM32 的 CAN 控制器遵循 CAN 2.0A/B 协议,内置以下容错机制:
- 错误检测:自动检测位错误(Bit Error)、格式错误(Form Error)、应答错误(Acknowledgment Error)等。
- 自动重传:发送节点检测到错误(如未收到应答)时,自动重发数据帧(除非配置为禁用重传)。
- 错误计数器:每个 CAN 节点维护 发送错误计数器(TEC) 和 接收错误计数器(REC)。根据错误次数,节点会进入不同状态:
- 主动错误状态(Error Active):正常通信,可主动发送错误帧。
- 被动错误状态(Error Passive):错误计数器较高,仍可通信但需延迟发送。
- 总线关闭状态(Bus Off):错误计数器超限,节点停止通信,需手动或自动恢复。
2. STM32 CAN 控制器的容错配置
(1) 错误中断与处理
在代码中需配置错误中断,及时处理错误事件:
// 使能 CAN 错误中断
HAL_CAN_ActivateNotification(&hcan, CAN_IT_ERROR_WARNING | CAN_IT_ERROR_PASSIVE | CAN_IT_BUSOFF);
// 错误回调函数(需用户实现)
void HAL_CAN_ErrorCallback(CAN_HandleTypeDef *hcan) {
if (__HAL_CAN_GET_FLAG(hcan, CAN_FLAG_BOFF)) {
// 总线关闭状态:需重启 CAN 控制器
HAL_CAN_ResetErrorCounter(hcan);
HAL_CAN_Start(hcan);
}
}
(2) 自动重传配置
默认启用自动重传,可通过寄存器 CAN_MCR 中的 NART 位禁用(非必要不建议):
hcan.Init.NART = ENABLE; // 禁用自动重传(NART=1)
(3) 总线恢复
当节点进入 Bus Off 状态时,需通过 软件复位 或 自动恢复(部分型号支持)重新激活 CAN 控制器:
// 手动恢复总线
HAL_CAN_Stop(&hcan);
HAL_CAN_Start(&hcan);
3. 硬件设计增强容错
-
CAN 收发器选择:
- 使用支持 ISO 11898-2(标准 CAN)或 ISO 11898-3(低速容错 CAN)的收发器(如 TJA1050、TJA1042)。
- 低速容错 CAN(如 TJA1054)支持单线通信、更高抗干扰能力,适合恶劣环境。
-
物理层优化:
- 使用屏蔽双绞线,并正确连接 120Ω 终端电阻。
- 避免长分支线,减少信号反射。
4. 软件优化建议
- 波特率校准:确保所有节点的波特率配置一致,且采样点(通常设置为 75%~87.5%)适应总线长度。
- 错误监控:定期读取错误计数器(
HAL_CAN_GetError()),统计错误类型。 - 超时重发:在应用层添加超时重发逻辑,作为硬件自动重传的补充。
5. 低速容错 CAN 的注意事项
若需实现 低速容错 CAN(Fault-Tolerant CAN):
- STM32 的 CAN 控制器本身不支持低速模式,需外接 低速容错 CAN 收发器(如 TJA1054)。
- 配置收发器为低速模式(通常通过引脚控制)。
总结
STM32 的 CAN 模块通过协议层错误处理、自动重传和错误状态管理实现容错,结合硬件设计(收发器、布线)和软件优化(错误监控、超时重发),可显著提升系统稳定性。在极端环境下,建议使用低速容错 CAN 方案。
容错can和高速can的区别
容错CAN(Controller Area Network)和高速CAN是两种常见的汽车通信协议,它们在速度和可靠性方面有所不同。以下是关于容错CAN和高速CAN的详尽、详实和细致的1500字
2024-01-05 17:58:57
低速容错CAN的容错机制介绍
汽车的CAN总线大致可以分为三大类,分别是:单线CAN(GM专用的低速CAN)、高速CAN(通信速率高)以及低速容错CAN(通信速率较低但容错性能好)。
2023-05-04 10:52:10
can总线的容错can介绍
CAN-bus家族中有三大成员,分别是高速CAN、容错CAN、单线CAN。其中容错CAN又叫低速CAN,它与最常用的高速CAN有什么异同呢?这里将与大家分享下对容错CAN的认识。
jinheng
2019-05-24 08:09:16
容错CAN与最常用的高速CAN有什么异同呢?
什么是容错CAN?容错CAN和高速CAN有哪些相同点?容错CAN和高速CAN有哪些不同点?容错CAN的优缺点分别是什么?容错CAN的应用电路有哪些?
维生素B2
2021-07-15 07:48:28
科普系列:低速容错CAN的容错机制介绍
作者|TYT小编|吃不饱汽车的CAN总线大致可以分为三大类,分别是:单线CAN(GM专用的低速CAN)、高速CAN(通信速率高)以及低速容错CAN(通信速率较低但容错性能好)。本文所要讲述的是低速
2023-03-06 14:31:57
容错CAN收发器TJA1054电子资料
概述:TJA1054是飞利浦半导体公司生产的一款容错CAN收发器。该TJA1054是在一个控制区域网络的公交线路的协议控制器和物理线路(CAN)之间的接口。它主要用于forlow速度的应用,高达125K波特率,在乘用...
树没了派
2021-04-21 06:52:22
STM32 CAN接收/发送错误寄存器如何清零?
STM32 CAN接收/发送错误寄存器如何清零? CAN总线是一种常用的串行总线,其具有高可靠性、高速率、容错能力强等特点,广泛应用于汽车电子、制造业自动化、工程控制等领域。在CAN总线的标准中
2023-09-14 14:22:31
CAN总线学习笔记|STM32的CAN环回测试
CAN基础知识介绍文中介绍了CAN协议的基础知识,以及STM32F4芯片的CAN控制器相关知识,下面将通过实例,利用STM32CubeMX图形化配置工具,来实现CAN通讯的环回测试
2023-01-04 15:23:15
CAN总线学习笔记|CAN盒测试STM32的CAN中断接收
CAN基础知识介绍文中介绍了CAN协议相关的基础知识,以及STM32F4芯片的CAN控制器相关知识,下面将通过实例,利用STM32CubeMX图形化配置工具,并配合CAN盒,来实现CAN通讯的中断收发测试
2023-01-16 17:17:44
TJA1055TC,增强型容错CAN收发器
2023-02-16 16:36:25
探索TJA1055:增强型容错CAN收发器的卓越性能
探索TJA1055:增强型容错CAN收发器的卓越性能 在汽车电子领域,CAN(Controller Area Network)总线作为一种关键的通信技术,广泛应用于车辆的各个系统中。而CAN收发器
2026-01-18 15:30:03
深入解析TJA1055:增强型容错CAN收发器的卓越性能与应用
深入解析TJA1055:增强型容错CAN收发器的卓越性能与应用 在汽车电子领域,可靠的通信系统是确保车辆安全和高效运行的关键。CAN(Controller Area Network)总线作为一种
2025-12-18 16:40:03
CAN L对地短路总线波形
当出现CAN L 对地短路这种故障时,根据CAN总线的容错特性,可能出现整个CAN网络无法通信的情况或产生相关故障码。 但是对于某些车系,如海马车系,其CAN L对地短路的容错特性较好,车辆基本能
2023-09-14 16:51:49
深入解析TJA1055:增强型容错CAN收发器的卓越性能与应用
深入解析TJA1055:增强型容错CAN收发器的卓越性能与应用 在汽车电子的领域中,可靠的通信是确保系统稳定运行的关键。CAN(Controller Area Network)总线作为汽车内部通信
2025-12-17 16:40:15
高速CAN、容错CAN、LIN总线的区别是什么
花点时间看了一些关于LIN总线基础的内容,把其中的关键点提取了出来,在这里分享给大家。在这里你可能要问不都有CAN总线了吗?这个LIN总线又是从哪里来的?其实理由很简单,就是CAN总线太贵啦!处处
2020-12-06 09:37:00
用STM32F103做CAN的收发通信的程序思路与代码分享
STM32的标识符屏蔽滤波目的是减少了CPU处理CAN通信的开销。STM32的过滤器组最多有28个(互联型),但是STM32F103ZET6只有14个(增强型),每个滤波器组x由2个32为寄存器,CAN_FxR1和CAN_FxR2组成。
2022-06-14 16:13:05
结合STM32F4关于CAN基本的信息描述
了传统的地址编码方式,理论上讲总线上的互联节点数不受限制,拥有强大的握手与出错管理及重发机制,具有很强的抗干扰能力。 1 STM32 CAN 基础内容CAN网络中主要由CAN控制器和CAN收发器组成
2021-04-02 11:12:00
对STM32 CAN进行配置
STM32 CAN 通信(一)STM32 CAN 配置STM32 CAN 控制器需要配置的参数比较多,本文根据 SAE J1939 协议数据单元 对 STM32 CAN 进行配置。CAN
yuhonglong
2021-08-19 07:32:22
Linux应用开发【第十四章】CAN编程应用开发
物理特性 14.1.6 CAN报文帧 14.1.6.1 CAN报文格式 14.1.6.2 CAN报文帧类型 14.2 CAN编程框架创建 14.3 STM32 CAN应用编程 14.3.1 STM32
2021-12-10 19:29:44
在STM32H743芯片上实现CAN通信的步骤
本篇笔记主要介绍,在STM32H743芯片上实现CAN通信,封装为BSP驱动,为之后实现CAN的高层通信打下基础。
2020-09-14 14:33:15
经典的CAN总线现场故障
CAN L对带电源(正极)短路 当出现CAN L 对电源(正极)短路这种故障时,根据CAN总线的容错特性,可能出现整个CAN网络无法通信的情况或产生相关故障码。 由于CAN L 对电源短路,因此
2023-09-14 16:57:08
STM32奋斗板-CAN通信
STM32奋斗板-CAN通信DEMO-V3/STM32奋斗板-CAN通信DEMO-V3/CM3/STM32奋斗板-CAN通信DEMO-V3/CM3/core_cm3.cSTM32奋斗板-CAN通信
新疆切糕
2021-08-19 06:45:43
斑梨电子USB转CAN串口转换器STM32芯片适配器分析仪多种工作模式多系统兼容
2022-11-14 09:53:42
STM32 CAN配置使用工具
STM32 CAN 配置使用工具:CubeMX硬件:STM32F105RBT61.概述STM32F105x双can,CAN1为主,CAN2为从,使用CAN2必须使能CAN1的时钟,CAN1/CAN
云汉007
2021-08-19 09:29:00