飞思卡尔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对应二进制就是0b‭001 0010 0011‬,在其后面补位5个0凑成低16位,即0b‭0010 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;

    

至此,飞思卡尔MSCAN 滤波器的设定讲解何其乐便介绍完毕了,掌声在哪里~~~

posted @ 2020-12-06 20:59  何其乐  阅读(1070)  评论(0)    收藏  举报