TI中文支持网
TI专业的中文技术问题搜集分享网站

关于cc2540 低功耗 与 串口的 问题

如题,使用cc2540,再宏里面开了POWER_SAVING 这个宏后, 串口一直打印不出来,串口使用了DMA模式,无流控, NPI的api ! 去掉POWER_SAVING 后能够正常打印信息!这里我大体知道是开启POWER_SAVING后进入了休眠模式PM2 导致 串口的晶振 关闭了!!

我尝试使用了osal_start_timerEx( MyAPP_TaskID, SBP_MyAPP_EVT, 2000 );定时器来唤醒串口,定时启动打印信息,无效!

网上查询可以使用osal_pwrmgr_device(PWRMGR_ALWAYS_ON); 来唤醒,同样没有打印输出!

相关代码如下:

MyApp_processEvent()

{

  …..

     if ( events & SBP_MyAPP_EVT)

     {

          osal_pwrmgr_device(PWRMGR_ALWAYS_ON);

         ……………

         NPI_WriteTransport(Msg,strlen(Msg));

        ……………..

        osal_pwrmgr_device(PWRMGR_BATTERY);

     }

}

由于这边没有外部中断 ,也使用不了流控来唤醒, 能不能通过其他代码的中断或者其他来唤醒串口打印信息???

TI的大神,帮忙看看, 万分感谢

Viki Shi:

请参考http://processors.wiki.ti.com/index.php/SerialBLEbridge_V_1.4.1中    UART (with power management)  这部分

MYC huang:

回复 Viki Shi:

不行的,http://processors.wiki.ti.com/index.php/SerialBLEbridge_V_1.4.1这里提供了三个方法,一个是SPI,一个是不适用电源管理的UART,一个是使用电源管理的流控串口,

SPI (with or without power management): using MRDY/SRDY handshaking. The handshaking will be the same regardless of whether or not power management is enabled.
UART (without power management): there is no handshaking needed as the device is not going to sleep. Therefore, only the Tx and Rx lines are needed.
UART (with power management): using CTS/RTS handshaking to control sleep.

这里我需要使用power management,所以只有第三种,  我考虑是串口发送,不需要接受,同样也就是我这边的CTS管脚是接受不到信息的,也就是唤醒不了sleep,,

有没有其他方法,比如内部发指令来等同于CTS接受到低电平, 来唤醒串口????

我能够控制到串口睡眠就睡眠???

yongguang liu:

回复 MYC huang:

楼主好,我也遇到了同样的问题,开启POWER_SAVING后串口无输出,数据仍然在DMA缓冲txBuf中,这个问题您是怎么解决的?

赞(0)
未经允许不得转载:TI中文支持网 » 关于cc2540 低功耗 与 串口的 问题
分享到: 更多 (0)