Skip to content

Query about CPU Clocking #47

@darksidelemm

Description

@darksidelemm

The RS41 boards have a 24 MHz crystal available ('HSE'), but it appears to need to be explicitly enabled to be used. Looking at the code in here it seems like the internal oscillator ('HSI') is being used: https://github.com/Nevvman18/rs41-nfw/blob/main/fw/arduino-ide_variant-files/variants/STM32L4xx/L412RB(I-T)xP/generic_clock.c#L36

Drift information on the internal oscillator, from the STM32L412 datasheet:
Image

RC oscillator drift could lead to errors in modulation symbol rate timing.

I did some basic testing to see what the Horus binary modulation rate error (a 'ppm' value coming out of the demodulator) looks like when comparing a board running RS41-NFW to one running RS41ng (which definitely does use the external crystal). This was only over a temperature drop of about 20-30 degrees, so it's possible the impacts could be worse at lower or higher temperatures.

These results aren't definitive, but do seem to suggest there is some modulation symbol rate offset when running RS41-NFW. I haven't yet quantified what amount of symbol rate error will start to degrade demodulation, but it's something I'll be looking into.

UPDATE: I ran some simulations, and at weak SNRs (-5 dB, which is about the 50% packet error rate point), the demodulator performance starts to degrade with more than 0.3% (3000 ppm) symbol error rate, and completely breaks at around 0.6-0.7% symbol error rate.

RS41ng - starting temp was about 25 degrees C, end was -5 degrees C:

Image

RS41-NFW - similar range to above:

Image

Interestingly RS41-NFW seems to start out low, then get better at the temperature drops.

Anyway, running from the crystal would probably be a good idea...

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions