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

power consumption problem

Hi,

I'm using nrf51822 / sd130 / sdk 12.1. I am doing minimizing current consumption. My main function is like below. I checked no wakeup in sleep mode. But, current consumption changes variously. It is wide from ~30uA to 1.5mA. What should I do additionally? I'm trying various condition.

thanks.


while (1)
{
        // fucntion execute


	NRF_CLOCK->TASKS_HFCLKSTART = 0;       // for test
	NRF_CLOCK->TASKS_HFCLKSTOP = 1;        // for test

	NRF_POWER->TASKS_LOWPWR = 1;           // for test
//	NRF_POWER->SYSTEMOFF = 1;              // for test

	// Make sure any pending events are cleared
	__SEV();
	__WFE();
	// Enter System ON sleep mode
	__WFE();

         // watchdog
	nrf_drv_wdt_channel_feed(m_channel_id);	// wdt feed

	NRF_CLOCK->TASKS_HFCLKSTOP = 0;        // for test
	NRF_CLOCK->TASKS_HFCLKSTART = 1;       // for test
   }

watchdog setting

// <1=> Run in SLEEP, Pause in HALT 
// <8=> Pause in SLEEP, Run in HALT 
// <9=> Run in SLEEP and HALT 
// <0=> Pause in SLEEP and HALT 

    #ifndef WDT_CONFIG_BEHAVIOUR
    #define WDT_CONFIG_BEHAVIOUR 8					// 8, mtkim modified, 1 : original
    #endif
Parents
  • I added below code right before sleep. I saw lower current consumption than before. Is below code necessary? I'll read more document you mentioned.

    Thanks.

    		NRF_TWI0->ENABLE = 0;
    		NRF_TWI0->POWER = 0;
    

    // NRF_RADIO->ENABLE = 0; /*!< Peripheral power control. / NRF_RADIO->POWER = 0; /!< Peripheral power control. / NRF_UART0->ENABLE = 0; /!< Peripheral power control. / NRF_UART0->POWER = 0; /!< Peripheral power control. / NRF_SPI0->ENABLE = 0; /!< Peripheral power control. / NRF_SPI0->POWER = 0; /!< Peripheral power control. / NRF_SPIS1->ENABLE = 0; /!< Peripheral power control. / NRF_SPIS1->POWER = 0; /!< Peripheral power control. / // NRF_GPIOTE->ENABLE = 0; /!< Peripheral power control. / NRF_GPIOTE->POWER = 0; /!< Peripheral power control. / NRF_ADC->ENABLE = 0; /!< Peripheral power control. / NRF_ADC->POWER = 0; /!< Peripheral power control. / // NRF_TIMER0->ENABLE = 0; /!< Peripheral power control. / NRF_TIMER0->POWER = 0; /!< Peripheral power control. / // NRF_TIMER1->ENABLE = 0; /!< Peripheral power control. / NRF_TIMER1->POWER = 0; /!< Peripheral power control. / // NRF_TIMER2->ENABLE = 0; /!< Peripheral power control. / NRF_TIMER2->POWER = 0; /!< Peripheral power control. / // NRF_RTC0->ENABLE = 0; /!< Peripheral power control. / NRF_RTC0->POWER = 0; /!< Peripheral power control. / // NRF_RTC1->ENABLE = 0; /!< Peripheral power control. / NRF_RTC1->POWER = 0; /!< Peripheral power control. / // NRF_TEMP->ENABLE = 0; /!< Peripheral power control. / NRF_TEMP->POWER = 0; /!< Peripheral power control. / // NRF_RNG->ENABLE = 0; /!< Peripheral power control. / NRF_RNG->POWER = 0; /!< Peripheral power control. / // NRF_ECB->ENABLE = 0; /!< Peripheral power control. / NRF_ECB->POWER = 0; /!< Peripheral power control. / NRF_AAR->ENABLE = 0; /!< Peripheral power control. / NRF_AAR->POWER = 0; /!< Peripheral power control. / NRF_CCM->ENABLE = 0; /!< Peripheral power control. / NRF_CCM->POWER = 0; /!< Peripheral power control. / NRF_QDEC->ENABLE = 0; /!< Peripheral power control. / NRF_QDEC->POWER = 0; /!< Peripheral power control. / NRF_LPCOMP->ENABLE = 0; /!< Peripheral power control. / NRF_LPCOMP->POWER = 0; /!< Peripheral power control. */

Reply
  • I added below code right before sleep. I saw lower current consumption than before. Is below code necessary? I'll read more document you mentioned.

    Thanks.

    		NRF_TWI0->ENABLE = 0;
    		NRF_TWI0->POWER = 0;
    

    // NRF_RADIO->ENABLE = 0; /*!< Peripheral power control. / NRF_RADIO->POWER = 0; /!< Peripheral power control. / NRF_UART0->ENABLE = 0; /!< Peripheral power control. / NRF_UART0->POWER = 0; /!< Peripheral power control. / NRF_SPI0->ENABLE = 0; /!< Peripheral power control. / NRF_SPI0->POWER = 0; /!< Peripheral power control. / NRF_SPIS1->ENABLE = 0; /!< Peripheral power control. / NRF_SPIS1->POWER = 0; /!< Peripheral power control. / // NRF_GPIOTE->ENABLE = 0; /!< Peripheral power control. / NRF_GPIOTE->POWER = 0; /!< Peripheral power control. / NRF_ADC->ENABLE = 0; /!< Peripheral power control. / NRF_ADC->POWER = 0; /!< Peripheral power control. / // NRF_TIMER0->ENABLE = 0; /!< Peripheral power control. / NRF_TIMER0->POWER = 0; /!< Peripheral power control. / // NRF_TIMER1->ENABLE = 0; /!< Peripheral power control. / NRF_TIMER1->POWER = 0; /!< Peripheral power control. / // NRF_TIMER2->ENABLE = 0; /!< Peripheral power control. / NRF_TIMER2->POWER = 0; /!< Peripheral power control. / // NRF_RTC0->ENABLE = 0; /!< Peripheral power control. / NRF_RTC0->POWER = 0; /!< Peripheral power control. / // NRF_RTC1->ENABLE = 0; /!< Peripheral power control. / NRF_RTC1->POWER = 0; /!< Peripheral power control. / // NRF_TEMP->ENABLE = 0; /!< Peripheral power control. / NRF_TEMP->POWER = 0; /!< Peripheral power control. / // NRF_RNG->ENABLE = 0; /!< Peripheral power control. / NRF_RNG->POWER = 0; /!< Peripheral power control. / // NRF_ECB->ENABLE = 0; /!< Peripheral power control. / NRF_ECB->POWER = 0; /!< Peripheral power control. / NRF_AAR->ENABLE = 0; /!< Peripheral power control. / NRF_AAR->POWER = 0; /!< Peripheral power control. / NRF_CCM->ENABLE = 0; /!< Peripheral power control. / NRF_CCM->POWER = 0; /!< Peripheral power control. / NRF_QDEC->ENABLE = 0; /!< Peripheral power control. / NRF_QDEC->POWER = 0; /!< Peripheral power control. / NRF_LPCOMP->ENABLE = 0; /!< Peripheral power control. / NRF_LPCOMP->POWER = 0; /!< Peripheral power control. */

Children
No Data
Related