15818564352 发表于 2022-11-18 11:43:34

CAN双滤波器设置 | 已解决

双滤波器设置始终不成功,有大佬能回一下贴吗?
         //使用双滤波过滤器,接收 ID1=0x03D9 和ID2=0X012D 的报文      
                  RX_ID1=0x03D9;RX_ID2=0X012D; //0x03D9<<5=0x7b+0x20;0X012D<<5=0x25+0xA0
                        
                CanWriteReg(ACR0,0x7B);                   //总线验收代码寄存器
                CanWriteReg(ACR1,0x20);
                CanWriteReg(ACR2,0x25);
                CanWriteReg(ACR3,0xA0);
                CanWriteReg(AMR0,0x00);                   //总线验收屏蔽寄存器
                CanWriteReg(AMR1,0x0F);
                CanWriteReg(AMR2,0x00);
                CanWriteReg(AMR3,0x0F);

21cnxin 发表于 2022-11-18 16:56:12

顶一下,别下层了,我也想知道怎么设置:lol

15818564352 发表于 2022-11-18 18:04:19

单滤波器按示例是正确的,双滤波器按说明自已设置,就是不行,也没有示例可以参考,大神有空指教,梁工在么!!!!!!!!!!!

15818564352 发表于 2022-11-18 18:04:52

   /*使用单滤波过滤器,只接收 ID=0x07fe 的报文
       
                CanWriteReg(ACR0,0xff);                   //总线验收代码寄存器
                CanWriteReg(ACR1,0xc0);
                CanWriteReg(ACR2,0x00);
                CanWriteReg(ACR3,0x00);
                CanWriteReg(AMR0,0x00);                   //总线验收屏蔽寄存器
                CanWriteReg(AMR1,0x0F);
                CanWriteReg(AMR2,0xFF);
                CanWriteReg(AMR3,0xFF);*/

乘风飞扬 发表于 2022-11-18 18:13:55

你的滤波设置没有问题,需要注意的是最后MR寄存器里面的滤波模式设置,要采用双滤波设置:
CanWriteReg(MR,0x00);                //退出 Reset Mode, 采用双滤波设置(设置过滤器后注意选择滤波模式)

例程提供的是单滤波设置参考代码,所以最后设置的是单滤波模式:
CanWriteReg(MR,0x01);                //退出 Reset Mode, 采用单滤波设置(设置过滤器后注意选择滤波模式)


15818564352 发表于 2022-11-19 13:43:29

非常感谢*乘风飞扬*的回复提醒,在设置单滤波模式或双滤波器模式中,最后的设置没有改回,!!

QW123 发表于 2024-3-4 11:02:45

MARK 一下

QW123 发表于 2024-3-6 16:36:21

RX_ID1=0x03D9;RX_ID2=0X012D; //0x03D9<<5=0x7b+0x20;0X012D<<5=0x25+0xA0

这个是怎么个算法?{:4_186:} 左移就可以分解了?

STC工程师 发表于 2025-5-2 12:44:15

同问,这个怎么算的?双滤波器指的就是能让2个ID通过?那我需要更多的ID通过怎么设置的?
页: [1]
查看完整版本: CAN双滤波器设置 | 已解决