【使用C++开发MCU】07-CAN实例之UML画个图展现设计(分析NXP S32SDK CAN Driver)

本文详细介绍了如何使用C++在S32K1 MCU上开发CAN驱动,通过UML图展示了FlexCAN模块的初始化、接收(包括DMA、中断方式)和发送过程。重点讲解了不同接收方式的实现细节,如RX FIFO DMA、INT方式以及RX MB INT方式。最后,提到了发送完成后中断处理的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

本文基于S32SDK,通过UML的方法,分析S32K1 MCU的FlexCAN模块的使用。
CAN作为一个通讯模块,最基本的三个接口便是初始化、发送、接收,构建好这三个接口,能够更好的开发我们上层的应用。

CAN初始化

CAN初始化
使用PE进行配置代码生成,CAN初始化直接调用DRV_Init进行初始化,配置一下接收MB或者接收FIFO即可在后续开始接收,发送MB在发送时配置。

CAN接收

CAN接收
CAN FD不支持RX FIFO,DMA只适用于RX FIFO接收。
对于Classic CAN,可以使用RX MB (的中断)或者RX FIFO(的中断或DMA)将消息接收到我们的变量中。
S32SDK通过提供HW层,封装了寄存器的操作,通过DRV层,采用一种OOP的方式,为上层用户提供了良好的接口。

RX FIFO DMA方式接收

若在ProcessorExpert中配置为RX FIFO DMA方式接收,调用FLEXCAN_DRV_RxFifo后,将会向EDMA_DRV发出回调

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值