在STM32H743芯片上实现CAN通信的步骤

发布时间:2024-09-25  

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驱动封装就验证完成,可以轻松移植到其他板卡上


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>