Conflict with SoftDevice on P0.12

Working application, using S132 SoftDevice, new variation of the application. Using UARTE, with P0.12 assigned as RxD. Something in the SoftDevice is grabbing P0.12 and setting it as an output and low. If I call uart_init() early enough to grab the pin, the softdevice crashes and my code never starts running. GPIO is definitely not grabbing it; indeed, I can't even set it as an output and set it high. What other peripheral is likely to be grabbing that pin? Nothing I can find in any of the source code should do anything with it.

Even more mysterious, we have 3 units (out of over a dozen in this batch) that configure the pin correctly. A timing difference in the startup, perhaps?

Steve Hendrix

  • The GPIO is not guaranteed to be reset until you release the nRESET signal. I don't remember specifically for the nRF52832, but some nRF52 variants will retain the GPIO configuration from before the reset for as long as the nRESET signal is asserted. To be absolutely sure the GPIO is in the reset state and not reconfigured by any code, you could perform a chip erase followed by a reset and repeat the measurement after. The ESD diode may become damaged if the device has been back powered through this pad.

Related