Hello,
During development of a custom board, based on the BMD-300 module from Rigado, which uses an nRF52832, we ran into a SoftDevice fault under specific circumstances.
The fault occurs upon completion of Bluetooth Mesh provisioning of the device via PB-GATT, but before the SoftDevice is reset.
The firmware environment is:
- nRF5 SDK 15.2.0
- nRF5 SDK for Mesh 3.1.0
- S132 SoftDevice 6.1.0 (bundled with the SDK) or 6.1.1
- SEGGER Embedded Studio for ARM 4.12
We were able to reproduce the issue by running the Light Switch Server example project, but it occurs even with custom firmware.
Not all pieces run into the fault, but those that do run into it, do so consistently. The Program Counter at fault entrance is 0x000152d4 for S132 6.1.0 and 0x00015326 for 6.1.1, which seem to correspond to the same code in the two versions.
Changing the LFCLK accuracy value supplied during SoftDevice initialization (or switching the source away from the LFXO) from 20ppm (from the crystal's datasheet) to either 250ppm or 1ppm seems to fix the fault. This has left us puzzled, since we expected that increasing the specified accuracy would, if anything, lead to worse problems.
Further, the faulting boards used to work under the same scenario when we checked a few months back, and the crystal and capacitor set-up is identical (the crystal is a different model, but is identical in specifications) to Rigado's implementation of the PCA10040.
As far as measurement is concerned, we could not find any conclusive difference in the clock frequency between working and non-working boards, but, without a reliable way to get the clock signal from the microcontroller, our measurements have been somewhat approximate.
I am not sure whether to consider this a hardware fault, since it definitely is hardware-dependent, or a SoftDevice or Mesh SDK issue.
Thanks in advance.
Alberto
