历史上的今天
今天是:2025年08月21日(星期四)
2020年08月21日 | STM32F4 CAN2只能发送无法接收问题解决
2020-08-21 来源:eefocus
解决方法:
1在使能CAN2时钟之前,需要先使能CAN1的时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE); //先使能CAN1
RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN2, ENABLE); //再使能CAN2
2.can2筛选器组从14开始 范围为14-27
CAN_FilterInitStructure.CAN_FilterNumber=15;
原理介绍:
●CAN1:是主bxCAN,它负责管理在从bxCAN和512字节的SRAM存储器之间的通信
● CAN2:是从bxCAN,它不能直接访问SRAM存储器 (见图195)
● 这 2个bxCAN模块共享512字节的SRAM存储器
《STM32中文参考手册V10》423页
问题1原理:CAN2作为从设备无法直接访问SRAM,因此在使能CAN2时钟时,首先要使能CAN1时钟才可以。

我们看这个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才能使用筛选器。

一共个5位 设置CAN(2)接口的开始组 范围是0~27 而默认开始组是14
这就是为什么can2筛选器组从14开始 范围为14-27 的原因 ,当然你也可以修改该寄存器的值,使得can2的范围为0~27
到此,问题结束。
史海拾趣
|
作为一种新的光源,近年来各大公司和研究机构对LED电源和驱动电路的研究方兴未艾。与荧光灯的电子镇流器不同,LED驱动电路的主要功能是将交流电压转换为直流电压,并同时完成与LED的电压和电流的匹配。随着硅集成电路电源电压的直线下降,LED工作电 ...… 查看全部问答> |
|
本人目前在做毕业论文,里面要用ST与Zigbee通信,因为我是学机械的,又是新接触STM32,所以很多地方都不懂,不过硬件方面已经解决了,主要是程序方面一窍不通,各位大神能不能给个大概思路啊?比如说我就不知道我到底是用SPI呢,还是USART还是GPIO, ...… 查看全部问答> |
|
我最近做激光器的驱动电路,有一个自动功率控制电路这里有一些问题不明白,PD是提供了电流,可是PD的电流方向是向下的,A1运放“+”输入端电流又进不去,那这个方向的电流到底流到哪里呀,这里“+”端又没有接地,电流走不通呀,小弟不明白呀,请各 ...… 查看全部问答> |
|
分享我收集的嵌入式wince/android/linux著名网站和博客地址 3001、android 著名博客 http://blog.csdn.net/Luoshengyang/ ——老罗的android 之旅,一个android大牛人的博客,文章高深莫测,只有少数前期文章适合初学者。 http://blog.csdn.net/mr_raptor ——华清远见一个老师的博客,适合android入门初学 ...… 查看全部问答> |
|
才接触c2000不久,想在程序中采集一些数据存储起来,希望掉电后不丢失,用的f28027,是不是需要i2c外接一个eeprom才行呢,不知道这个片子有没有自带的存储,或者什么方法解决, ...… 查看全部问答> |
|
MSP430F169 P54 输出1之后自动清零是怎么回事? 现在用P54.其片内功能是MCLK的输出,现在设置其为输出,选择为IO功能,可是在置一之后会自动清零。(P5DIR|=BIT4;P5SEL&=~BIT4,P5OUT|=BIT4;)??why?… 查看全部问答> |
|
nxp的芯片我一直都是直接操作寄存器的,带库的是第一次用。还是蛮有新鲜感的。 首先来展示下例程资源 这是最新的版本,有基于LPCXpresso、keil和IAR的。 比较特别的,是当你打开例程中的一个工程,你会发现里面居然集成了很多例程。 当打 ...… 查看全部问答> |




