飞思卡尔MSCAN 滤波器的设定-i.mx RT可参照
一,MSCAN滤波器工作模式
有四种工作模式,由寄存器CANIDAC[IDAM]控制:

二,MSCAN滤波器相关寄存器
1、设置滤波器模式寄存器:CANIDAC
2、设置接收寄存器:CAN_IDAR0~7
3、设置掩码位(屏蔽器):CAN_IDMR0~7
通过设定CAN_IDAR0~7和CAN_IDMR0~7寄存器来指定接收ID,且CAN_IDAR0~3和CAN_IDAR4~7,以及CAN_IDMR0~3和CAN_IDMR4~7是一一对应的。掩码值的位为1则不需要对比,为0则需要对比。
三,MSCAN滤波器实例
基于SDK_2.5.3_FRDM-KE16Z\boards\frdmke16z\driver_examples\mscan\interrupt_transfer
例子是需要接收0x123的报文,默认设置为32位滤波,IDAM=0b00;
0x123对应二进制就是0b001 0010 0011,在其后面补位5个0凑成低16位,即0b0010 0100 0110 0000,对应为低十六进制就是0x2460,高16位直接补0;
所以CAN_IDAR0 = 0x24,CAN_IDAR1 = 0x60,如果只接收这一个ID,那就是全部比较,掩码就是CAN_IDMR0= 0x00,CAN_IDMR1 = 0x00;
but 为了在32位过滤器模式下接收标准标识符,需要将屏蔽寄存器CANIDMR1和CANIDMR5中的最后三位(AM [2:0])编程为“无关位”;
最终掩码就是CAN_IDMR0= 0x00,CAN_IDMR1 = 0x07;

