Problem with hight conspumtion in System on mode

Hello, I am currently working on a custom board that contains the E73-2G4M08S1C module.
This module contains the nRF52840 chip. My goal is to exit System On periodically every 2 seconds.
I fulfilled this task, but the device consumes 600uA in System On mode, which is quite a lot.
I ran the same code on nRF52840 DK and the consumption in System On mode was 6uA, which is the expected result.
I really don't know where the problem could be. And I would appreciate any help :) I am attaching the scheme and the used code to the attachments.



Parents
  • Hi Peter, 

    Which SDK version you are using ? 

    To be able to enter SystemOn Idle mode, you don't need to call sys_system_on(). Zephyr handle this automatically for you. You just need to put the thread to sleep using k_sleep(). 

    If you are using NCS v2.5.x or lower I would suggest to take a look at the \zephyr\samples\boards\nrf\system_off sample. The sample demonstrate both systemON and systemOFF states. You can use that to test your board power consumption. 

  • Hi, I am using v2.6.1 SDK. I am currently trying to enable System off mode. I was inspired by the example offered by zephyr, but managed to get to 47uA in system off mode, which is quite a lot. I suspect it may be due to my prj.conf,but that's just my guess. I don't have much experience with nordic. I am using Segger and not UART0. I have all transistors in logic zero mode. So I think the hardware is fine. I'll be glad for every shot. I will send the used code again

    /*
     * Copyright (c) 2019 Nordic Semiconductor ASA
     *
     * SPDX-License-Identifier: Apache-2.0
     */
    
    
    #include <inttypes.h>
    #include <stdio.h>
    
    #include <zephyr/device.h>
    #include <zephyr/drivers/gpio.h>
    #include <zephyr/kernel.h>
    #include <zephyr/pm/device.h>
    #include <zephyr/sys/poweroff.h>
    #include <zephyr/sys/util.h>
    
    
    int main(void)
    {
        const struct device *const cons = DEVICE_DT_GET(DT_CHOSEN(zephyr_console));
    
        int	rc = pm_device_action_run(cons, PM_DEVICE_ACTION_SUSPEND);
    	if (rc < 0) {
    		printf("Could not suspend console (%d)\n", rc);
    		return 0;
    	}
    
        sys_poweroff();
    
    	return 0;
    }

    CONFIG_PM_DEVICE=y
    CONFIG_GPIO=y
    CONFIG_CRC=y
    CONFIG_POWEROFF=y
    
    CONFIG_COUNTER=y
    CONFIG_UART_CONSOLE=n
    CONFIG_RTT_CONSOLE=y
    CONFIG_CLOCK_CONTROL=y
    CONFIG_CLOCK_CONTROL_NRF=y
    CONFIG_CLOCK_CONTROL_NRF_K32SRC_RC=y
    CONFIG_CLOCK_CONTROL_NRF_K32SRC_XTAL=n
    CONFIG_CLOCK_CONTROL_NRF_K32SRC_SYNTH=n
    CONFIG_CLOCK_CONTROL_NRF_K32SRC_500PPM=y
    CONFIG_CLOCK_CONTROL_NRF_K32SRC_RC_CALIBRATION=y
    CONFIG_CLOCK_CONTROL_NRF_CALIBRATION_LF_ALWAYS_ON=y
    CONFIG_LOG=y
    CONFIG_RTT_TX_RETRY_CNT=3
    CONFIG_RTT_TX_RETRY_DELAY_MS=1
    CONFIG_LOG_BACKEND_RTT=y
    CONFIG_LOG_BACKEND_RTT_MODE_BLOCK=y
    CONFIG_LOG_MODE_IMMEDIATE=y
    
    
    


     

  • yes I tried System off with no mods and it works exactly the same as my shortened version.

    I practiced HW development in such a way that I purchased nRF52840 DK. And I ran most of the code on it (including this example with the System on mode that I sent above).
    All the things that worked for me on DK also work for me on my custom board... except for this System Off / On mode

  • Please clarify, what number do you have when you try measuring current consumption on the DK ? 

    If you see 1-3uA on the DK and higher on your board, then it's most likely something else on your custom board is drawing current. 
    Please try to test with a board that doesn't have any other component except for the nRF52 and the caps. Or try to test with a board that doesn't have the nRF52 on it just to check if anything else is drawing current. 

  • R1 (10k) in parallel with R2&R4 (10k+10k=20k) gives 5k. 5k at 3v consumes 600uA, Perhaps IO 0.08 pin is being left driven high which therefore consumes 600uA so maybe try keeping IO 0.08 low.

    Also if IO 1.13 is driven high and either IO 0.30 or IO 0.31 is driven low at the same time then that will consume around 630uA.

  • Sure! Here's the corrected version of your sentence:

    "The error I reported is probably not hardware-related, but rather a bad `proj.conf` setting. On the nRF52840 DK, I have the basic settings as in the example in the system off folder. However, on the E73-2G4M08S1C module, I have to add a few extra lines because of the crystal to be able to flash the program at all. On the DK, I measured 5 µA in System off, not 6 µA. In System on, the consumption was 8 µA.

    On my board, after disconnecting the Segger, I measured 16 µA in System off and 550 µA in System on.

    I tried installing a new board where I only had the E73-2G4M08S1C module, Header J1 and J2, D1, C4, C5, R5, C2, and C6. In this mode, I measured 0.8 µA in System off and 460 µA in System on, which is still extremely high, considering that almost nothing is installed. I looked at the diagram of the module provided by the manufacturer, but I didn’t find anything unusual. I supply 4V to the device from an 18650 Li-Ion battery."


    Modul E73-2G4M08S1C:




    Extra lines for E73-2G4M08S1C:

    CONFIG_COUNTER=y
    CONFIG_UART_CONSOLE=n
    CONFIG_RTT_CONSOLE=y
    CONFIG_CLOCK_CONTROL=y
    CONFIG_CLOCK_CONTROL_NRF=y
    CONFIG_CLOCK_CONTROL_NRF_K32SRC_RC=y
    CONFIG_CLOCK_CONTROL_NRF_K32SRC_XTAL=n
    CONFIG_CLOCK_CONTROL_NRF_K32SRC_SYNTH=n
    CONFIG_CLOCK_CONTROL_NRF_K32SRC_500PPM=y
    CONFIG_CLOCK_CONTROL_NRF_K32SRC_RC_CALIBRATION=y
    CONFIG_CLOCK_CONTROL_NRF_CALIBRATION_LF_ALWAYS_ON=y
    CONFIG_LOG=y
    CONFIG_RTT_TX_RETRY_CNT=3
    CONFIG_RTT_TX_RETRY_DELAY_MS=1
    CONFIG_LOG_BACKEND_RTT=y
    CONFIG_LOG_BACKEND_RTT_MODE_BLOCK=y
    CONFIG_LOG_MODE_IMMEDIATE=y



    I had a consumption of 275 µA on the RST pin, which is probably not right.
  • I have log 0 set by default on all pins, except for the RGB, where I have log 1 set (I switch to log 0 to turn on the LED lights).

Reply Children
No Data
Related