解决方法:

1在使能CAN2时钟之前,需要先使能CAN1的时钟

RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);   //先使能CAN1RCC_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

到此,问题结束。

【STM32】STM32F4 CAN2只能发送无法接收问题解决相关推荐

  1. STM32CUBEMX配置教程(八)STM32串口轮询发送中断接收+重定义+优化

    STM32CUBEMX配置教程(八)STM32串口轮询发送中断接收+重定义+优化 基于STM32H743VI 使用STM32CUBEMX两年了,始终觉得这个工具非常的方便,但因为不是经常使用,导致有些 ...

  2. 利用STM32 的串口来发送和接收数据实验

    0目标 1 STM32 串口简介 2 硬件设计 3 软件设计 4 下载验证 0.目标 利用串口  1.STM32 串口简介 串口设置的一般步骤可以总结为如下几个步骤: 1) 串口时钟使能, GPIO  ...

  3. 【原创】stm32实现DMX512协议发送与接收(非标)。

    最近把玩了一下485,期间也接触了dmx512通信协议,该协议主要用于各种舞台灯光的控制当中,进而实现各种光效以及色彩变化.根据标准的512协议,其物理连接与传统上的RS485是完全一致的,并没有什么 ...

  4. outlook2003只能发送邮件不能接收

    前几天遇到了好郁闷的问题,就是整个网络只有一台电脑outlook2003只能发送不能接收的问题,一开始在outlook express新建一个帐号看能不能接收,但还是不行.然后在看看是不是没有在邮件账 ...

  5. stm32的串口DMA空闲中断接收不等长数据,stm32F4的usart2-DMA-IDLE收发

    1. 串口为什么要使用DMA?好处? 提高系统实时性:stm32单片机的串口没有FIFO,使用字节中断的方式去接收,会频繁进入中断,影响系统实时性.好在stm32的串口可以级联DMA使用,在大数据量连 ...

  6. STM32之USART:RXD和TXD管脚互换、接收和发送的电平极性反转、支持数据高位与低位反序发送或接收

    1:支持RXD和TXD管脚互换 在外接RS232芯片将RXD和TXD两根线接反,如果大家知道USART的TXD和RXD管脚可以互换,那么在连接外设RS232芯片时,如果发生错误,就不必再修改硬件,只需 ...

  7. stm32的串口DMA空闲中断接收不等长数据,stm32F1的usart1-DMA-IDLE收发

    stm32的DMA收发原理,和stm32F4 + USART2 +DMA +IDLE使用,见另一篇:https://blog.csdn.net/Mark_md/article/details/1072 ...

  8. CAN发送和接收数据(回环测试,ok)

    https://blog.csdn.net/weixin_40367126/article/details/106189254 回环指令: ip link set down can0 ip link ...

  9. USART串口协议和USART串口外设(USART串口发送串口发送和接收)

    1.通信接口 A.基本概念 • 通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统 • 通信协议:制定通信的规则,通信双方按照协议规则进行数据收发  异步:需要双方约定一个频率 B.数据通信方 ...

最新文章

  1. [Eclipse]GEF入门系列(九、增加易用性)
  2. 我的第一次博客 张学良
  3. win32 禁用缩放功能_Firefox 73 将引入全局缩放功能,在所有网站都可适用
  4. 一周消息树:程序员想找好工作?那就学好Linux!
  5. 使用python写一个倒计时_Python 实现一个计时器
  6. 从源代码解释Android事件分发机制
  7. 生产环境Go程序内存泄露,用pprof如何快速定位
  8. 数据分析师要会mysql_数据分析人员需要掌握sql到什么程度?
  9. 电脑磁盘空间不足怎么办_Mac磁盘总是提示空间不足?学会这几招,瞬间腾出几个G...
  10. 云市场合作伙伴-袋鼠云获A轮融资,成立一年半获三轮投资超亿元
  11. Exchange 2010 迁移至Exchange 2013系列之一:系列架构介绍
  12. C语言学生管理系统(链表实现)
  13. 模型类中的常用字段类型
  14. Chrome安装Octotree插件
  15. 《当程序员的那些狗日日子》二
  16. 科研过程中如何寻找创新点
  17. 经纬财富:宜昌炒白银和炒黄金有什么不同?
  18. 餐饮行业如何精准轻松获客,短期内使营业额倍增
  19. 洛谷 P5708 【深基2.习2】三角形面积(C)
  20. 【玩转数据系列十五】机器学习PAI为你自动写歌词,妈妈再也不用担心我的freestyle了(提供数据、代码)

热门文章

  1. pandas 读取/保存压缩格式的csv文件.csv.gz
  2. python使用正则化预处理数据
  3. android 浏览器 原理,android 浏览器原理原码
  4. 自揣允许域名访问,不允许IP访问的方法和意义
  5. MySql 应用语句
  6. Spring框架中的控制反转和依赖注入
  7. Oracle 获取月初和月末
  8. MATLAB 随机过程基本理论
  9. 对大文件进行只打印过滤条件到列表元素(优化)
  10. spring与struts2整合出现错误HTTP Status 500 - Unable to instantiate Action