STM32F4 CAN 接收篩選器、標識符配置


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。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM