My purpose is when 40MHz XOSC has problem, after system reset, all clock(PLL0, PLL1) refer to IRC, ( FlexCAN PE clock use Peripheral clock)
1. I found system stuck in FLEXCAN_DRV_Init(); -> use a defective XOSC
2. Remove FlexCAN driver, system has no issue ruining on IRC clock.
3. Hardware connected with XOSC, but ruining on IRC clock, it also no issue.
It seems like FLEXCAN only run on functional XOSC even PE clock use Peripheral clock.
Is there other configurations need to set to FlexCAN driver/registry ruining on IRC clock without XOSC ?
Thanks for any help.
Thanks for your reply.
the RM states below for clocks used in FlexCAN module
There is ERR008341 regarding entering Freeze or low power mode, so check errata document and implementation in your SDK, which looks little bit outdated, I think.
However both module soft reset and low power request mentioned perform acknowledgement procedure across clock domains, and if one clock is failed, it most probably does not finish that request.
could you please specify the SDK version you have and the line the code hangs?
After reset the module is active and should be in Freeze mode with PE clock running from XOSC.
To change to peripheral clock the module should be disabled first. And in case PE clock is missing, maybe moving to disable, freeze mode or module reset is not acknowledged.
Try to check module MCR, CTRL1, ESR1 registers in debugger.