The best way to save energy in an application

Hi,
I am developing an application that includes the following features:
1. PWM to control the buzzer
2. 2 Uarte to communicate with 2 external devices
3. BLE to wireless communication (ble_app_uart)
4. Timer
5. saadc to read battery level
6. nrf_log_info for debugging

Now I want to implement an application as economical as possible, so I planned this topic
1. PWM => I enable/disable depending on when the user wants/don't want to ring buzzer by app_pwm_enable (& context) / app_pwm_disable (& context)
2. Libuarte => I enable/disable uarte when nRF needs/no need to communicate with external devices using nrf_libuarte_async_uninit (& libuarte) / nrf_libuarte_async_ninit (& libuarte)
3. BLE => I increase the advertising interval as big as possible
4. timer => I think app_timer is the best way
5. saadc => now i don't have any solution for this
6. Log Info => I think I will disable it in sdk_config.h => NRF_LOG_BACKEND_RTT_ENABLED 0
I'm using the ON system when the device is idle
So can you give me some comments and suggestions on my plan?
I am using custom board with nRF5833 chip and my application is based on SDK16 ble_app_uart example
As this feature is the most important feature in my project so please provide me a complete process for this feature.
Thank you

  • Hi Jared,
    I can't find any schematic from this module
    But I confirm that is external crystal.
    So please suggest for me:
    1. how and when I should enable DC/DC converter ? Any blog post ?
    2. what is the advantage when I make app_timer use external external crystal ? how can use external crystal? I attached my sdk_config.h please check for me.
    May It here ? What is RC, XTAL, SYNTH ?
    Thank for your reply.
    I'm new at this topic so your reply help me a lot.

    // <o> NRF_SDH_CLOCK_LF_SRC  - SoftDevice clock source.
    
    // <0=> NRF_CLOCK_LF_SRC_RC
    // <1=> NRF_CLOCK_LF_SRC_XTAL
    // <2=> NRF_CLOCK_LF_SRC_SYNTH
    
    #ifndef NRF_SDH_CLOCK_LF_SRC
    #define NRF_SDH_CLOCK_LF_SRC 1
    #endif



  • Hi,

    John12 said:
    how and when I should enable DC/DC converter ? Any blog post ?

    If you're using the Softdevice then you can use the SD API by calling sd_power_dcdc_mode_set() in the beginning of main(). 

    John12 said:
    . what is the advantage when I make app_timer use external external crystal ? how can use external crystal? I attached my sdk_config.h please check for me.
    May It here ? What is RC, XTAL, SYNTH ?

    The external low frequency crystal has a lower run current then the RC oscillator. Thus it will consume less current. See the clock section in the product specification for a description of the different LFCLK sources. 

    regards

    Jared

  • Hi Jared,
    About regulator I have some confusions about this topic
    I follow this thread but It hard to understand 

    1. What is the difference between external DC/DC converter and internal DC/DC converter ?
    2. May I supply 1.8v voltage for my nRF saving energy working?
    3. My custom board don't have LC so It seems can not enable DC/DC converter ? What is the alternative solutions?
    4. DC/DC is automatically enabled when voltage goes below 2.1V => LDO is disabled and vice versa when voltage goes up?

  • Hi,

    That thread is a bit outdated, I would rather that you go through the product specification which explains it in detail.

    1. The nRF52833 has two regulator stages. The first one REG0 is only used in High Voltage mode. Each stage has a dedicated LDO and DC/DC regulator. The DC/DC regulator requires external components but is more power efficient than the LDO. 
    2. Yes
    3. See my answer to option 1.
    4. When DC/DC is enabled the CPU will automatically switch between the LDO and DC/DC depending on the power requirement.

    regards

    Jared 

  • hi Jared,
    1. Like previous your reply. You confirm that I can supply 1.8v for nRF52833 to work saver energy than 3.3V.
    Does it affects performance or any other exception like peripheral, BLE strength, libuartes speed, other handler...?
    Or it is similar 3.3v but saver than ? I mean I only supply from external source for nRF 1.8v for all process.
    In my module it doesn't have conductor connect with DCC so I think I can't use DC/DC converter. 

    2. I followed this thread to disable logging => I only  set NRF_LOG_DEFAULT_LEVEL 0 for disable logging ? May I miss some configs to disable logging? I'm just using NRF_LOG_INFO to debug, may it is simillar RTT  backend log ?

Related