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.

CC2651R3SIPA: GPIO Wakeup Behavior in Shutdown Mode on CC2651R3SIPA

Part Number: CC2651R3SIPA

Tool/software:

Dear TI Support,

I am using the CC2651R3SIPA and have a question regarding GPIO-based wakeup from shutdown mode.

We have configured two GPIO pins as wakeup sources:

  • CHARGE: Active high

  • FUNC: Active low

When testing each wakeup source individually, the system wakes up from shutdown correctly. However, we are observing the following unexpected behavior:

  1. If the device enters shutdown while FUNC is held low (active), and this state is maintained, toggling CHARGE from low to high does not trigger a wakeup.

  2. Similarly, if the device enters shutdown while CHARGE is held high (active), and this state is maintained, toggling FUNC from high to low does not trigger a wakeup.

  3. If we first return the already-active pin (FUNC or CHARGE) to its inactive state, and then toggle the other pin to generate a wakeup edge, the system wakes up correctly.

From this behavior, it appears that if one GPIO pin is already in its active state when entering shutdown—and remains active—then the wakeup edge from the other pin is ignored.

Is this behavior expected as per the device specification?
If so, could you provide guidance or best practices for using multiple GPIOs as wakeup sources from shutdown?

~my code~

GPIO_setConfig(CONFIG_GPIO_FUNC_L, GPIO_CFG_IN_PU |GPIO_CFG_SHUTDOWN_WAKE_LOW);
GPIO_setConfig(CONFIG_GPIO_CHST_L, GPIO_CFG_IN_PD |GPIO_CFG_SHUTDOWN_WAKE_HIGH);

~register value~
   FUNCpin register

   CHARGEpin register

I am attaching my implementation and register screenshots for reference.

Best regards,
Hiroki Saitoh

  • Hi Hiroki,

    I have replicated the behavior you've reported and the device specification is vague where it pertains to active wakeup pins while entering shutdown.  I recommend that you evaluate the pin state before entering shutdown to determine whether it is valid for both pins, and consider inversing the wake level for the active pin or wait until both pins are inactive before finalizing shutdown.

    Regards,
    Ryan

  • Dear Ryan,

    Thank you for your confirmation.

    Just to confirm my understanding:
    You mentioned that the behavior when entering shutdown while a wakeup pin is already active is not clearly defined in the specification.

    As a result, there is no specific or recommended workaround, and this is not considered a bug in our implementation.
    Instead, it is up to the developer to implement a strategy that fits their use case—such as checking the pin states before shutdown or altering the wake condition logic.

    Is my understanding correct?

    Best regards,
    Hiroki Saitoh

  • The Power TI Driver uses Power_shutdown which eventually calls SysCtrlShutdownWithAbort that does have a shutdown abort condition based on active wakeup pins, however this has pre-condition requirements which are likely not adhered to by the application.  Thus this further goes to show you are correct in that developers should implement an application strategy to handle active wakeup pin before shutdown conditions.

    Regards,
    Ryan

  • Dear Ryan,

    Thank you for the helpful information.
    I have reviewed the documentation link you shared regarding SysCtrlShutdownWithAbort(). According to the description, it states that before calling this function, the application must configure the IO with both IOCIOShutdownSet() and IOCIOIntSet(), and also enable the peripheral power domain using PRCMPowerDomainOn() and PRCMPeripheralRunEnable().

    I have followed these instructions and implemented the setup accordingly, but unfortunately, the behavior did not change.

    I have a few questions to confirm my understanding:

    1. Does the wakeup sequence from shutdown start based on a change in some register value where the wakeup event is latched?
      If so, could you please let me know which register holds this wakeup event and triggers the shutdown wakeup sequence?

    2. I believe the wakeup mechanism from standby is different from that of shutdown.
      Could you please explain or provide the detailed wakeup sequence from shutdown mode?
      If it is described in any documentation or reference materials, I would appreciate it if you could share the links.

    Thank you very much for your support.
    Hiroki Saitoh

  • I should have specified that at most the additional code would have allowed the API to reject the shutdown request, not change the shutdown behavior.

    I recommend that you review Section 7.6.4 Standby Mode and 7.6.5 Shutdown Mode or the TRM and the Power_sleep and Power_shutdown API sources from <sdk_directory>\source\ti\drivers\power\PowerCC26X2.c to address your questions.

    Regards,
    Ryan

  • Dear Ryan,
    Thank you very much.

    In your previous response, you mentioned that the shutdown behavior when a wakeup pin is already active is somewhat ambiguous.
    To clarify, I would like to confirm the following:

    If the device enters shutdown mode while one of the configured wakeup pins is already in an active state, and then another wakeup pin is activated, the device does not wake up from shutdown.
    Is it correct to understand that this is the intended behavior according to the device specification?

    Regards,
    Hiroki Saitoh

  • Hi Hiroki,

    I am syncing with other stakeholders internally before I confirm the expected device behavior during this condition.

    Regards,
    Ryan

  • Hi Ryan,
    I hope you're doing well.

    Just wanted to kindly follow up on the expected device behavior during the condition we discussed earlier.
    Have there been any updates from your internal discussions?

    Thank you in advance for your support.

    Best regards,
    Hiroki

  • Thank you for your patience.  I am continuing to await a confirmation internally, but as far as my debugging has gone I can only assume that shutdown will not commence until “all conditions are met” which I gather includes the shutdown wakeup pins not being actively set.  I’m still seeking confirmation internally before stating this officially.

    Regards,
    Ryan

  • Hi Hiroki,

    From the CC2652R1 TRM, Section 7.6.5 Shutdown States:

    The IO pads are level sensitive when configured for wake up from shutdown (IOC:IOFGxx.WU_CFG). An internal signal is generated from the pad when the input level matches the set level (WU_CFG - 10: LOW, - 11: HIGH). If several pins are configured for wake up from shutdown, careful consideration must be taken to allow proper triggering of the wake up event. Since signals from the IO pads are internally OR'ed together to form a single signal routed to an internal edge trigger block, when one of the input signals remains active there will be no edge signal on the internal edge detect block until the active input is released. In other words, if a pin is held active (HIGH or LOW, depending on configuration), the other pins will not generate a wake up event until the first pin is released or made inactive.

    This should be applied across all CC26XX TRMs, including the CC2651R3SIPA, and the relevant teams have now been made aware of this oversight in the documentation.

    Regards,
    Ryan

  • Thank you very much.
    The TRM excerpt you shared regarding the CC2652R1 seems to closely match the behavior I am experiencing in my current setup.

    Also, in your response, you mentioned that “shutdown will not commence until all conditions are met.”
    Does this mean that the device will not enter shutdown mode unless all configured wakeup sources are in an inactive state?

    In my implementation, I have set it up so that a long press of a switch triggers the MCU to shut down.
    Given this setup, is it the expected behavior that the shutdown will not occur while the switch is still being held down?

    Best regards,
    Hiroki

  • Sorry for the confusion, and thank you for your support.
    I had been using an LED to determine whether the system was entering shutdown.
    However, I recently realized that the LED is turned off before calling Power_shutdown(),
    so it doesn't accurately indicate whether the device actually shut down.

    Is there a simple way to confirm if Power_shutdown() really puts the device into shutdown?

  • Also, in your response, you mentioned that “shutdown will not commence until all conditions are met.”
    Does this mean that the device will not enter shutdown mode unless all configured wakeup sources are in an inactive state?

    That is correct.

    Does this mean that the device will not enter shutdown mode unless all configured wakeup sources are in an inactive state?

    I debugged a project while holding down a shutdown wakeup pin and found it had stalled in the SysCtrlShutdown while loop.  So the device isn’t in shutdown during this state, it’s actively waiting on the active shutdown wakeup pin.

    Is there a simple way to confirm if Power_shutdown() really puts the device into shutdown?

    You can debug the project as I demonstrated, use a Power Analyzer tool to measure power consumption, or interact with non-shutdown wakeup GPIOs to determine whether they are active (ex. a button doesn't perform an action any longer or a heartbeat LED stops toggling periodically).

    Regards,
    Ryan

  • Dear Ryan,

    Regarding the specification that "shutdown will not commence until all conditions are met," I performed some measurements on my device to verify the behavior.

    I tested power consumption in both standby and shutdown modes while the wakeup pin (FUNC), configured as active low with internal pull-up, was in both active and inactive states:

    • Standby mode (wakeup pin active): 253 μA

    • Standby mode (wakeup pin inactive): 65 μA

    • Shutdown mode (wakeup pin active): 150 μA

    • Shutdown mode (wakeup pin inactive): 63 μA

    Based on these results, even when the wakeup pin is active, the current consumption significantly drops in shutdown mode compared to standby mode. Therefore, it seems that the device might still be entering shutdown mode even if the wakeup source is active.

    According to the specification, I would expect the device not to enter shutdown if any wakeup source is active.
    Does this mean my device is not actually in shutdown mode in the case where the wakeup pin is active? Or is it possible that the shutdown mode begins regardless of the wakeup pin state?

    I would appreciate your clarification on this point.

    Best regards,
    Hiroki Saito

  • These measurements are rather high regardless of wakeup pin activity, as shutdown mode is expected to be <1 μA power consumption on the device.  This could be due to the measurement method/tool or other active components on the test board.

    I believe the shutdown mode with wakeup pin active is lower power consumption than its standby counterpart since all other differential peripherals have been turned off during the shutdown sequence, however shutdown mode does not truly begin until all conditions are met.

    Regards,
    Ryan

  • Thank you for your response. I believe the higher current consumption is due to the fact that I am using a custom evaluation board for the measurements.
    I will try measuring the current specifically consumed by the MCU to isolate its contribution.

    Also, I believe I now have a better understanding of the specification:

    1. The device does not enter shutdown mode unless all wakeup sources are inactive.

    2. If a wakeup source is active during shutdown, the device will not wake up even if other wakeup sources become active.

    This is how I currently understand the behavior.
    However, it seems there is a contradiction between point ① and ②.

    If the device cannot enter shutdown mode unless all wakeup sources are inactive, then case ②—where a wakeup source is active during shutdown—should not be possible.
    Is my understanding correct?

    Best regards,
    Hiroki Saito

  • The device does not truly enter shutdown until all wakeup sources are inactive, after which any activation of a wakeup source during the existing shutdown mode will wake the device.  Thus there is no contradiction.

    Regards,
    Ryan

  • Thank you very much.
    Based on the behavior you explained—that the device does not enter shutdown unless all wakeup sources are inactive—I would like to confirm one point:

    According to the TRM, it states:

    "When one of the input signals remains active there will be no edge signal on the internal edge detect block until the active input is released."

    However, if shutdown cannot start until all wakeup sources are inactive, then there should never be a case where a shutdown is in progress while any wakeup source is active.

    In that sense, does this TRM description refer to a theoretical edge case, or is there an actual situation where a wakeup source can be active during shutdown?

    regards,
    Hiroki Saito

  • I believe semantics are being argued, when ultimately what has been observed is that shutdown mode will not perform (i.e. power consumption) or operate (i.e. wakeup) correctly until all wakeup pins are inactive.

    Regards,
    Ryan

  • Thank you for the clarification.
    I understand that, both from a specification and behavioral standpoint, shutdown mode will not function correctly until all wakeup pins are inactive.

    I appreciate your support and confirmation on this matter.
    Best regards,
    Hiroki Saito

  • Sorry, I'd like to confirm one last thing.

    What I want to implement is shutting down the MCU when the user long-presses a switch.
    Since the long press is a user operation, I expect the switch will be released shortly after calling Power_shutdown().

    This switch is also configured as a wakeup source. Therefore, after shutdown, pressing the same switch again will wake up the MCU.

    Given that, when I call Power_shutdown(), the wakeup source (the switch) is still in the active state.

    So my understanding is that the MCU will enter the actual shutdown state only after the switch is released (i.e., the wakeup source becomes inactive).

    Is this understanding correct?


    Best regards,
    Hiroki Saito

  • That seems to be a correct statement given our previous assessment.

    Regards,
    Ryan

  • Thank you again for your support.

    I now understand that, according to the device behavior, the MCU will not actually enter shutdown mode until all configured wakeup sources become inactive.

    In our system, the application layer calls Power_shutdown() to initiate shutdown. However, due to user behavior, there is a possibility that Power_shutdown() is called while one or more wakeup sources are still in the active state.

    My question is:

    From the TI device specification perspective, is it guaranteed that calling Power_shutdown() while wakeup sources are active is safe and supported?

    In other words, is this scenario officially covered by the specification, and can we rely on the system to internally wait until wakeup sources become inactive before completing the transition to shutdown mode?

    I would like to confirm whether this is a valid and supported use case, or whether we must always ensure all wakeup sources are inactive before calling Power_shutdown() at the application level.

  • There is not currently a concern with invoking Power_shutdown while not all shutdown conditions have been met, as such a condition is handled within the Power TI Driver and device hardware, so long as the end user understands that shutdown mode and its low power benefits will not be fully utilized until all conditions are fulfilled.

    Regards,
    Ryan