Part Number: TMS320F28P650SK
Other Parts Discussed in Thread: C2000WARE
Hi Champs,
I ask this for my customer, now they meet below issue when development. We are using the bit fields example code.
1.Why do the SYSPLLMULT registers have values before main() runs? I saw in the TRM that their reset value is 0. When are these values written to the registers? Below is the display from my Launchpad. The register values read on the customer's board are IMULT=40, REFDIV=1, ODIV=2, which is the same configuration as when using INTOSC.

2. Since the SYSPLLMULT register has a value before the PLL is initialized by below code

, and the customer is using an external 10MHz XTAL, if the customer uses the same IMULT, ODIV and REFDIV as the internal oscillator, it will cause the code to fail to update the oscillator source to XTAL.
This is because in InitSysPll() there is a judgment as below:

If all the values that need to be checked inside if() are the same as the values currently set by the customer, then the contents inside if() will be skipped and else() will be executed directly. But switch the clock_source code is inside if(). This causes the clock_source switch to fail.

3. To avoid the issues mentioned above, customer tried changing IMULT=60, REFDIV=1, ODIV=3. The customer's XTAL is 10MHz. It seems that the customer's configuration meets the requirements, but the customer found that if he uses this configuration, his code output becomes uncontrollable.

However, if he changes back to IMULT=40, REFDIV=1, ODIV=2 and then manually adds SysXtalOscSel() to switch the clock source to XTAL, the problem disappears.
Customer want to know why IMULT=60, REFDIV=1, ODIV=3 will have issue.
Could you please help to check this? Thanks!
Best regards,
Julia