This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

High Current Consumption After I2S

I am using the nRF52832 very successfully for an audio application. However, I am observing an undesirable high current state after audio playback is complete.

Here is the turn of events. i == current

  1. The user connects to the device with BLE. i < 0.5mA
  2. The user requests audio playback. This will turn on SPIM0 and I2S, as well as use the FPU.
  3. Playback is complete. We wish to return to state (1). I2S is disabled via nrf_drv_i2s_stop(), and nrf_drv_i2s_uninit(). Interrupts stop, but we are now drawing ~ 1.7 mA.

I was experiencing the spurious interrupts from Errata item 87, and seeing over 4 mA! but I implemented that fix and that problem was eliminated.

Note that calling sd_power_system_off() lowers the consumption immediately to less than 200 uA, further strengthening the evidence that the nRF52 is drawing the extra power.

Any suggestions?

Softdevice 3.0 SDK 12.1.0

Parents
  • It turns out that I was leaving the I2S bus in a bad state. Using the nRF driver functions instead of the low level I2S functions solved the problem.

Reply
  • It turns out that I was leaving the I2S bus in a bad state. Using the nRF driver functions instead of the low level I2S functions solved the problem.

Children
  • What was taking the current in this situation, the nRF52 or the external hardware ?

  • It was the nRF52; in particular, it was the I2S module. By using low level functions instead of the high level driver, I was somehow putting the module in a state where it drew more current. Interestingly, I was never able to get it out of this state by changing registers in the IDE, which is why it took so long for me to figure it out.