Hi,
We are using nRF53 and interfacing MX66 flash over QSPI in our project. We are having some issues with the overall power consumption.
After making some investigation, I found out that disabling CONFIG_NORDIC_QSPI_NOR drops the average current from ~4mA to few hundred microAmps. This took my attention and led me to questioning the QSPI power consumption.
Hence, I started making some measurements on the nRF53-DK board to see the power impact of the QSPI block. For the tests I used:
- nRF Connect SDK v2.2.0
- SPI_Flash example under ncs\v2.2.0\zephyr\samples\drivers\spi_flash
- nRF53-DK as the target board and Power Profiler Kit 2 in source meter mode as the profiler.
I have made 4 different measurements. As mentioned in the documentation below, SB18 needs to be shorted for the power consumption of the external memory to be added to the measured current.
In the first set of measurement, I kept SB18 open to see power consumption without the external flash.
- 1st measurement: SB18 kept open. No changes made at prj.conf for power optimisations. Measured average current is 6.12mA at 3V
- 2nd measurement: SB18 kept open and prj.conf changed as below to minimise power consumption. Measured average current is 340uA at 3V
CONFIG_SERIAL=n
CONFIG_LOG=n
CONFIG_DEBUG=n
CONFIG_CONSOLE=n
#CONFIG_STDOUT_CONSOLE=y
CONFIG_FLASH=y
CONFIG_SPI=y
- 3rd measurement: SB18 shorted (flash power consumption included). No power optimisation in prj.conf (prj.conf as below). Measured average current is 10.81mA at 3V
CONFIG_STDOUT_CONSOLE=y
CONFIG_FLASH=y
CONFIG_SPI=y
- 4th measurement: SB18 shorted (flash power consumption included). Power optimisation in prj.conf as below. Measured current is 10.31mA at 3V
CONFIG_SERIAL=n
CONFIG_LOG=n
CONFIG_DEBUG=n
CONFIG_CONSOLE=n
#CONFIG_STDOUT_CONSOLE=y
CONFIG_FLASH=y
CONFIG_SPI=y
As a summary:
When SB18 is kept open (flash consumption excluded) and with power optimised config, power consumption is 340uA.
When SB18 is shorted (flash consumption included) and with the same config as above, power consumption is 10.31mA.
SPI_Flash sample project does not continuously read/write to the flash as I can see from the source code. Hence after the erase-write-read test sequence is over, there shouldn’t be any flash access.
My questions are:
- What is the reason for this high power consumption when interfacing the flash over QSPI?
- How can I tackle this problem to reduce the power consumption?
- Is there any way to initially disable the QSPI block at the prj.conf and then enable it on the fly when flash access is required, and then disable it again?
Regards,
Kerem