CAN FIFO仅能处理1帧的问题
未解决
YTM32B1L系列
-
在使用 Legacy Rx FIFO 接收 CAN 消息时,我们分析了驱动中的中断处理代码,发现以下流程:中断服务程序中调用 FLEXCAN_IRQHandlerRxFIFO。
该函数读取 FIFO 中的一帧数据后,调用 FLEXCAN_CompleteRxMessageFifoData。
在 FLEXCAN_CompleteRxMessageFifoData 中,当 transferType == FLEXCAN_RXFIFO_USING_INTERRUPTS 时,会执行:
(void)FLEXCAN_SetMsgBuffIntCmd(base, FEATURE_CAN_RXFIFO_FRAME_AVAILABLE, false);
(void)FLEXCAN_SetMsgBuffIntCmd(base, FEATURE_CAN_RXFIFO_WARNING, false);
(void)FLEXCAN_SetMsgBuffIntCmd(base, FEATURE_CAN_RXFIFO_OVERFLOW, false);
即禁用了所有 FIFO 相关的中断(包括帧可用中断 BUF5I)。疑问:
如果 FIFO 中同时收到多帧(例如连续 4 帧),处理完第一帧后中断被禁用,那么剩余的帧是否还能触发中断并被读取?还是会造成丢帧?
按当前代码逻辑,是否意味着 Legacy Rx FIFO 只能支持单帧接收,而不能连续接收多帧?
如果需要连续接收多帧,应该采用什么配置或修改?
快速上手云途开发生态
发帖前请查看
帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...