首页 > 技术文章 > STM32F4 CAN 接收筛选器、标识符配置

yanxiaodong 2020-09-29 16:36 原文

STM32F4 CAN接收

发送器将消息广播给所有接收器。接收器节点根据标识符的值来确定软件是否需要该消息。如果不需要,必须在无软件干预的情况下丢弃该消息。

标准标识符:11位

扩展标识符:18位

有2个CAN:CAN1、CAN2。

CAN1和CAN2共享512字节SRAM存储器。

有2个FIFO:FIFO0、FIFO1。

每个FIFO提供3个邮箱。

有28个可配置的筛选器组,有的器件提供14个筛选器组。

CAN1和CAN2共享28个或14个筛选器组,可以配置CAN2的起始筛选器编号。

每个筛选器组包含2个32位寄存器(共64位)。

32位寄存器可配置不同的尺度:双16位、32位。

每个筛选器可配置不同的模式:标识符屏蔽模式(掩码模式)、标识符列表模式。

根据每个筛选器组的尺度和模式配置,1个筛选器组中可能包含1、2、4个筛选器,筛选器按从小到大的顺序编号。

如上图,当筛选器32位寄存器尺度配置为双16位,模式配置为标识符列表模式时,1个筛选器组的2个32位寄存器将作为4个16位筛选器使用。筛选器编号分别为n,n+1,n+2,n+3。

 

每个筛选器组可分配到FIFO0或FIFO1。

筛选器的配置很灵活,上图是其中一个例子。

上图中,筛选器组共有14个。

筛选器编号:FIFO0和FIFO1分开排序。

每个筛选器组可以选择不同的FIFO,可以配置不同的尺度和模式。

筛选器组0:分配到FIFO0,标识符列表模式,32位尺度。FIFO0筛选器编号0为一个32位的标识符,FIFO0筛选器编号1为另一个32位标识符。

筛选器组1:分配到FIFO0,标识符掩码模式,32位尺度。FIFO0筛选器编号2包括1个32位的标识符和1个32位的掩码。

筛选器组2:分配到FIFO1,标识符掩码模式,16位尺度。FIFO1筛选器编号0包括1个16位标识符和1个16位掩码。FIFO1筛选器编号1包括1个16位标识符和1个16位掩码。

以此类推。

  

CAN接收寄存器配置时需要注意1个容易出错的地方,如果配置错了,CAN将无法接收数据。

筛选器组i寄存器x:CAN_FiRx

假设是

16位筛选器

D15

D14

D13

D12

D11

D10

D9

D8

D7

D6

D5

D4

D3

D2

D1

D0

STDID[10:0]

RTR

IDE

EXTID[17:15]

 

标准标识符是从第5位开始,所以如果标准标识符为0x12,则需要设置的是0x12<<5。

 

推荐阅读