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.

2541 UART with Power Savings Mode

Hello. After researching this forum, I have concluded that there is no resolution for utilizing the UART interface on the 2541while in power savings mode. It appears that the only way to make the UART work via IRQ is to have a while(1) loop for idle. Even the current example UART project does this and does not utilize any halt or sleep modes.

If UART can work in power savings mode, please provide example project. It would be preferred to not use a PIO line to 'wake up' the core to process UART data as this will defeat the purpose of having UART. If that were the case, than why not utilize SPI since it requires a clock on demand handling. But then again, per BLE Stack 1.3.1 release notes, it indicates known issue with SPI.

Any example projects out there to show power savings utilization while UART Rx/Tx is active?

Best Regards.

  • UART is inactive under power saving mode of CC254x. The alternative is that you must have an extra pin to wake up CC254x first and you can use UART after that.

  • If you have the flow controlling,you can sleep it.

  • Thank you for your responses. My apologies, there seems to be another thread of the same question via my multiple listings. Please refer to the reply -> http://e2e.ti.com/support/low_power_rf/f/538/p/271586/950006.aspx#950006 (but do not respond to that thread). Instead repond to this current thread for future readers.

    For easier integration with BLE Stack and the overall pre-exisiting kernel's power savings handling, I think TI needs to add in the following new #defines and behaviors

    Current Defines in BLE Stack 1.3.1:

    #define PWRMGR_ALWAYS_ON  0
    #define PWRMGR_BATTERY    1

    Suggested new defines and behaviors

    #define PWRMGR_ALWAYS_ON  0
    #define PWRMGR_BATTERY_UART_ENABLED    1
    #define PWRMGR_BATTERY_FOO_ENABLED    2...and so on

    That way, it's not an ALL or NOTHING behavior.  We can start having different levels of power savings for each respective configuration - this is needed for different user needs. Or the kernel idle task can be configured with proper pre-processor instead of just "POWER_SAVING" where the main.c startup only does the following.

      #if defined ( POWER_SAVING )
        osal_pwrmgr_device( PWRMGR_BATTERY );
      #endif

    So far from all the UART usage related threads, it's been suggested to remove the pre-processor "POWER_SAVING". This is really not a full power savings solution IMHO. The power saving handling needs to start from the core kernel support, not work arounds here and there.

  • Did you ever find a resolution to this problem? I found that in stack 1.2.1 I could enable POWER_SAVING and still use the UART. Simply switching power modes using osal_pwrmgr_device( powerMode ); before opening the UART worked.

    In stack 1.3.2, this doesn't work at all with POWER_SAVING enabled.