43-3-STM32的CAN外设
1.STM32 的芯片中具有 bxCAN 控制器 (Basic Extended CAN), 它支持 CAN 协议 2.0A 和
2.0B 标准。
2.外设中具有 3 个发送邮箱,发送报文的优先级可以使用软件控制,还可以记录发送的时间;具有 2 个 3 级深度的接收 FIFO,可使用过滤功能只接
收或不接收某些 ID 号的报文;可配置成自动重发;不支持使用 DMA 进行数据收发。
3.STM32 的 CAN 架构:
1. CAN 控制内核
2. CAN 发送邮箱
3. CAN 接收 FIFO
在标号处的是 CAN 外设的接收 FIFO,它一共有 2 个
接收 FIFO,每个 FIFO 中有 3 个邮箱,即最多可以缓存 6 个接收到的报文。当接收到报文
时, FIFO 的报文计数器会自增,而 STM32 内部读取 FIFO 数据之后,报文计数器会自减,
我们通过状态寄存器可获知报文计数器的值,而通过前面主控制寄存器的 RFLM 位,可设置锁定模式,锁定模式下 FIFO 溢出时会丢弃新报文,非锁定模式下 FIFO 溢出时新报文会
覆盖旧报文。
4. 验收筛选器
在标号处的是 CAN 外设的验收筛选器,一共有 28 个
筛选器组,每个筛选器组有 2 个寄存器, CAN1 和 CAN2 共用的筛选器的。
5. 整体控制逻辑
4.CAN外设相关结构体:
(1).CAN_InitTypeDef
CAN 初始化结构体及初始化函数来控制 CAN 的工作方式 。
(2).CanTxMsg及CanRxMsg
提供了收发报文使用的结构体及收发函数。
(3).CAN_FilterInitTypeDef
配置控制筛选器模式及 ID 的结构体