解决方法:
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
到此,问题结束。
关键字:STM32F4 CAN 发送 无法接收
引用地址:
STM32F4 CAN2只能发送无法接收问题解决
推荐阅读最新更新时间:2024-11-10 18:22
Android系统下CAN总线的驱动程序开发实现
嵌入式操作系统Android下CAN驱动程序的实现,不但需要在Linux内核中添加CAN驱动设备,还要实现Android HAL层的调用。以S5PV 210微处理器与CAN总线控制器MCP2515为例,分析了Android设备驱动原理,以及Android下CAN设备驱动程序的开发流程和方法,设计了相关的重要数据结构和代码,实现了CAN总线的驱动程序开发。 Android是指“机器人”,由Google公司于2007年11月5日发布的基于Linux平台的开源手机操作系统,是首个为移动终端打造的真正开放和完整的移动软件。Android是一个开放平台,在嵌入式移动设备领域里具有良好的应用前景,但在不同的设备上往往有不同的硬件支持,
[单片机]
CAN FD升级会缩短通讯距离?
CAN FD允许最大64字节数据帧,并且数据段部分的传输速率高达5Mbit/s。那么,CAN FD升级之后,通讯距离是否会缩短呢?本文带你一起探讨。 CAN FD继承了CAN总线的主要特性,提高了CAN总线的网络通信带宽,改善了错误帧漏检率,同时可以保持网络系统大部分软硬件特别是物理层不变。CAN FD采用了两种方式来提高通信的效率: ● 可变以及更高的数据传输速率: 从控制场中的BRS位到ACK场之前(含CRC分界符)为可变速率。CAN FD数据段的传输速率最大可达5Mbit/s,但为了保证总线的健壮可靠,仲裁段(ID和ACK)保持不变,采用原CAN总线用的速率(最高1Mbit/s)。注意:两种速率各有一套位时间定义寄存
[网络通信]
轻松搞懂STM32F407之中断及NVIC与EXTI
什么是中断和异常: 首先要了解什么是内核,什么是外设。内核就如Cortex_M4,是ARM公司开发的。ST公司在拿到这个内核后,做了一些东西,如GPIO和RTC以及USART等等等等,都是外设。 那么异常是对所有能打断程序正常执行的统称,中断属于一种异常。在内核中,异常就叫异常,而在外设中,异常被称为中断。(下面统称中断); 中断的概念与组成: 现在我们把单片机看做是一个正在做饭的少妇。他正在做饭(去除食物,放入锅里,煎炒...),就在这时,他的孩子发出了一声啼哭,并且这时她发现家里的盐所剩不多了,他不得不放下手头的铲子去哄孩子睡觉,并记住她做饭做到哪里了。等她哄完孩子后,再去超市买盐回来,又继续做饭。 如果把
[单片机]
Canalys:2025~2026 年,L2+ 辅助驾驶渗透率 9.3%、L3 达 4.6%
7 月 4 日消息,市场分析机构 Canalys 发布《中国市场下一代智能座舱发展路径辨析》报告,报告称随着视觉算法推广提升实际应用体验,以及感知决策硬件成本下降,推动 L2+ 高阶驾驶辅助系统 (ADAS) 加速落地。 预计 2025~2026 年,城市导航 辅助驾驶 系统 (NOA) 将快速下探至 15 万元以下的市场。整体 L2+ 渗透率将上升到 9.3%,较 2023 年增长 75%。 对于 L3 辅助驾驶 ,按现有市场产品能力判断,将在法规与标准出台后,快速覆盖 30 万元以上市场,以及少部分 25 万元新能源车型,预计到 2025 年,L3 辅助驾驶 市场渗透率有望达到 4.6%。 中国市场智能座舱的渗透率
[汽车电子]
4.STM32F407ZG按键输入
1.硬件图 对应的按键分别为PA0,PE4,PE3,PE2。其中KEY_UP按下时,PA0为高电平,因此应设置下拉输入。K1~K3按下时,PE4~PE2为低电平,因此应设置上拉输入。 2.按键扫描:首先,按键输入这一从高电平变为低电平的动作才能任为按键按下,并不只是检测到有按键输入就是按键按下。其次,这里需要考虑按键一直处于按下状态时的情况。最后,需要对按键按下进行防抖确认。 3.针对按键扫描的不同结果(如是否有按键按下,如有按键按下,是哪个按键)输出不同动作。 #include key.h #include delay.h #include stm32f4xx.h //#define Key_Statu
[单片机]
用无扼流圈收发器简化CAN总线的实现方式
无扼流圈CAN收发器能够使系统设计人员在满足严格的汽车EMC要求的同时,减小CAN总线实现方式的尺寸,并降低成本和复杂度。 由于汽车内电子元器件的密度在逐年增加,我们需要确保车内网络在电磁兼容性(EMC)方面保持高性能。这样的话,当不同子系统被集成在一个较大解决方案中,并且在常见(嘈杂)环境中运行时,这些子系统能够正常运转。虽然有很多不同的车内网络互连标准,并且汽车原始设备制造商(OEM)对于EMC也有多种不同的要求,这篇文章主要讨论一个已经被证明具有特别挑战性的话题:一个控制器局域网 (CAN) 总线的射频 (RF) 放射。
CAN使用均衡的差分信令来发送波特率,高达1Mbps(或者更高,前提是使用“灵活数据速率”
[嵌入式]
STM32F4更换不同频率的晶振后,代码需要做的更改
晶振由25Mhz更换为50Mhz,代码需要做两个更改,如下: 1.“stm32f4xx.h” 修改 #if !defined (HSE_VALUE) #define HSE_VALUE ((uint32_t)25000000) #endif 为 #if !defined (HSE_VALUE) #define HSE_VALUE ((uint32_t)50000000) #endif 2.“system_stm32f4xx.c” 修改 #if defined (STM32F40_41xxx) || defined (STM32F427_437xx) || defined (STM32F429_439xx) || def
[单片机]
展讯CTO离职 Canaccord上调目标价为23美元
4月26日消息,展讯通信(纳斯达克:SPRD)今天宣布,公司CFO邹求真离职,2013年4月25日生效。展讯解释称离职是因为业务关闭。邹求真符合离职福利条件。展讯近期内暂时无意另请他人接替CTO职位,公司已经制定计划,安排其它资深工程团队负责邹求真的职责。 Canaccord Genuity将展讯的目标价由20美元上调为23美元。 3月22日,美国银行将展讯通信股票评级由“中性”上调为“买入”。3月21日,Northland证券将展讯通信股票评级为“跑赢大盘”,目标价为25美元。 到目前为止,有1位分析师将展讯通信股票评级为“出售”,1位评级为“持有”,8位评级为“买入”,一致评级为“买入”,平均目标价23.21
[手机便携]