你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32F4 CAN2只能发送无法接收问题解决

[复制链接]
STMCU小助手 发布时间:2022-3-24 23:15
解决方法:
1在使能CAN2时钟之前,需要先使能CAN1的时钟
  1. RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);   //先使能CAN1

  2. RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN2, ENABLE);   //再使能CAN2
复制代码

2.can2筛选器组从14开始  范围为14-27

  1. CAN_FilterInitStructure.CAN_FilterNumber=15;
复制代码

原理介绍:
●CAN1:是主bxCAN,它负责管理在从bxCAN和512字节的SRAM存储器之间的通信

● CAN2:是从bxCAN,它不能直接访问SRAM存储器 (见图195)

● 这 2个bxCAN模块共享512字节的SRAM存储器


问题1原理:CAN2作为从设备无法直接访问SRAM,因此在使能CAN2时钟时,首先要使能CAN1时钟才可以。

2019080817295163.png

我们看这个CAN框图,在①处可以看到SRAM存储器在CAN1处,所以使用CAN2(从)时需要先使能CAN1的时钟,使CAN1工作,SRAM存储器才能被CAN2读到


同时我们看到③处:主滤波器(0~n)  从滤波器(n~27)     同时看到②处   这个n的设置是配置CAN FMR寄存器可以修改

STM32中CAN1和CAN2共用滤波器,在CAN1所用滤波器之后才是CAN2的滤波器,需在CAN 筛选器主寄存器 (CAN_FMR)中配置CAN2 起始存储区后CAN2才能使用筛选器。

[L9OZ2R6Q_%0@L3X%HN]AZT.png

一共个5位  设置CAN(2)接口的开始组    范围是0~27    而默认开始组是14

这就是为什么can2筛选器组从14开始  范围为14-27 的原因  ,当然你也可以修改该寄存器的值,使得can2的范围为0~27



到此,问题结束。


收藏 评论1 发布时间:2022-3-24 23:15

举报

1个回答
miaomiao2020 回答时间:2025-12-3 17:36:09

改了FilterConfig.FilterBank 由0改成14就好了 不然优化等级要调到3

所属标签

相似分享

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版