CAN学习笔记3:STM32 CAN控制器介绍

STM32 CAN控制器

1 概述

STM32 CAN控制器(bxCAN),支持CAN 2.0A 和 CAN 2.0B Active版本协议。CAN 2.0A 只能处理标准数据帧且扩展帧的内容会识别错误,而CAN 2.0B Active 可以处理标准数据帧和扩展数据帧。

2 bxCAN 特性

  1. 波特率最高可达1M bps
  2. 支持时间触发通信(CAN的硬件内部定时器可以在TX/RX的帧起始位的采样点位置生成时间戳)
  3. 具有3级发送邮箱
  4. 具有3级深度的2个接收FIFO
  5. 可变的过滤器组(最多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需要一致。不同过滤器组的工作模式可以设置为不同。

4.4 CAN控制器位时许

5 相关寄存器

相关推荐
我爱我家diyer3 小时前
使用STM32的HAL库开发GD32F303CGT6
stm32·单片机·嵌入式硬件
Lips6113 小时前
2026.1.25力扣刷题笔记
笔记·算法·leetcode
WK100%3 小时前
二叉树经典OJ题
c语言·数据结构·经验分享·笔记·链表
沉默-_-3 小时前
力扣hot100-子串(C++)
c++·学习·算法·leetcode·子串
googleccsdn4 小时前
ENSP Pro LAB笔记:配置M-LAG双归接入三层网络(V-STP + Monitor Link + OSPF)
网络·笔记·网络协议
●VON4 小时前
从系统亮度监听到 UI 重绘:Flutter for OpenHarmony TodoList 深色模式的端到端响应式实现
学习·flutter·ui·openharmony·布局·von
新-code4 小时前
ros学习
学习·机器人
新能源BMS佬大4 小时前
【仿真到实战】STM32落地EKF算法实现锂电池SOC高精度估算(含硬件驱动与源码)
stm32·嵌入式硬件·算法·电池soc估计·bms电池管理系统·扩展卡尔曼滤波估计soc·野火开发板
yi.Ist4 小时前
关于若干基础的几何问题
c++·学习·算法·计算几何
Hello_Embed4 小时前
USB 虚拟串口源码改造与 FreeRTOS 适配
笔记·单片机·嵌入式·freertos·usb