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.

CC2640R2L: Standby Current

Part Number: CC2640R2L

We have a pretty basic custom board with a CC2640R2LRGZR, some buttons, and some switches. We aren't using any of the BLE or wireless features. We just want to use the standby mode and wake up when one of the buttons/switches changes state.


As a test, we tried using the pinStandby example project - the only things we changed were the BoardGpioInitTable to set all the pins (IOID_0 to IOID_30) as low outputs (PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL) and modified the mainThread to the following since we don't have any LEDs:

void *mainThread(void *arg0)
{
    while(1) {
        /* Sleep, to let the power policy transition the device to standby */
        sleep(standbyDuration);
    }
}

When we measure the current draw of this it's around 850uA. Looking at the datasheet it should be around 1uA!


To see if there is something else that is causing the higher current we decided to try putting the device into shutdown mode. We changed the mainThread to the following:

void *mainThread(void *arg0)
{
    Power_shutdown(0, 0);
}

When we measured the current draw of this it's around 145nA, which matches the datasheet expected value.

It seems like the device isn't really going into standby mode or something. What could cause this?

For reference, we are using a JLink to program the board then disconnecting the JLink, resetting the board, and then measuring the current.

Thanks,
David

  • Hello David,

    How are you? From what you describe it seems like the program is not going into standby mode, and rather is stuck in idle mode. Are you using any peripherals (like uart), if so try to disable uart and see if that changes the power you are seeing (which could confirm if its stuck in idle, not standby). Did you debug and see that the device reaches sleep correctly? Its good to see that shutdown does work correctly. 

    Also there is a similar thread here about entering standby mode.

    Thanks,
    Alex 

  • Hey Alex,

    Thanks for the reply! I think you're right that it's stuck in idle mode. I must be missing something that's keeping it out of standby. As far as I can tell there aren't any peripherals getting used - plus with it being the example project to use standby mode I would be a little surprised if they had enabled peripherals that would prevent it from entering standby mode. I did debug with a breakpoint at the sleep function and it reached it correctly.

    I tried looking through the other threads about standby mode, but none of them seemed to help

    Thanks,

    David

  • Hello David,

    Included are some of my findings, we used two boards the CC2640R2 board with pinstandby example (zipped below) and a CC2651RSIPA with energy trace (and all removable jumper removed between both boards to minimize current) we got ~1.9 micro-amps. Provided is the zipped file in which CC2640R2_LAUNCHXL.c we commented out line 766-775, the BoardGpioInitTable (just the gpio configs). You can also try to comment out CC2640R2_LAUNCHXL_shutDownExtFlash for your custom board. While 1.9 micro-amps is higher than the datasheet we believe that it might be due to some interference, age, or pin leakage. Can you try to run the example project and confirm the results? Also there may be a problem in the line "(PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL)" you listed, can you set them as no config, as setting them as out low could cause an increase in the current consumption of the device. 

    Thanks,
    Alex F

    pinStandby_CC2640R2_LAUNCHXL_tirtos_ccs.zip