This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2541 / CC2540 BLE Crystal Specification for 32.768kHz and 32MHz

Other Parts Discussed in Thread: CC2541, CC2540

I have a question on both the 32.768kHz XTAL and 32MHz XTAL specifications.  In the CC2541/CC2540 specifications both XTALs are shown as requiring +/-40ppm.  But there is also a footnote for both that states "Including aging and temperature dependency, as specified by [1]".  The [1] reference seems to refer back to the BT Core spec for different PPM levels.  This footnote seem reasonable for the way MHz crystals are specified, but not for the way 32.768kHz crystals are specified (due to parabolic coefficient).  Please see my quick analysis below and confirm if my understanding is correct.

BT Core Spec requires +/-500ppm worst case on the sleep clock and +/-50ppm worst case on the active (MHz clock). 

Looking at a 32.768kHz spec here is what I think:

Frequency Tolerance Options (32.768kHz) = 20ppm, 30ppm and 50ppm

Parabolic Coefficient = -0.04ppm / °C2

To convert from ppm to % -> x(%) = x(ppm) / 10000

Equation for parabolic coefficient use:

Freq = Freq0 * [1 – 0.04ppm * (T – T0)2]

So worst case:

Freq = 32.768kHz * [1 – 0.04ppm * (-40 – 25)2]

0.04ppm converts to 0.000004%

But you need to divide by 100 again in order to subtract from 1….therefore you now have:

32.768kHz * [1 – 0.00000004 * (-40 – 25)2] = ~32.7624kHz

 A Seiko app note also shows for straight PPM just use (if analyzing at -40°C):

Ftemp = B * [T – T0]2

Ftemp = – 0.04ppm * (-40 – 25)2

Ftemp =  -169ppm  

Going hot will have the same negative effect on frequency because of the parabolic nature of the 32.768kHz XTAL but if you consider +105°C you will have a larger PPM:

Ftemp = -255ppm

These PPM rates even with the initial frequency tolerance added in are well within the specification for BLE of +/-500ppm.  For the sleep clock you can just add the calculated PPM due to temp to the worst case ppm for the initial tolerance (in our case -30ppm for a device that meets the CC254x spec) for a total of -285ppm.  This leaves quite a bit of margin for any additional ppm rate introduced by the CC254x internal clocking circuitry to stay within the +/-500ppm for BLE specification.

Therefore I believe the device specification is pointing out only the 40ppm initial tolerance rate for a 32.768kHz XTAL (even though it mentions temp I don’t think this includes the parabolic coefficient for the 32.768kHz XTAL).

Please confirm or correct my understanding.

For a 32 MHz oscillator I see options typically for 20ppm from -40°C to +85°C or 50ppm for -40°C to +125°C (which would not meet the CC254x requirements of 40ppm).  I'm sure some companies offer a temp range in between with 40ppm as well.  As mentioned above the active clock needs to be 50ppm worst case per BT Core spec for the MHz oscillator so I believe the spec calls out 40ppm on the MHz XTAL to give some buffer for the internal circuitry errors.

Please confirm or correct my understanding.

Kind Regards,

Marc

  • I'll have the HW team take a look at this.

  • Hi Sandeep,

    Any update from the team?
    -Marc

  • Hi Sandeep,

    Bumping....any update from the team?

    Kind Regards,

    Marc

  • Hi Marc,

    Sorry for the late answer on this. The short story is that you are right. What is stated in the datasheet is not accurate.

    As you point out, the BLE spec has a requirement on the sleep clock of +/- 500 ppm, and the crystal we actually use in the reference design will have a worst case tolerance over the entire temperature range (-40 / + 85) of almost 300 ppm.

    Note that for current consumption optimization you can enter the accuracy of your clock as an argument in the BLE stack. This will adjust the length of the RX time when listening for the master while in a connection. The more accurate clock you have, the shorter time you can spend in RX and thus save power. I believe this parameter is currently set to 40 ppm, so if you plan to use your device in conditions beyond typical room temperature you will have to account for this in SW.



    Best regards,
    Fredrik