I have a project where I'm using a TMS320F28020. On some of the PCBs the microcontroller enters limp mode (SysCtrlRegs.PLLSTS.bit.MCLKSTS==1) all the time after power up. On other PCBs it sometimes enters, and sometimes runs normally. Other PCBs again always runs fine. If I'm running in debug mode (with XDS110) the PLL and external crystal is always ok.
We've tried to replace the crystal, the microcontroller and the capacitors for the crystal. None of the changes makes any difference.
I'm using a 20MHz crystal, PLLCR=4, and DICSEL=2 (sys clock = 40MHz).
The init pll function (void InitPll(Uint16 val, Uint16 divsel)) always pass the lock check (while(SysCtrlRegs.PLLSTS.bit.PLLLOCKS != 1)).