RT1052主控芯片,利用FLEXCAN收发数据:
1 接收数据通过中断实现
void CAN2_IRQHandler(void)
{
……
}
2 发送数据通过回调函数(每5分钟执行一次;使用了FreeRTOS和LVGL)实现
void task_cb(lv_task_t * task)
{
res=CAN2_Send_Msg(canbuf_THO,8);
}
如果只接收数据是没问题的,如果回调函数每1个小时执行一次也没问题。但是,如果回调函数每5分钟执行一次,整个程序运行几天之后会死机。怎么解决这个问题?我知道,如果CAN数据收发频率过高,主控芯片会死掉,这是难免的。问题是,我发送数据是5分钟一次。
Solved! Go to Solution.
Hi @FromCH0 ,
从你的描述来讲,还是和你的APP 系统各task运行冲突有关。
如果单独跑flexCAN, 哪怕就是用SDK的那种,没有系统,直接测试flexCAN, 5分钟一次,是否会死机呢?
另外,你测过4分钟,或者6分钟,是否也会复现问题,另外死机的时候,有没有看看代码,到底死哪里了? 可以加些跟踪代码打印出来看看。
Best Regards,
Kerry
问题已经解决了。应该是显示部分的程序有BUG,之前,这个BUG一直没修复,从而导致出现FlexCAN收发数据会有死机的现象。后来,把这个显示部分程序的BUG修复之后,FlexCAN已经能正常收发数据。迄今为止,程序已经连续(日夜不间断)测试7天,未出现之前的死机现象。坦率地说,RT1052系列是我用过的性能最强悍,稳定性很好,然后性价比又不错的一款MCU!
Hi @FromCH0 ,
从你的描述来讲,还是和你的APP 系统各task运行冲突有关。
如果单独跑flexCAN, 哪怕就是用SDK的那种,没有系统,直接测试flexCAN, 5分钟一次,是否会死机呢?
另外,你测过4分钟,或者6分钟,是否也会复现问题,另外死机的时候,有没有看看代码,到底死哪里了? 可以加些跟踪代码打印出来看看。
Best Regards,
Kerry