0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

stm32 can 容错

分享:

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总线为何要分为高速CAN容错CAN呢?

问下车辆can总线为何要分为高速CAN容错CAN呢?

梅利号 2023-05-09 10:38:03

容错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总线学习笔记|STM32CAN环回测试

CAN基础知识介绍文中介绍了CAN协议的基础知识,以及STM32F4芯片的CAN控制器相关知识,下面将通过实例,利用STM32CubeMX图形化配置工具,来实现CAN通讯的环回测试

2023-01-04 15:23:15

基于STM32实现简单的CAN通讯过程

CAN通讯在车辆工程中用的非常广泛,本文将基于stm32实现简单的can通讯过程。

2022-03-02 08:58:17

CAN总线学习笔记|CAN盒测试STM32CAN中断接收

CAN基础知识介绍文中介绍了CAN协议相关的基础知识,以及STM32F4芯片的CAN控制器相关知识,下面将通过实例,利用STM32CubeMX图形化配置工具,并配合CAN盒,来实现CAN通讯的中断收发测试

2023-01-16 17:17:44

探索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总线由德国BOSCH公司开发,最高速率可达到1Mbps。CAN容错能力特别强,CAN控制器内建了强大的检错和处理机制。

2022-11-03 10:45:58

高速CAN容错CAN、LIN总线的区别是什么

花点时间看了一些关于LIN总线基础的内容,把其中的关键点提取了出来,在这里分享给大家。在这里你可能要问不都有CAN总线了吗?这个LIN总线又是从哪里来的?其实理由很简单,就是CAN总线太贵啦!处处

2020-12-06 09:37:00

CAN总线入门知识科普

CAN总线由德国BOSCH公司开发,最高速率可达到1Mbps。CAN容错能力特别强,CAN控制器内建了强大的检错和处理机制。

2022-05-14 14:29:05

STM32 CAN总线筛选器的四种情况

STM32CAN控制器每个筛选器组由两个32位的寄存器组成。

2019-11-10 09:02:00

嵌入式CAN总线入门了解

CAN总线由德国BOSCH公司开发,最高速率可达到1Mbps。CAN容错能力特别强,CAN控制器内建了强大的检错和处理机制。

2022-07-22 09:32:11

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

STM32 CAN配置使用工具

STM32 CAN 配置使用工具:CubeMX硬件:STM32F105RBT61.概述STM32F105x双canCAN1为主,CAN2为从,使用CAN2必须使能CAN1的时钟,CAN1/CAN

云汉007 2021-08-19 09:29:00

加载更多
相关标签