Losing PLL Lock

[color=#333333][size=small][size=small]Dear customer,

There is a Clock PLL Losing Lock event in the status register. The user manual states: "This event status bit is set is set to indicate that the system’s digital clock PLL is having locking issues. This should not happen in healthy devices operating in their normal range.” Its occurrence may indicate a

(1) Device misconfiguration, device has not been configured or initialised correctly. For example, as part of the initialisation of the IC (dwt_initalise API function) it is required to decrease the SPI speed to less then 3MHz.

(2) Problem in the power or clock inputs to the device. E.g. there could be some “noise” coming for the power supply causing the Clock PLL to be lost. This could be caused by not having decoupling capacitors present at the supply pins. The application note APH001 on HW design has recommendations on how to avoid this noise.

(3) A faulty part. This could be due to a faulty component on the board.

Finally the PLLLDT bit in Register file 0x24:00 –EC_CTRL should be set to ensure reliable operation of this CPLOCK bit. See also the note in the CLKPLL_LL register description in IC user manual. [/size]
[/size][/color]

1 Like

Hello,

I have the similar problem with pending bit [color=#333333][size=small]CLKPLL_LL.[/size][/color]

[color=#333333][size=small]Let me introduce my setup. I am using DWM1000 module with STM32L4 as host proc.[/size][/color]

[color=#333333]size=small I think that device is configured properly. I use 750kB/s SPI clock, so i think I am pretty under 3MHz. I use your APIs, and [color=#333333][size=small]dwt_initalise(DWT_LOADNONE) returns SUCCESS.[/size][/color][/size][/color]
[color=#333333][size=small][color=#333333][size=small]This is my config procedure:[/size][/color][/size][/color]
[color=#333333][size=small][color=#333333][size=small]…after MCU boot and SPI enable…[/size][/color][/size][/color]
[color=#333333][size=small][color=#333333][size=small]dwt_setinterrupt(DWT_INT_TFRS,1); // to enable transmit interrupt[/size][/color][/size][/color]
[color=#333333][size=small][color=#333333][size=small]initStat = dwt_initialise(DWT_LOADNONE);[/size][/color][/size][/color]
[color=#333333][size=small][color=#333333][size=small]configStat = dwt_configure(&uwbConfig,DWT_LOADNONE);[/size][/color][/size][/color]
[color=#333333][size=small][color=#333333][size=small]dwt_configuretxrf(&uwbtxconfig);[/size][/color][/size][/color]
[color=#333333][size=small][color=#333333][size=small]dwt_setleds(1);[/size][/color][/size][/color]

[color=#333333][size=small][color=#333333]size=small I am using DWM1000 module, so I assume, that there are enough blocks caps inside, also clock is designed properly inside). here is my board layout:[/size][/color][/size][/color]
[color=#333333][size=small][color=#333333][size=small][/size][/color][/size][/color]
[color=#333333][size=small][color=#333333][size=small]There are 2× 100nF 2×10uF ceramic and 1×470uF electrolytic as close as possible to DWM1000[/size][/color][/size][/color]

[color=#333333][size=small][color=#333333]size=small i have changed the module and the issue remains.[/size][/color][/size][/color]

[color=#333333][size=small][color=#333333][size=small]_________________[/size][/color][/size][/color]
[color=#333333][color=#333333][size=small][size=small]transmit is “working”, DWM1000 TX led blinks, interrupt TX complete is [/size][/size][/color][/color]comming and is[color=#333333][color=#333333][size=small][size=small] [/size][/size][/color][/color]succesfuly[color=#333333][color=#333333][size=small][size=small] handled by dwt_isr();, but my [/size][/size][/color][/color]arduino[color=#333333][color=#333333][size=small][size=small] sniffer 100% working do not sniff anything, also my current meter with visualization shows small current peak (< 30-40mA)[/size][/size][/color][/color]

[color=#333333][color=#333333][size=small][size=small]Here is some register print:[/size][/size][/color][/color]
[color=#333333][size=small][color=#333333][size=small]CHAN_CTRL: 8440011; TX_POWER: 15355575; DRX_TUNE2: 371A011D; RF_TXCTRL: DE005C40; TX_FCTRL: 29807F; SYS_MASK: 80; SYS_STATUS: 280 2; SYS_CTRL: 0; EC_CTRL: DEAD0004

PLLLDT in EC_CTRL is also set as recommended.[/size][/color][/size][/color]

[color=#333333][size=small][color=#333333][size=small]Could you please recommend me some advance for this issue? I think that transmission problems are maybe caused by PLL losing, am I right?[/size][/color][/size][/color]

[color=#333333][size=small][color=#333333][size=small]Thank you very much,[/size][/color][/size][/color]
[color=#333333][size=small][color=#333333][size=small]Best regards,[/size][/color][/size][/color]
[color=#333333][size=small][color=#333333][size=small]Jiri[/size][/color][/size][/color]

Hello,

I have the similar issue with Losing PLL Lock.

Let me introduce my setup. I am using DWM1000 module in coop with STM32L4.

(1) My SPI clock is still 750kB/s so I think it is pretty under 3MHz. I also use your API [color=#333333][size=small]dwt_initalise() and it returns SUCCESS.[/size][/color]
[color=#333333][size=small]Here is my init procedure:[/size][/color]
[color=#333333][size=small]…after MCU boot and SPI enable…[/size][/color]
[color=#333333][size=small]dwt_setinterrupt(DWT_INT_TFRS,1); // enable TX complete interrupt[/size][/color]
[color=#333333][size=small]initStat = dwt_initialise(DWT_LOADNONE);[/size][/color]
[color=#333333][size=small]configStat = dwt_configure(&uwbConfig,DWT_LOADNONE);[/size][/color]
[color=#333333][size=small]dwt_configuretxrf(&uwbtxconfig);[/size][/color]
[color=#333333][size=small]dwt_setleds(1);[/size][/color]

[color=#333333]size=small I think I cant have power or clock problem, because I am using your module DWM1000, and I assume, that it has enough blocking inside. Additionally, i have added 2×100nF, 2×10uF ceramic and 1×470uF electrolytic caps as close as possible to the DWM1000. (see attachment)[/size][/color]

[color=#333333]size=small I change the module for a new one and the problem still remains.[/size][/color]

[color=#333333][size=small][color=#333333][size=small]The PLLLDT bit in Register file 0x24:00 –EC_CTRL is also set as recommended.[/size][/color][/size][/color]

[color=#333333][size=small]I think it cant be a hardware issue, maybe I forgot to configure something.[/size][/color]

[color=#333333][size=small]Thank you for any advice,[/size][/color]
[color=#333333][size=small]Best regards,[/size][/color]
[color=#333333][size=small]Jiri[/size][/color]