The system on current is larger than that specified in the specification

Hi

I use the light ctrl example from NCS 3.2.4 on the 52840DK v3.0.1, serial communication with an external MCU is required. After suspending the UART and disabling Mesh broadcasting, the current consumption remains at 19 µA.The software operation process is as follows:

I have disabled UART0 in the ovelay and used RTT to log. After calling uart_rx_disable, waiting for the UART_RX_DISABLE event to be generated, and then calling pm_device_action_run(uart_dev, PM_DEVICE_ACTION_SUSPEND) to suspend the UART and disable broadcasting.the current is still 19 µA. Also I have switched SW6 to nRF ONLY.

How can I achieve the 2.36uA specified in the specification?

I also have tested as follow: After disabling the serial driver (CONFIG_SERIAL=n) and turning off Mesh broadcasting, the sleep current drops to 6 µA, which is still higher than the target of 2.36 µA.

Parents
  • Hello,

    If I were to guess the problem is likely caused by the application is using IN events instead of PORT events to generate pin interrupts.

    Please try to add the following to to the board file:

    &gpio0 {
        sense-edge-mask = <0xFFFFFFFF>;
    };
    
    &gpio1 {
        sense-edge-mask = <0xFFFFFFFF>;
    };

    Do a pristine build, flash, power cycle and measure the current again.

    If the current is still high then try to execute the attached python script and send me the output, run:

    python .\read_global_registers.py --all

    To automatic save the entire content to file you can use:

    python .\read_global_registers.py --all  > file.txt 

    Best regards,
    Kenneth

    7624.nrf52840.zip

  • Hi Kenneth,

    Thanks for your help.

    I also want to use UART0 to output log. When printing is not needed, pm_device_action_run(uart_log, PM_DEVICE_ACTION_SUSPEND) is called to suspend the UART used for printing.

    However, it is found that the current remains above 500 μA after calling pm_device_action_run(uart_log, PM_DEVICE_ACTION_SUSPEND). It seems that suspending the UART from the application is not possible?

    Best regards,

    John

Reply
  • Hi Kenneth,

    Thanks for your help.

    I also want to use UART0 to output log. When printing is not needed, pm_device_action_run(uart_log, PM_DEVICE_ACTION_SUSPEND) is called to suspend the UART used for printing.

    However, it is found that the current remains above 500 μA after calling pm_device_action_run(uart_log, PM_DEVICE_ACTION_SUSPEND). It seems that suspending the UART from the application is not possible?

    Best regards,

    John

Children
Related