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是两种常见的汽车通信协议,它们在速度和可靠性方面有所不同。以下是关于
2024-01-05 17:58:57
STM32单片机的CAN现场总线实验步骤
最近在搞stm32实验板的can现场总线实验,之前只是搞过STC51的串口通信,相比之下,发觉can总线都挺复杂的。开始时,知道自己是新手,
资料下载
佚名
2021-03-26 16:48:08
容错CAN收发器TJA1054电子资料
概述:TJA1054是飞利浦半导体公司生产的一款容错CAN收发器。该TJA1054是在一个控制区域网络的公交线路的协议控制器和物理线路(CAN)
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- dtmb信号覆盖城市查询
- EDA是什么?有什么作用?
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- amoled屏幕和oled区别
- 单片机和嵌入式的区别是什么
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机