Usage Notes and Known Design Exceptions to Functional Specifications
21
SPRZ412K – December 2013 – Revised February 2020
Copyright © 2013–2020, Texas Instruments Incorporated
TMS320F2837xD Dual-Core MCUs Silicon Revisions C, B, A, 0
Advisory
PLL: May Not Lock on the First Lock Attempt
Revision(s) Affected
0, A, B, C
Details
The PLL may not start properly at device power up or wake up from Hibernate. The
PLLSTS[LOCKS] bit is set, but the PLL does not produce a clock.
Once the PLL has properly started, the PLL can be disabled and reenabled with no
issues and will stay locked. However, the PLL lock problem could reoccur on a
subsequent power-up or Hibernate cycle.
If the SYSPLL has not properly started and is selected as the CPU clock source, the
CPU will stop executing instructions. The occurrence rate of this transient issue is low
and after an initial occurrence, this issue may not be subsequently observed in the
system again. Implementation of the workaround reduces the rate of occurrence.
This advisory applies to both PLLs, with a different workaround for each.
Workaround(s)
SYSPLL Workaround:
Repeated lock attempts will reduce the likelihood of seeing the condition on the final
attempt. TI recommends a minimum of five lock sequences in succession when the PLL
is configured the first time after a power up. A lock sequence means disabling the PLL,
starting the PLL locking, and waiting for the LOCKS bit to set. After the final sequence,
the clock source is switched to use the PLL output as normal.
The Watchdog timer can be used to detect that the condition has occurred because it is
not clocked by the PLL output. The Watchdog should be enabled before selecting the
PLL as the clock source and configured to reset the device. If the PLL is not producing a
clock, the Watchdog will reset the device and the user initialization software will therefore
repeat the PLL initialization.
Many applications do not have a different initialization sequence for a Watchdog-initiated
reset; for these applications, no further action is required. For applications that do use a
different device initialization sequence when a Watchdog reset is detected, a flag can be
used to identify the Watchdog reset as a PLL cause. The SYSDBGCTL[BIT_0] bit (which
is bit 0 at 0x0005D12C) can be set active during the PLL lock sequence and used to
distinguish a Watchdog PLL retry attempt versus a different Watchdog reset source.
The SYSPLLSTS[SLIPS] should also be checked immediately after setting the PLL as
the SYSCLK source with SYSPLLCTL1[PLLCLKEN]. If SLIPS indicates a PLL slip, then
the PLL should be disabled and locked again until there are no slips detected.
See the C2000Ware InitSysPll() function for an example implementation of this
workaround, as well as the DriverLib function SysCtl_setClock().
The workaround can also be applied at the System level by a supervisor resetting the
device if it is not responding.