一、前言
之前做过一个RTX5版本的FDCAN同时工作的终极方案,对于想学习FDCAN的同学来说,RTX5算是多多余的元素。今天直接做一个STM32H743的裸机版本的双路FDCAN同时工作的终极方案,没有其他多余的东西。废话不多说,开始吧。
终极方案的配置如下: FDCAN1与FDCAN2同时工作 FDCAN的工作模式为普通CAN(可以跑CANopen协议) 每路FDCAN有32个接收FIFO 每路FDCAN有32个发送FIFO 通讯波特率:1M 接收中断+水印中断(防止FIFO溢出) 滤波器设置:接收标准帧,接收所有范围的ID
STM32工程: 链接:https://pan.baidu.com/s/1z41xJntAUOL84HtGhEFRzw 提取码:f6az
二、CubeMX
2.1、RCC
2.2、Clock Configuration
2.3、CORTEX_M7
2.4、DEBUG
2.5、FDCAN1
2.6、倒回去配置一个FDCAN的时钟
2.7、FDCAN2
2.8、GPIO
2.9、生成代码
三、Keil
3.1、Target
3.2、Output
3.3、C/C++
3.4、Debug
3.5、Flash Download
3.6、编译代码
四、代码
4.1、main.c
先用LED灯,验证一个整个工程是否能正常运行。烧写程序后,板子的LED灯正在闪烁,证明了该工程能正常运行!!!
4.2、添加bsp
添加我编写的四个bsp代码。(这些文件在百度云盘分享的工程里!!)
- bsp_fdcan.c(中断回调函数,中断配置等代码都在这个文件里)
- bsp_fdcan.h
- bsp.c
- bsp.h
4.3、fdcan.c
首先,在CubeMX生成的函数MX_FDCAN1_Init( )设置水印。
4.4、main.c
在main.c里运行了如下代码:
- 初始化FDCAN滤波器。
- 开启FDCAN控制器。
- 初始化FDCAN中断。
编译,下载代码。
五、测试FDCAN
5.1、测试发送CAN报文
5.1、测试接收CAN报文
先测试FDCAN2的接收功能,从STM32内存看到,的确接收到CAN报文。 接着测试FDCAN1,从STM32内存看到,的确接收到CAN报文。
|