关于STM32中CAN Filter的笔记


Rx mailbox的identifier register有32位,最低三位是0:reserved  1:RTR 2:IDE,因此extID的最低位存于id register的低第3位;而stdID的最低位从id register的21位开始,stdID占据高11位。

filter bank register也是32位,和mailbox id register一一对应,因此filter bank bits对RTR和IDE也有效。STM32的fwlib中CAN_FilterIdHigh/Low CAN_FilterMaskIdHigh/Low都是raw bits,而RxMessage.StdId之类却由fwlib管理offset,因此两者不能直接对应,filter register需要手动移位来控制。

如果要接受stdID为0x1的数据帧: