本文主要是介绍NXP RT1060学习总结 - fsl_flexcan 基础CAN函数说明 -1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
根据fsl_flexcan.h
文件从文件末尾往前面梳理,总共30个
基础CAN函数;
该文章只梳理常规CAN,增强型CAN后面再单独梳理。
使用的是RT1064开发板进行测试。
1、FlexCAN IRQ句柄函数
函 数 :void FLEXCAN_TransferHandleIRQ(CAN_Type *base, flexcan_handle_t *handle);
说 明 :这个函数处理FlexCAN错误、消息缓冲区和Rx FIFO IRQ请求
参 数 :base FlexCAN外设基地址
参 数 :handle FlexCAN句柄指针
返回值:无
2、终止从Rx FIFO进程接收的中断驱动消息
函 数 :void FLEXCAN_TransferAbortReceiveFifo(CAN_Type *base, flexcan_handle_t *handle);
说 明 :这个函数终止从Rx FIFO进程接收的中断驱动的消息
参 数 :base FlexCAN外设基地址
参 数 :handle FlexCAN句柄指针
返回值:无
3、中止中断驱动的消息接收进程
函 数 :void FLEXCAN_TransferAbortReceive(CAN_Type *base, flexcan_handle_t *handle, uint8_t mbIdx);
说 明 :这个函数中止中断驱动的消息接收进程
参 数 :base FlexCAN外设基地址
参 数 :handle FlexCAN句柄指针
参 数 :mbIdx FlexCAN消息缓冲区索引
返回值:无
4、中止中断驱动的消息发送进程
函 数 :void FLEXCAN_TransferAbortSend(CAN_Type *base, flexcan_handle_t *handle, uint8_t mbIdx);
说 明 :这个函数终止中断驱动的消息发送进程
参 数 :base FlexCAN外设基地址
参 数 :handle FlexCAN句柄指针
参 数 :mbIdx FlexCAN消息缓冲区索引
返回值:
5、按句柄获取邮箱的时间戳的详细索引
函 数 :uint32_t FLEXCAN_GetTimeStamp(flexcan_handle_t *handle, uint8_t mbIdx);
说 明 :然后函数只能在调用非阻塞数据传输(TX/RX) API时使用,在TX/RX数据传输完成后(用户可以通过handler的回调函数获得状态),我们可以通过句柄获得邮箱的时间戳的详细索引,详细的非阻塞数据传输API (TX/RX)包含:
* -FLEXCAN_TransferSendNonBlocking //CAN 无堵塞发送* -FLEXCAN_TransferFDSendNonBlocking //CANFD 无堵塞发送* -FLEXCAN_TransferReceiveNonBlocking //CAN 无堵塞接收* -FLEXCAN_TransferFDReceiveNonBlocking //CANFD 无堵塞接收* -FLEXCAN_TransferReceiveFifoNonBlocking //can fifo 无堵塞接收
参 数 :handle FlexCAN句柄指针
参 数 :mbIdx FlexCAN消息缓冲区索引
返回值:存储在句柄中的邮箱时间戳的索引。
6、获取中断非阻塞接收期间的遗留Rx Fifo传输状态。
函 数 :status_t FLEXCAN_TransferGetReceiveFifoCount(CAN_Type *base, flexcan_handle_t *handle, size_t *count);
说 明 :
参 数 :base FlexCAN外设基地址
参 数 :handle FlexCAN句柄指针
参 数 :count 到目前为止,非阻塞事务接收到的CAN消息数
返回值:kStatus_InvalidArgument 计数无效
返回值:kStatus_Success 成功返回计数
7、使用IRQ从Rx FIFO接收CAN消息
函 数 :status_t FLEXCAN_TransferReceiveFifoNonBlocking(CAN_Type *base, flexcan_handle_t *handle, flexcan_fifo_transfer_t *pFifoXfer);
说 明 :此函数使用IRQ接收消息。这是一个非阻塞函数,它会立即返回。当接收到所有消息时,将调用receive回调函数。
参 数 :base FlexCAN外设基地址
参 数 :handle FlexCAN句柄指针
参 数 :pFifoXfer FlexCAN Rx FIFO传输结构。参见@ref flexcan_fifo_transfer_t。
返回值:kStatus_Success 启动Rx FIFO接收进程成功
返回值:kStatus_FLEXCAN_RxFifoBusy Rx FIFO目前正在使用中
8、使用IRQ接收CAN消息
函 数 :status_t FLEXCAN_TransferReceiveNonBlocking(CAN_Type *base, flexcan_handle_t *handle, flexcan_mb_transfer_t *pMbXfer);
说 明 :此函数使用IRQ接收消息。这是一个非阻塞函数,它会立即返回。当消息被接收时,将调用receive回调函数。
参 数 :base FlexCAN外设基地址
参 数 :handle FlexCAN句柄指针
参 数 :pMbXfer FlexCAN消息缓冲区传输结构。参见#flexcan_mb_transfer_t。
返回值:kStatus_Success 启动消息缓存接收进程成功
返回值:kStatus_FLEXCAN_RxBusy 接收消息的缓存正在使用
9、使用IRQ发送消息
函 数 :status_t FLEXCAN_TransferSendNonBlocking(CAN_Type *base, flexcan_handle_t *handle, flexcan_mb_transfer_t *pMbXfer);
说 明 :这个函数使用IRQ发送消息。这是一个非阻塞函数,它会立即返回。当消息发出后,send回调函数被调用。
参 数 :base FlexCAN外设基地址
参 数 :handle FlexCAN句柄指针
参 数 :pMbXfer FlexCAN消息缓冲区传输结构。参见#flexcan_mb_transfer_t。
返回值:kStatus_Success 启动消息缓存发送进程成功
返回值:kStatus_FLEXCAN_RxBusy 发送消息的缓存正在使用
10、初始化FlexCAN句柄
函 数 :void FLEXCAN_TransferCreateHandle(CAN_Type *base, flexcan_handle_t *handle, flexcan_transfer_callback_t callback, void *userData);
说 明 :这个函数初始化FlexCAN句柄,它可以用于其他FlexCAN事务性api。通常,对于指定的FlexCAN实例,调用此API一次以获得初始化句柄。
参 数 :base FlexCAN外设基地址
参 数 :handle FlexCAN句柄指针
参 数 :callback 回调函数
参 数 :userData 回调函数的参数。
返回值:无
未完,待续……
这篇关于NXP RT1060学习总结 - fsl_flexcan 基础CAN函数说明 -1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!