TMS320F28388D: Clarification on DCC vs. MCD behavior when XTAL failure occurs on F28388D

Part Number: TMS320F28388D
Other Parts Discussed in Thread: C2000WARE

Tool/software:

Content:

In our system, we are currently using XTAL as the system clock source.
I am configuring the DCC with INTOSC2 as Clock0 (reference) and PLLRAWCLK as Clock1 (test) to ensure the PLL output is operating correctly.

However, I am concerned about the scenario where the XTAL fails (open/stop). In that case, the PLL will lose its input source, which may cause the CPU to lose its system clock and potentially freeze. This would prevent the DCC error from being detected and handled.

From my understanding, when the MCD detects a missing clock, it will automatically force the PLL to bypass and switch the clock source to INTOSC1, allowing the CPU to continue running at a fallback frequency. I did not find a similar mechanism described in the DCC section.

Therefore, I would like to clarify the following:

  1. If DCC is configured with INTOSC2 (Clock0) and PLLRAWCLK (Clock1), and the XTAL fails:

    • Will this immediately cause the CPU to freeze, so that the XTAL failure cannot be diagnosed and the SYS_ERR interrupt cannot be triggered?

    • Or will the system still be able to run for some time?

  2. If the CPU does not freeze and the system continues running for some time:

    • My plan would be to switch the system clock source to INTOSC1 or INTOSC2 inside the SYS_ERR ISR to maintain basic operation.

    • How can I ensure that the SYS_ERR ISR is reliably executed in this case? Does it mean I need to guarantee handling within a certain systick period?

  3. If the CPU will freeze when XTAL fails:

    • Does it mean that I must use both MCD and DCC together?

    • With MCD responsible for detecting a missing clock and automatically switching the source to INTOSC1 to keep the CPU alive,

    • While DCC is used primarily to check the clock frequency tolerance.

Thank you very much for your support and clarification!

  • Hi Nai Wen,

    MCD detects OSCCLK failure (specifically complete loss) using INTOSC1 as the reference clock source and one of the steps is to force PLL bypass. MCD is enabled at power up and Driverlib examples showcase how this is taken care of in the SysCtl_SetClock() function. 

    Based on its counters' ratios, the DCC generates an error (and interrupt) which can be used to debug the root cause of the issue as well switch the clock source and also provides flexibility on tolerance limits. Refer to the C2000WARE example below (dcc_ex4_clock_fail_detect) which seems to match your use case and can take care of your concerns regarding configuration and reliable CPU operation. The DCC alone doesn't change clock sources automatically, but you use its information to take appropriate action. If you used MCD and DCC, you would have to also take care of the NMI generated by the MCD which isn't needed. Use either MCD or DCC, though DCC allows for you to continue the application with INTOSC1 whereas MCD will force system shut down via NMI essentially. 

    Best Regards,

    Aishwarya