STM32_内核外设_CAN

STM32F1内核外设CAN的构成

CAN的数据帧

图示

mark

讲解

mark

控制/状态配置

寄存器CAN_MCR

MCR是主控制器,控制CAN外设的一系列功能。

功能称 含义
DBF 调试冻结功能 分为工作状态与静止收发状态
TTCM 时间触发模式 它用于配置 CAN 的时间触发通信模式,在此模式下,CAN 使用它内部定时器产生时间戳,并把它保存在CAN_RDTxR、CAN_TDTxR 寄存器中。内部定时器在每个 CAN 位时间累加,在接收和发送的帧起始位被采样,并生成时间戳
ABOM 自动离线管理 设置该模式后,CAN控制器会自动检测,当检测到发送错误或接收错误超过一定值时,会进入离线状态。离线状态不能接收或发送报文。
ABOM 自动离线管理 CAN 外设可以使用软件进入低功耗的睡眠模式,如果使能了这个自动唤醒功能,当 CAN 检测到总线活动的时候,会自动唤醒。
AWUM 自动唤醒 设置这个功能后,当报文发送失败时会自动重传至成功为止。若不使用这个功能,无论发送结果如何,消息只发送一次。
RFLM 锁定模式 FIFO 锁定模式,该功能用于锁定接收FIFO。锁定后,当接收 FIFO 溢出时,会丢弃下一个接收的报文。若不锁定,则下一个接收到的报文会覆盖原报文。
NART 自动重传 设置这个功能后,当报文发送失败时会自动重传至成功为止。若不使用这个功能,无论发送结果如何,消息只发送一次。
TXFP 报文发送优先级的判定方法 当邮箱中有多个报文待发送时,本功能可以控制它是根据报文的 ID 优先级还是报文存进邮箱的顺序来发送。

寄存器CAN_BTR

主要设置CAN的时序,以及测试模式的选择

测试模式讲解

模式名称 模式讲解
正常模式 可向总线发送、接收数据
静默模式 只能从总线接收数据
回环模式 本机的CAN_RX可以接收到本机CAN_TX的数据,总线可以接收数据,但CAN_RX不能接收总线的数据
回环静默模式 本机的CAN_RX可以接收到本机CAN_TX的数据,总线不可以接收数据,但CAN_RX不能接收总线的数据

位时序及波特率

波特率主要是由位时间决定的。
mark

Ts1和Ts2 通过软件编程来设定,从而设定波特率。

发送邮箱

总共3个邮箱,每个邮箱都有以下寄存器

发送报文的流程

  1. 把报文各个段分解,放入对应寄存器
  2. 在CAN_TIxR中的请求寄存器位TMIDxR_TXRQ置一

寄存器

标识符寄存器寄存器 CAN_TIxR
用来存储以下数据:
报文ID(11位)
扩展ID(18位)
IDE(1位)
RTR(1位)

数据长度控制寄存器 CAN_TDTxR
存储DLC段(4位)

数据寄存器 CAN_TDLxR
存储Data0-Data3四个字节的数据

数据寄存器CAN_TDHxR
存储Data4-Data7四个字节的数据

——————————————————————

接收FIFO

标识符寄存器 CAN_RIxR
存储收到报文的 ID、扩展 ID、IDE 位及 RTR 位

数 据 长 度 控 制 寄 存 器CAN_RDTxR
存储收到报文的 DLC 段

低位数据寄存器 CAN_RDLxR
存储收到报文数据段的 Data0-Data3 这四个字节的内容

高位数据寄存器 CAN_RDHxR
存储收到报文数据段的 Data4-Data7 这四个字节的内容
————————————————————————————

验收筛选器

筛选器分类

按长度分类

  1. 检查STDID[10:0]、 EXTID[17:0]、 IDE 和 RTR 位,一共 31 位。
  2. 检查 STDID[10:0]、 RTR、 IDE 和 EXTID[17:15],一共 16 位。

按模式分类

标识符列表模式
  1. 要求报文 ID 与列表中的某一个标识符完全相同才可以接收。可以理解成白名单(与其相同才可以接收)
掩码模式
  1. 它把可接收报文 ID 的某几位作为列表,这几位被称为掩码。可以把它理解成关键字搜索,只要掩码(关键字)相同,就符合要求

模式讲解

mark

32位掩码模式

CAN_FxR1 存储 ID
CAN_FxR2 存储哪个位必须要与 CAN_FxR1 中 的 ID 一致。
两个寄存器表示1组掩码。

32位标识符模式

CAN_FxR1 和 CAN_FxR2 各存储 1 个 ID,2 个寄存器表示 2 个筛选的ID

16位掩码模式

CAN_FxR1 :高 16 位存储 ID,低 16 位存储哪个位必须要与高 16 位的ID 一致;
CAN_FxR2 :高 16 位存储 ID,低 16 位存储哪个位必须要与高 16 位的ID 一致2 个寄存器表示 2 组掩码。

16 位标识符模式

CAN_FxR1 和 CAN_FxR2 各存储 2 个 ID,2 个寄存器表示 4 个筛选的ID。

CAN2外设结构

与CAN1外设相同
筛选器与CAN1共用

发布了3 篇原创文章 · 获赞 1 · 访问量 63

猜你喜欢

转载自blog.csdn.net/DoctorQM/article/details/105592083