AnsweredAssumed Answered

FlexCAN Reset失败

Question asked by Qiang Wang on Feb 26, 2019

今天在使用CAN模块时,发现一个有趣的现象,初始化死在FLEXCAN_Reset函数里面等待Software reset的死循环里,如下图

使用的是SDK里面的evkbimxrt1050_flexcan_interrupt_transfer工程,

产生的原因是因为我屏蔽了BOARD_InitDebugConsole();如下图

如果我恢复这行代码,会发现CAN可以正常使用。这样我多做了些测试,我一行行查找,发现是因为

BOARD_InitDebugConsole()函数里调用过CLOCK_EnableClock(kCLOCK_Lpuart1);

代码修改成如下,

CAN也可以初始化正常。改成kCLOCK_Lpuart2好像也可以。

 

我的理解CAN模块虽然与UART模块都是由PLL3而来,但CLOCK_EnableClock操作的是

CCM模块的CCGRx寄存器,CAN模块与UART模块应该是独立的。

产生这个现象的原因是什么?手册中有没有哪里有提到过这方面的。

Outcomes