QSPI flash DPD mode

Hi

I struggle with my external QSPI flash and power consumption of our custom board (at least I think that would be the problem with too high idle power consumption). We use W25Q512 flash and the device works with this overlay:

&qspi {
	 status = "okay";
	 pinctrl-0 = <&qspi_default>;
	 pinctrl-1 = <&qspi_sleep>;
	 pinctrl-names = "default", "sleep";
	 w25q512: w25q512_0@0 {
		compatible = "nordic,qspi-nor";
		reg = <0>;
		sck-frequency = <133000000>;
		jedec-id = [ef 40 20];
		readoc = "read4o";
		writeoc = "pp4o";
		size = <DT_SIZE_M(512)>; //512Mb
		has-dpd;
        t-enter-dpd = <3000>;
        t-exit-dpd = <3000>;

We optimized our code to go sleep after some measurements (it's a battery powered sensor device), but I see still 2..3 mA current draw. I almost scrapped one board searching where the power goes and last thing (ofcourse NRF52840 too) on the board was flash chip -- the current draw with flash chip was 1.9 mA and when I removed the chip, fall the power consumption in idle mode to 30..35 uA.

I tried pm_device_action(flash_dev, PM_DEVICE_ACTION_SUSPEND), errata 122 fix (*(volatile uint32_t *)0x40029010ul = 1ul; *(volatile uint32_t *)0x40029054ul = 1ul;) and  nrfx_qspi_uninit(); but the power consumption did not change at all after them.

Can I do something else with my flash or maybe has someone used the same chip and knows a bit more about that?

SDK, we use, is NRFConnect 2.6.0

Tiit

Parents
  • Hi

    If I recall correctly, errata 122 is covered in the latest nRF Connect SDK versions, so that shouldn't be it. Can you confirm that the nrfx_qspi_uninit() function runs correctly and completes? I see you have configured the clock speed to run at 133 MHz, but the nRF52840 only supports QSPI clock speeds of up to 32MHz I'm afraid, so that could be a factor to the large current draw as well. You could also after the qspi uninit function, make sure the external flash no longer gets power by using a GPIO for power control for example.

    Best regards,

    Simon

Reply
  • Hi

    If I recall correctly, errata 122 is covered in the latest nRF Connect SDK versions, so that shouldn't be it. Can you confirm that the nrfx_qspi_uninit() function runs correctly and completes? I see you have configured the clock speed to run at 133 MHz, but the nRF52840 only supports QSPI clock speeds of up to 32MHz I'm afraid, so that could be a factor to the large current draw as well. You could also after the qspi uninit function, make sure the external flash no longer gets power by using a GPIO for power control for example.

    Best regards,

    Simon

Children
No Data
Related