芯片:STM32F429 事由:因为之前一直使用CAN1,这次CAN1的端口被占用了,所以接到了CAN2上,所以就涉及到了CAN1、CAN2共用的滤波分配问题。CAN2的起始滤器编号定义在CAN_FMR中的CAN2SB中,官网资料是这样叙述的: 当CAN2SB[5:0] = 28时,所有CAN1的滤波器都能够被使用,我理解的是都能够被CAN2使用,此时CAN1、CAN2共用这28个滤波器。 当CAN2SB[5:0] = 0时,不会为CAN1分配任何滤波器,我理解的是都分配给CAN2使用,此时CAN2独用这28个滤波器。 然而,当我分别把这个值设为28和0时,发现结果一样的,CAN1、CAN2都可以用这28个滤波器。这我就纳闷了,并对其他的值的实际效果作了怀疑。于是全部做了测试。由于CAN2SB[5:0],占了6位,最大值是63,所以测试时没我没局限在28,而是从0测到63.结果如下图: 总结一下测试结果: 当值 num为0时,CAN1、CAN2可用全部28滤波器; 当1<= num <= 27时,CAN1使用编号0 ~ num-1滤波器,CAN2使用编号num-1 ~ 27的滤波器,符合文档描述。 当28<= num <=58时,CAN1、CAN2可用全部28滤波器; 当59<= num <= 63时,CAN1使用编号0 ~ num-59滤波器,CAN2使用编号num-59 ~ 27的滤波器。 疑问1:当num = 0时,与文档描述不符,还是我理解的不对? 疑问2:当num >= 28时,CAN1、CAN2可用全部28滤波器,为什么当num >= 59后又发生了变化呢?我看了一下58、59的二进制并没有特别啊。 有没有研究过这个问题的朋友出来发表一下意见。 还请ST的FAE看到后,给我们做一下解答。 |
CAN2SB
æµè¯ç»æ
顶一下,,,,三年了都没人回复!!!!!!!! |
楼主你好,我现在也在测STM32F407双路CAN的问题,但是怎么设置CAN2SB都无法将过滤器分配给两路CAN,他们一直都是共用的,想请教你当时是怎么配置的,有源代码吗,可以的话分享给我,840312033@qq.com,非常感谢! |