STM32WL5MOC integrated RTC/LSE: consistent ~100-120 ppm drift, confirmed after ruling out software causes
Summary
On an STM32WL5MOC-based LoRaWAN end node, we've measured a consistent ~100 ppm RTC drift on the module's integrated LSE (32.768 kHz) crystal — noticeably outside the commonly quoted ~±20 ppm room-temperature tolerance. We isolated this down to the RTC hardware itself through several independent tests before concluding it's a genuine crystal characteristic (or specific to this device/batch) rather than a software or configuration issue. Posting to ask whether ~100 ppm is within expected variance for this SiP's integrated crystal, or worth escalating further.
Configuration
- MCU: STM32WL5MOC (Cortex-M4 side)
- RTC:
RTC_BINARY_MIXmode,PREDIV_A=31,PREDIV_S=1023(10-bit synchronous prescaler) - RTC clock source: LSE — confirmed selected and ready (
RCC_FLAG_LSERDY,__HAL_RCC_GET_RTC_SOURCE()) before proceeding;HAL_RTC_MspInit()itself callsError_Handler()if LSE isn't ready/selected, so normal boot already implies this passed. - Application: LoRaWAN Class A end node (US915), periodic uplinks every few minutes,
DeviceTimeReq/DeviceTimeAnsused for network time sync.
Configuration
- MCU: STM32WL5MOC (Cortex-M4 side)
- RTC:
RTC_BINARY_MIXmode,PREDIV_A=31,PREDIV_S=1023(10-bit synchronous prescaler) - RTC clock source: LSE — confirmed selected and ready (
RCC_FLAG_LSERDY,__HAL_RCC_GET_RTC_SOURCE()) before proceeding;HAL_RTC_MspInit()itself callsError_Handler()if LSE isn't ready/selected, so normal boot already implies this passed. - Application: LoRaWAN Class A end node (US915), periodic uplinks every few minutes,
DeviceTimeReq/DeviceTimeAnsused for network time sync.
Result
Consistently ~100-120 ppm (averaging close to 100 ppm) RTC drift on the STM32WL5MOC's integrated LSE crystal, confirmed via three independent methods (multi-day network timestamp analysis, an isolated RTC-only firmware build with everything else stripped out, and on-device DeviceTimeAns interval measurement), with every plausible software-side cause checked and ruled out.
Question
Is ~100 ppm within the expected range for this SiP's integrated 32.768 kHz crystal (batch variance, temperature, aging), or would this be worth flagging as a potential hardware/board-level issue? Any guidance on typical tolerance for the STM32WL5MOC's integrated LSE, or additional steps to further isolate crystal vs. board-level causes (e.g., load capacitance mismatch), would be appreciated.
Alex
