关于STM32双路CAN1、CAN2滤波器分配CAN2SB
芯片:STM32F429 事由:因为之前一直使用CAN1,这次CAN1的端口被占用了,所以接到了CAN2上,所以就涉及到了CAN1、CAN2共用的滤波分配问题。CAN2的起始滤器编号定义在CAN_FMR中的CAN2SB中,官网资料是这样叙述的:https://www.stmcu.org.cn/module/forum/forum.php?mod=image&aid=402235&size=300x300&key=f1c83b666590d871&nocache=yes&type=fixnone
当CAN2SB = 28时,所有CAN1的滤波器都能够被使用,我理解的是都能够被CAN2使用,此时CAN1、CAN2共用这28个滤波器。
当CAN2SB = 0时,不会为CAN1分配任何滤波器,我理解的是都分配给CAN2使用,此时CAN2独用这28个滤波器。
然而,当我分别把这个值设为28和0时,发现结果一样的,CAN1、CAN2都可以用这28个滤波器。这我就纳闷了,并对其他的值的实际效果作了怀疑。于是全部做了测试。由于CAN2SB,占了6位,最大值是63,所以测试时没我没局限在28,而是从0测到63.结果如下图:
https://www.stmcu.org.cn/module/forum/forum.php?mod=image&aid=402236&size=300x300&key=ef9bc73c12ae74f0&nocache=yes&type=fixnone
总结一下测试结果:
当值 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看到后,给我们做一下解答。
页:
[1]