STM32 CAN控制器
1 概述
STM32 CAN控制器(bxCAN),支持CAN 2.0A 和 CAN 2.0B Active版本协议。CAN 2.0A 只能处理标准数据帧且扩展帧的内容会识别错误,而CAN 2.0B Active 可以处理标准数据帧和扩展数据帧。
2 bxCAN 特性
- 波特率最高可达1M bps
- 支持时间触发通信(CAN的硬件内部定时器可以在TX/RX的帧起始位的采样点位置生成时间戳)
- 具有3级发送邮箱
- 具有3级深度的2个接收FIFO
- 可变的过滤器组(最多28个)
3 CAN 控制器模式
CAN的控制器模式有工作模式、测试模式和调试模式。
3.1 工作模式
CAN控制器的工作模式有三种:初始化模式、正常模式和睡眠模式。工作流程如下图:
3.2 测试模式
CAN控制器的测试模式有三种:静默模式、环回模式和环回静默模式。在初始化模式下进行配置。
4 CAN是如何工作的(CAN框图)
4.1 CAN通信框图简化版
4.2 CAN框图
① CAN内核
包含各种控制/状态/配置寄存器,可以配置模式、波特率等
②发送邮箱
用来缓存待发送的报文,最多可以缓存3个报文
③接收FIFO
缓存接收到的有效报文
④接收过滤器
筛选有效报文
4.3 接收过滤器
屏蔽位寄存器中位值为1,表示与ID要必须匹配;位值为0,表示可不与ID匹配。
在使能过滤器情况下,总线上广播的报文ID与过滤器的配置都不匹配,CAN控制器会丢弃该报文,不会进入到接收FIFO中。
注意:标识符选择位IDE和帧类型RTR需要一致。不同过滤器组的工作模式可以设置为不同。