MX25R64 cannot enter DPD.

Hello,

    We found that the nrf52840 cannot properly pull the CS pin high to get the MX25R64 into DPD. The SDK version is nrf connect SDK V2.0.0. The macro CONFIG_PM_DEVICE=y has been enabled. At this time, the driver nrf_qspi_nor.c should be able to control the MX25R64 to enter the DPD. But when we measured the CS pin level, it was always low. How to pull the cs pin high in nrf_qspi_nor.c ?

    Thanks.

Parents
  • Hi Bon,

    Sorry for the delay, I have been out of office.

    I am working on this and will keep you updated.

  • Hello Helsing,

    Great. Looking forward to the fix and update.

    Regards

    Bon

  • Hi Bon,

    The root cause of this issue with DPD could be the lack of pull up for the CSN pin.

    For nRF52840 DK you may add a pull up for the QSPI CSN signal in such way:

            qspi_sleep: qspi_sleep {
                    group1 {
                            psels = <NRF_PSEL(QSPI_SCK, 0, 19)>,
                                    <NRF_PSEL(QSPI_IO0, 0, 20)>,
                                    <NRF_PSEL(QSPI_IO1, 0, 21)>,
                                    <NRF_PSEL(QSPI_IO2, 0, 22)>,
                                    <NRF_PSEL(QSPI_IO3, 0, 23)>;
                            low-power-enable;
                    };
                    group2 {
                            psels = <NRF_PSEL(QSPI_CSN, 0, 17)>;
                            low-power-enable;
                            bias-pull-up;
                    };
            };

    You could do this directly in the board files: zephyr/boards/arm/nrf52840dk_nrf52840/nrf52840dk_nrf52840-pinctrl.dtsi

    In other words, add a special group2 for CSN with the added parameter

    bias-pull-up

    It is probably tidier/more conventional to add this as an overlay in your project folder.

Reply
  • Hi Bon,

    The root cause of this issue with DPD could be the lack of pull up for the CSN pin.

    For nRF52840 DK you may add a pull up for the QSPI CSN signal in such way:

            qspi_sleep: qspi_sleep {
                    group1 {
                            psels = <NRF_PSEL(QSPI_SCK, 0, 19)>,
                                    <NRF_PSEL(QSPI_IO0, 0, 20)>,
                                    <NRF_PSEL(QSPI_IO1, 0, 21)>,
                                    <NRF_PSEL(QSPI_IO2, 0, 22)>,
                                    <NRF_PSEL(QSPI_IO3, 0, 23)>;
                            low-power-enable;
                    };
                    group2 {
                            psels = <NRF_PSEL(QSPI_CSN, 0, 17)>;
                            low-power-enable;
                            bias-pull-up;
                    };
            };

    You could do this directly in the board files: zephyr/boards/arm/nrf52840dk_nrf52840/nrf52840dk_nrf52840-pinctrl.dtsi

    In other words, add a special group2 for CSN with the added parameter

    bias-pull-up

    It is probably tidier/more conventional to add this as an overlay in your project folder.

Children
Related