CAN SDK 使用-丢帧问题
-
目前使用云途YT Config Tool工具,使用Flexcan_Demo的SDK, 验证FBL功能,发现问题:
在收到多帧连续帧的时候,会出现丢帧情况,经过分析,是can驱动接收时,连续帧已经丢失
在FLEXCAN_IRQHandlerRxMB中,FLEXCAN_GetMsgBuff(base, mb_idx, state->mbs[mb_idx].mb_message);之后获取数据,发现can驱动接收的数据已经不完整,29-24这段连续帧没有数据。
怀疑是can驱动调用有问题,做过以下修改调整:- Flexcan_Demo的SDK从1_3_1升级到1_4_1,没效果
- 调用Fifo配置,没效果
- Flexcan_Demo接收改成轮询模式,没效果
- 怀疑上层cantp等处理太慢,影响can驱动接收,将上层代码放入 FLEXCAN_DRV_InstallEventCallback(CAN_INST, DRV_CAN_RxEventCall, NULL);在DRV_CAN_RxEventCall的中处理,或者在FLEXCAN_EVENT_RX_COMPLETE中添加flag标志位,在while中处理cantp上层,没效果。
查看官方提供的uds_can_fbl的demo,发现多帧处理时,流控帧回复的30 0A 0A限制了,规定了blocksize和cf的时间间隔。
我们的流控帧是30 00 00
我们尝试cf的时间间隔是1ms 、2ms、5ms等,还是会出现连续帧丢失问题,10ms左右,丢帧有明显改善。
cf时间间隔10ms 性能达不到要求,请帮忙分析,sdk配置是否可以优化,改善问题?谢谢。
备注:
can 用是mb,中断。
工具环境:
YT Config Tool 2.7.7
-
我们用了can的sdk驱动,上层cantp是自己用的,但是我用了uds_can_fbl的cantp修改成30 00 00回的话,到会36发数据后,也是没有响应的现象,所以我们觉得是SDK性能在30 00 00条件下,性能需要调整,修改配置是不是就可以优化,如果又控制block size,又规定stmin,可能不满足要求,发的太慢了。
快速上手云途开发生态
发帖前请查看
帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...