资深版主
 
- 积分
- 14980
- 金钱
- 14980
- 注册时间
- 2013-11-13
- 在线时间
- 1823 小时
|
本帖最后由 zuozhongkai 于 2017-9-25 09:13 编辑
前两天有朋友在使用STM32F767的CAN2的时候发现只能发送不能接收的问题,代码直接在阿波罗F7的CAN实验例程上修改的。昨天帮他看了一下,发现网上有很多人都遇到了STM32的CAN2存在只能发送无法接收的问题,有人怀疑是STM32芯片bug。但是得到答案说的最多就是在使用STM32的CAN2的时候要把CAN1的时钟使能。但是我使能CAN1的时钟以后CAN2依旧无法接收数据。偶然间看到有篇帖子(已经忘了是那一篇了)说使用CAN2的时候滤波器编号参数:FilterNumber要设置为大于等于14的。如下图所示代码(这里使用的HAL库):
将FilterNumber改为14以后(以前是0)CAN2的发送和接收都正常了。但是在STM32F7的参考手册上没有看到有类似的提示什么的,有哪位朋友知道为什么的可以回复一下。
总结一下:
在使用STM32的CAN2的时候遇到只能发送不能接收的时候需要做一下两个事情:
1、使能CAN1的时钟。(不知道是不是必须的,因为后面CAN2可以接收以后没有测试关闭CAN1时钟的话CAN2是否可以正常工作,但是最好使能上)。
2、CAN2的滤波器编号参数:FilterNumber要大于等于14(我用的14测试的,正常)。
|
|