This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

RTOS/CC2640R2F: Shutdown is not complete, still 20~uA current instead of 0.15uA

Part Number: CC2640R2F
Other Parts Discussed in Thread: CC2640, LAUNCHXL-CC2640R2

Tool/software: TI-RTOS

My project is based on SimpleBLEPeripheral, and both pwm / uart are used. The bluetooth is for transferring small amount data between cc2640 and smartphone, now works fine. I wrote a function to shutdown the power:

void PowerOff()
{
Uart_Close();
Power_releaseDependency(PERIPH_UART0);
Power_releaseDependency(PERIPH_GPIO);
Power_setConstraint(Power_TOTAL);//Power_SB_DISALLOW); //(Power_SHUTDOWN);//Power_SleepState);// (Power_STANDBY);
Power_shutdown(NULL);
}

This function could only shutdown the current from 2.5mA to 20uA, but not further to the level 0.1uA. Step by step, I found that  if PowerOff() is placed anywhere in Simpleperipheral_Init() before initialing GAP and OAD, the current went down to 0.15uA. But not after GAP & OAD initialization code lines. 

My understanding is : for some reason, Power_shutdown(NULL) did not shut off the bluetooth power. What should I do to completely shutdown CC2640 to reach <0.15uA power consumption?

Thanks in advance, Young

  • What's your HW? Is it LAUNCHXL-CC2640R2F?
  • Yes it is. I could shutdown to 0.15uA if it is done before initializing GAP and OAD. And suggestion?

    Best regards, Young
  • The external flash on LAUNCHXL-CC2640R2 would consume 8-10 uA. You can try to desoldering external flash to see if power consumption is lower.
  • Thanks YiKai.

    I could shutdown to 0.15uA if it is done before initializing GAP and OAD, without desoldering any external flash. My guess is that the RF plays a role in consuming the power, and Power_shutdown(NULL) cannot take effect for that.

    I also tried the following line:

    for(i = 0; i < 18; i++) {
      Power_releaseDependency(i); // PERIPH_GPT0, PERIPH_GPT1, PERIPH_GPT2, PERIPH_RFCORE, etc.
    }

    Unfortunately, that didn't work.

    Again, the power cannot be shutdown completely only when GAP and OAD is initialized. Otherwise, it goes down to 0.15uA afer Power_shutdown(NULL).

    Some other guys pointed out that Power_shutdown(NULL, 0) should be used instead of Power_shutdown(NULL). I would like to try that as well. BUT, my compilation env is v2.13 rather than v2.20 and Power_shutdown(NULL, 0) is not supported.

    Maybe Power_disable(DOMAIN_RFCORE) would work, but I couldn't find such a function.

    Best regards, Young

  • I finally solved the puzzle, all by myself. :-)

    Manually turn off every peripheral, like this:

    PIN_close(hPins);
    PIN_close(hPwmPin);
    Uart_Close();
    Power_shutdown(NULL);

    The total current I measured is now down to 0.15uA!
  • Hi young,

    I am having similar issue, see post below. What SDK version are you using? Did you add the PIN_close() code lines to your PowerOff() C Function?

    e2e.ti.com/.../617026

    - kel