This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Rigado BMD-340 - NRF52840 sleep current

Hi,

I'm trying to get my NRF52840 to minimum current in sleep, but got stuck around 440 uA. Reading through the various posts about sleep current for this type of device, the sleep current should be around 120 uA, which is 4x lower than what I obtain.

I already tried to turn of modules in the config file, without result.

Is there something I can change in the config file in order to go to a lower current?

The main loop just has

__WFE();
NRF_POWER->SYSTEMOFF = 1;

Here my config file:

sdk_config.h

Parents
  • Hi

    I asked one of our Thread experts if there were any issues like this, and he says that in sleep with no TX/RX peaks, the current will stay below 5uA, so there should not be any issues with OpenThread in the 3.0.0 version of the Zigbee and Thread SDK.

    How are you measuring the current of your device? You can check out this guide for just about any way to reduce current consumption as well. Could you also show me what you do to disable/enable OpenThread?

    Best regards,

    Simon

Reply
  • Hi

    I asked one of our Thread experts if there were any issues like this, and he says that in sleep with no TX/RX peaks, the current will stay below 5uA, so there should not be any issues with OpenThread in the 3.0.0 version of the Zigbee and Thread SDK.

    How are you measuring the current of your device? You can check out this guide for just about any way to reduce current consumption as well. Could you also show me what you do to disable/enable OpenThread?

    Best regards,

    Simon

Children
  • Hi Simon,

    I checked the guide already, without major improvements

    In the mainloop, we have:

    // Enter main loop.
        while (true)
        {
          thread_instance_init();
    
          initUdpListenSocket();
          open_udp_socket();
          
          while(1)
          {
            nrf_drv_wdt_channel_feed(wdt_chan);
      
            if ( nus_sent == 1 )
            {
              NRF_LOG_INFO("Sending nus data" );
              nus_data_send(msgbuff+8, (uint16_t )datalength);
              nus_sent = 0;
            }
      
            if (NRF_LOG_PROCESS() == false  && !otTaskletsArePending(thread_ot_instance_get()))
            {
              thread_sleep();
            }
    
            thread_process();
            
            app_sched_execute();
            power_manage(); 
            
          }
    
          thread_instance_finalize();
        
      }

    To disable thread, I comment out call to thread init and process.

    Is there anything else that we can do?

Related