本文主要是介绍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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!