NXP RT1060学习总结 - fsl_flexcan 基础CAN函数说明 -2

2024-06-13 14:04

本文主要是介绍NXP RT1060学习总结 - fsl_flexcan 基础CAN函数说明 -2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

概要

CAN测试源码:
https://download.csdn.net/download/qq_35671135/89425377

根据fsl_flexcan.h文件从文件末尾往前面梳理,总共30个基础CAN函数;
该文章只梳理常规CAN,增强型CAN后面再单独梳理。
使用的是RT1064开发板进行测试。

11、轮询接收CAN FIFO消息

函 数 :status_t FLEXCAN_TransferReceiveFifoBlocking(CAN_Type *base, flexcan_frame_t *pRxFrame);
说 明 :在调用此API之前不需要创建传输句柄。
参 数 :base FlexCAN外设基地址
参 数 :pRxFrame 指向用于接收的CAN消息帧结构的指针。
返回值:kStatus_Success 从Rx FIFO读取消息成功。
返回值:kStatus_Fail 未使能Rx FIFO。

12、轮询接收CAN消息

函 数 :status_t FLEXCAN_TransferReceiveBlocking(CAN_Type *base, uint8_t mbIdx, flexcan_frame_t *pRxFrame);
说 明 :在调用此API之前不需要创建传输句柄。
参 数 :base FlexCAN外设基地址
参 数 :mbIdx FlexCAN消息缓冲区索引。
参 数 :pRxFrame 指向用于接收的CAN消息帧结构的指针。
返回值:kStatus_Success Rx消息缓冲区已满,并已成功读取。
返回值:kStatus_FLEXCAN_RxOverflow Rx消息缓冲区已经溢出,并已成功读取。
返回值:kStatus_Fail Rx消息缓冲区为空。

13、轮询发送CAN消息

函 数 :status_t FLEXCAN_TransferSendBlocking(CAN_Type *base, uint8_t mbIdx, flexcan_frame_t *pTxFrame);
说 明 :在调用此API之前不需要创建传输句柄。
参 数 :base FlexCAN外设基地址
参 数 :mbIdx FlexCAN消息缓冲区索引。
参 数 :pRxFrame 指向用于接收的CAN消息帧结构的指针。
返回值:kStatus_Success 写Tx消息缓冲区成功。
返回值:kStatus_Fail Tx消息缓冲区当前正在使用中。

14、从传统Rx FIFO读取FlexCAN消息

函 数 :status_t FLEXCAN_ReadRxFifo(CAN_Type *base, flexcan_frame_t *pRxFrame);
说 明 :这个函数从FlexCAN Legacy Rx FIFO读取CAN消息。
参 数 :base FlexCAN外设基地址
参 数 :pRxFrame 指向用于接收的CAN消息帧结构的指针。
返回值:kStatus_Success 从Rx FIFO读取消息成功。
返回值:kStatus_Fail 未使能Rx FIFO。

15、从接收消息缓冲区中读取FlexCAN消息

函 数 :status_t FLEXCAN_ReadRxMb(CAN_Type *base, uint8_t mbIdx, flexcan_frame_t *pRxFrame);
说 明 :这个函数从指定的接收消息缓冲区中读取CAN消息。该函数用刚刚接收到的数据填充接收CAN消息帧结构,并再次激活消息缓冲区。函数立即返回。
参 数 :base FlexCAN外设基地址
参 数 :mbIdx FlexCAN消息缓冲区索引。
参 数 :pRxFrame 指向用于接收的CAN消息帧结构的指针。
返回值:kStatus_Success Rx消息缓冲区已满,并已成功读取。
返回值:kStatus_FLEXCAN_RxOverflow Rx消息缓冲区已经溢出,并已成功读取。
返回值:kStatus_Fail Rx消息缓冲区为空。

16、将FlexCAN消息写入发送消息缓冲区

函 数 :status_t FLEXCAN_TransferSendBlocking(CAN_Type *base, uint8_t mbIdx, flexcan_frame_t *pTxFrame);
说 明 :该函数将CAN消息写入指定的发送消息缓冲区,并改变消息缓冲区的状态,开始发送CAN消息。之后,函数立即返回。
参 数 :base FlexCAN外设基地址
参 数 :mbIdx FlexCAN消息缓冲区索引。
参 数 :pRxFrame 指向用于接收的CAN消息帧结构的指针。
返回值:kStatus_Success 写Tx消息缓冲区成功。
返回值:kStatus_Fail Tx消息缓冲区当前正在使用中。

17、配置CAN 接收 fifo

函 数 :void FLEXCAN_SetRxFifoConfig(CAN_Type *base, const flexcan_rx_fifo_config_t *pRxFifoConfig, bool enable);
说 明 :这个函数用给定的配置配置FlexCAN Rx FIFO。传统的Rx FIFO只能接收经典的can消息。
参 数 :base FlexCAN外设基地址
参 数 :pRxFifoConfig 指向FlexCAN Legacy Rx FIFO配置结构的指针。当enable参数为false时,可以为NULL。
参 数 :enable true/false
返回值:无

18、配置FlexCAN接收消息缓冲区

函 数 :void FLEXCAN_SetRxMbConfig(CAN_Type *base, uint8_t mbIdx, const flexcan_rx_mb_config_t *pRxMbConfig, bool enable);
说 明 :这个函数清除FlexCAN内置的消息缓冲区,并将其配置为接收消息缓冲区。
参 数 :base FlexCAN外设基地址
参 数 :mbIdx FlexCAN消息缓冲区索引
参 数 :pRxMbConfig 指向FlexCAN消息缓冲区配置结构的指针。
参 数 :enable true/false
返回值:无

19、配置FlexCAN发送消息缓冲区

函 数 :void FLEXCAN_SetTxMbConfig(CAN_Type *base, uint8_t mbIdx, bool enable);
说 明 :此函数终止先前的传输,清除消息缓冲区,并将其配置为传输消息缓冲区。
参 数 :base FlexCAN外设基地址
参 数 :mbIdx FlexCAN消息缓冲区索引
参 数 :enable true/false
返回值:无

20、设置FlexCAN接收FIFO全局掩码。

函 数 :void FLEXCAN_SetRxFifoGlobalMask(CAN_Type *base, uint32_t mask);
说 明 :这个函数在匹配过程中为FlexCAN FIFO设置全局掩码。
参 数 :base FlexCAN外设基地址
参 数 :mask Rx Fifo全局掩码值。
返回值:无

未完,待续……

这篇关于NXP RT1060学习总结 - fsl_flexcan 基础CAN函数说明 -2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1057504

相关文章

Kotlin 作用域函数apply、let、run、with、also使用指南

《Kotlin作用域函数apply、let、run、with、also使用指南》在Kotlin开发中,作用域函数(ScopeFunctions)是一组能让代码更简洁、更函数式的高阶函数,本文将... 目录一、引言:为什么需要作用域函数?二、作用域函China编程数详解1. apply:对象配置的 “流式构建器”最

Tomcat版本与Java版本的关系及说明

《Tomcat版本与Java版本的关系及说明》:本文主要介绍Tomcat版本与Java版本的关系及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Tomcat版本与Java版本的关系Tomcat历史版本对应的Java版本Tomcat支持哪些版本的pythonJ

C#基础之委托详解(Delegate)

《C#基础之委托详解(Delegate)》:本文主要介绍C#基础之委托(Delegate),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 委托定义2. 委托实例化3. 多播委托(Multicast Delegates)4. 委托的用途事件处理回调函数LINQ

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

Nginx指令add_header和proxy_set_header的区别及说明

《Nginx指令add_header和proxy_set_header的区别及说明》:本文主要介绍Nginx指令add_header和proxy_set_header的区别及说明,具有很好的参考价... 目录Nginx指令add_header和proxy_set_header区别如何理解反向代理?proxy

java常见报错及解决方案总结

《java常见报错及解决方案总结》:本文主要介绍Java编程中常见错误类型及示例,包括语法错误、空指针异常、数组下标越界、类型转换异常、文件未找到异常、除以零异常、非法线程操作异常、方法未定义异常... 目录1. 语法错误 (Syntax Errors)示例 1:解决方案:2. 空指针异常 (NullPoi

C++中::SHCreateDirectoryEx函数使用方法

《C++中::SHCreateDirectoryEx函数使用方法》::SHCreateDirectoryEx用于创建多级目录,类似于mkdir-p命令,本文主要介绍了C++中::SHCreateDir... 目录1. 函数原型与依赖项2. 基本使用示例示例 1:创建单层目录示例 2:创建多级目录3. 关键注

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程

kotlin的函数forEach示例详解

《kotlin的函数forEach示例详解》在Kotlin中,forEach是一个高阶函数,用于遍历集合中的每个元素并对其执行指定的操作,它的核心特点是简洁、函数式,适用于需要遍历集合且无需返回值的场... 目录一、基本用法1️⃣ 遍历集合2️⃣ 遍历数组3️⃣ 遍历 Map二、与 for 循环的区别三、高

C语言字符函数和字符串函数示例详解

《C语言字符函数和字符串函数示例详解》本文详细介绍了C语言中字符分类函数、字符转换函数及字符串操作函数的使用方法,并通过示例代码展示了如何实现这些功能,通过这些内容,读者可以深入理解并掌握C语言中的字... 目录一、字符分类函数二、字符转换函数三、strlen的使用和模拟实现3.1strlen函数3.2st