1. 摘要
本篇笔记主要介绍,在stm32h743芯片上实现can通信,封装为bsp驱动,为之后实现can的高层通信打下基础。
2. 准备工作
1, iar 8.32.1
2, stm32cube_fw_h7_v1.6.0
3. 简介
stm32h743的控制器局域网络 (can) 子系统由两个 can 模块、一个共享消息 ram 存储器和一个时钟校准单元组成。关于这四个组成部分的基址,请参见存储器映射。两个 can 模块(fdcan1 和 fdcan2)均符合 iso 11898-1: 2015(can 协议规范第 2.0 版a、 b 部分)和 can fd 协议规范第 1.0 版。此外,第一个 can 模块 fdcan1 支持 iso 11898-4 中规定的时间触发 can (ttcan),包括事件同步时间触发通信、全局系统时间和时钟漂移补偿。fdcan1 还额外包含专供时间触发功能使用的寄存器。can fd 选项可与事件触发和时间触发 can 通信一起使用。10 kb 的消息 ram 存储器可实现过滤器、接收 fifo、接收缓冲区、发送事件 fifo、发送缓冲器( ttcan 触发)功能。该消息 ram 在 fdcan1 和 fdcan2 模块之间共用。通用时钟校准单元是可选的。通过评估 fdcan1 接收到的 can 消息,该单元可基于 hsi 内部 rc 振荡器和 pll 为 fdcan1 和 fdcan2 生成经过校准的时钟。
can 框图
can的底层大部分st已经在hal库里面封装好,如果你细看hal源码,搞懂这张图,h743的can 你基本上就没有问题了,在结合hal库的学习。
4. 驱动实现
良好的驱动封装,可以方便应用开发,并且可以容易移植到其他项目,代码重用率高,所以数据和接口是你不得不考虑的问题,怎么样方便的实现,还要通用易用。
4.1 数据封装
首先根据stm32h7xx_hal_fdcan.h文件我们来封装两个个结构体,方便后面软件实现开发,可以新建bsp_can.c和bsp_can.h, 在头文件中封装结构体定义。
在.c文件中定义封装一些变量,这些变量数组也是通用,在多款产品中都采用,大家也可以参照。
可以实现多个can口驱动。如果只有一个can口,将can_ports宏定义为1,几个就定义为几。
这个封装大家可以记着,我在多款器件上都是这么封装的,之前在nxp的ke06, kea, kv46, k64等系列,在st的f103, f446, h743等等can通信都采用这种封装bsp驱动。
4.2 初始化
参考官方的例程,根据自己的硬件去实现,做相应修改。例程中只使能了接收中断,我们一般发送也要采用中断,所以也要开发送中断,根据实际可能还需要添加滤波,配置缓冲等。
配置时钟管脚,中断。
4.3 中断回调函数
最主要的就是接收和发送的回调函数的实现,首先来看接收中断回调函数。
发送完成回调函数
4.4 测试代码
在freertos下建立一个can通信的简单测试任务,实现收到什么在发送出去。
在10ms的任务里去调用这个测试函数,实现收发测试。
测试的可以这样写,正式的我们需要解析收到的内容,并且重新组织发送的帧,这些解析和重组我们将会在高层的协议驱动文件中实现,有了这个驱动就可以实现canopen, j1939, devicenet等can的高层协议了。
5. 测试
测试,扩展帧,500k 位速率,发送数据 aa,01,02,03,04,05,06,bb。板卡收到电脑发送的数据后,回送给电脑。发送100000次, 10ms一次。使用usb-can连接到电脑端测试。
至此我们的can通信bsp驱动封装就验证完成,可以轻松移植到其他板卡上。关注我,为您带来更多精彩内容
实用锂电池快速充电器电路图设计
TUV南德意志集团将针对智能照明提供全方位的认证解决方案
2011高交会深圳开幕 物联网云计算成热点
单片开关电源设计概述及程序流程图
FPGA芯片巨头Xilinx宣布部分芯片涨价25%,以长寿命芯片为主
在STM32H743芯片上实现CAN通信的步骤
有机硅发泡材料在新能源汽车中的应用性探讨
受智能手机市场需求疲软影响,华显光电中期业绩由盈转亏
2018年材质最好的手机是哪款
部署标准化多点触控人机界面的优势有哪些
在1.5MW双馈机组中,变频系统是机组核心系统之一
DFRobot发布面向青少年Python教学的开源平台——行空板
合资品牌开始了新能源“破冰”之路,这场追击战将如何上演?
芯格诺XP2115:80V10A降压恒流转模拟调光IC
三星galaxys9最新消息,无缘3D面部识别换装三层堆栈摄像头
西部数据亮相CJ 2023,WD_BLACK SN850X 凭绝好口碑斩获大会“黑金奖”荣誉
如何判断自己是否适合做一名程序员
电动零部件异响分析参数方案(一)
高通回应裁员:说法比较夸大,裁员是事实
关于主流机器人操作系统的性能分析和介绍