nRF54L15 power on crystal load capacitor selection

Hi

I have some questions regarding the 32 MHz crystal on the nRF54L15:

  1. If my firmware is configured to use external capacitors, will the very first crystal startup waveform captured after power-on already be using the external capacitors? Or is it still using the internal capacitors at that moment?

  2. The reason I’m asking is that I used the same PCB design but tested it with different firmware settings (external vs. internal capacitors). The measured frequency offset did not match my expectations. My external load capacitors are 12 pF, and the internal setting is the default 15 pF. However, the result I observed is that when using only the external capacitors, the frequency offset is actually 2 ppm slower compared to using the internal capacitors in firmware (with the external capacitors still mounted).

  • Hi Einar,

    Your suspicion was correct. Since the previous measurements were performed using a handheld spectrum analyzer, the accuracy was insufficient, and the results were therefore unreliable. We have re-tested the device using a Keysight N9000B, and the new measurement results are shown in the table below.

    The results confirm that using external load capacitors only is sufficient to meet the crystal specification. In contrast, when the internal load capacitors are enabled, the frequency deviation becomes significantly larger and is already approaching the ±60 ppm HFXO specification limit of the MCU. This outcome better matches our expectations.

    spectrum analyzer Keysight N9000B
    PCB capacitor  PCB1 with 12pf
    FW Internal cap External cap
    Tx frequency(set2.478GHz) 2477871370 2477975742
    Tx error -5.19088E-05 -9.7893E-06
    Read 0x5012071C "0000002B "00000000

    We will rearrange the crystal frequency validation test to confirm whether the results are consistent with the current TX test results. In the meantime, do you have any additional suggestions that could help us further verify this issue?

  • Hi,

    Thank you for confirming, this makes sense. I would suggest that you remove the external load capacitors as they are not needed and use only internal capacitors.

    Your crystal is specified to 8 pF, so twice that minus a bit of trace capacitance results means that 15 pF is probably sensible (so I suspect your external capacitors are a bit too small in any case). I recommend that you test the frequency error/offset with different load cap values to find the optimal value experimentally.

  • Hi,

    I would like to ask for clarification regarding the register value 0x0000002B.
    Based on the information available, the internal load capacitor range is 4 pF to 17 pF with a step size of 0.25 pF.
    Using this rule, the calculated capacitance for 0x2B comes out to approximately 14.75 pF, not 15 pF.

    Could you help explain how the value 0x2B corresponds to 15 pF? I would like to understand the calculation or mapping between these two values.

  • Hi,

    The exact value can vary from device to device as it includes trim values. You can see the calculation in zephyr/soc/nordic/nrf54l/soc.c, which also include these trim valued read from FICR. This performs the calculations as described in the datasheet, with this formula for HFXO:

    INTCAP = (((CAPACITANCE-5.5)*(FICR->XOSC32MTRIM.SLOPE+791)) + 
               FICR->XOSC32MTRIM.OFFSET*4)/256

    If you would like to re-do these calculations by hand you need to read the TRIM values from the specific device and do the calculations for that yourself, but I recommend that you do not change this and use the implementation you can find in the latest SDK. (Note that this value has changed, so if you are using an old SDK, the formula used is not optimal and should be updated. SDK 3.1 and later use the correct formula, that matches the current datasheet).

  • Hi

    After reading the calculation explanation, I understand that the declared 15 pF is adjusted by slope and offset to produce the final value written to INTCAP (which we read as 0x2B). I would like to ask again: does 0x2B, according to the formula, represent the final INTCAP value — and is there a formula to convert 0x2B into pF? Or is it just a setting that cannot be directly converted to pF, and only indicates that after applying slope and offset the MCU’s CL will be 15 pF?

Related