High power consumption when using SPIM3

I am working with an nRF52840 on a custom board with an SD card connected on SPI, running Zephyr 3.2.99/NCS 2.2.0.

I would like to use SPI frequency >8 MHz for the SD card, which would require using the SPIM3 instance. When using an Otii Arc to measure current consumption, I observe that even when only configuring for 8 MHz speed, SPIM3 results in a much larger current consumption than SPIM2. In the same application idle condition with BLE advertising, but nothing else happening, and not actively using SPI, using SPIM2 for the SD card results in ~136µA current draw (with the majority going to the sleeping SD card), while changing to SPIM3 increases this to ~529µA.

I am aware of anomaly 195 "SPIM3 continues to draw current after disable", but this only refers to current consumption after disabling the SPIM3 instance. In nrfx_spim.c, the anomaly workaround is implemented only when un-initializing the instance, not every time a transfer is completed. Does the HW issues with SPIM3 also explain an increased current consumption while it is still enabled, but not actively used, or should a workaround be required after every data transfer (e.g. when CS goes high)? Or, is it simply expected the SPIM3 uses more power due to being more capable, supporting up to 32 MHz?

Parents Reply Children
  • Is the increased standby current of SPIM3 not related to the product anomaly then, but simply expected, even when using SPIM3 at low frequencies (<= 8 MHz)? In other words, should I expect to see approximately the same increase in current if the anomaly were to be fixed in a later revision of the nRF52840?

    I would not have expected SPIM3 to draw so much current when not actively in use, just like the radio uses power only when it needs to. The SD card is used by a logging backend, but it can be a long time between each write. The increase in standby current consumption when using SPIM3 without manually suspending instead of SPIM2 is extreme.

    The situation would be more understandable if the "stuck" high power consumption is the result of the anomaly also affecting idling between transfers, and not just a failure to properly disable the peripheral when un-initializing.

  • Hi,

    Martin Sollie said:
    just like the radio uses power only when it needs to.

    Radio is always disabled after use, to achieve lowest possible current.

    In order to achieve low power consumption, we recommend that you follow the description in the PS:

    https://infocenter.nordicsemi.com/topic/ps_nrf52840/spim.html?cp=5_0_0_5_24_4#concept_twi_low_power

     

    In addition to the above, as you've also pointed out, errata #195 is required to enter lowest possible sleep mode after using (and disabling) the peripheral.

     

    Kind regards,

    Håkon

Related