CC254x 串口 UART+DMA 低功耗问题

没办法,公司有一批产品已经做好了, 面对协议问题, 总不能把他们都扔了不要了吧。说起来这还是隔壁实验室的历史遗留问题, 这锅还得交给我们实验室背。。。。

TI官网有串口透传的示例, 下下来改就可以了。http://processors.wiki.ti.com/index.php/SerialBLEbridge

遇到了一个问题,就是开启省电模式后, 在第一次启动以后进入低功耗模式,电流2ma, 之后一旦初始化串口,电流变为8ma~10ma, 再次进入低功耗后电流不降下去。

其实说起来TI BLE 还是挺好玩的,除了 emmm, 文档有点少。

网上的UART 都是DEMO的, 第一句话就是,请关闭低功耗…..

我们的应用是, 当有连接时才需要串口,因此这种情况下低功耗还是比较好做的。

① 将 xPOWER_SAVING 前面的x去掉,添加DMA_PM=0 (这个是出问题后发现的)

②在使用前,HOLD 保持PWRMGR状态, 初始化32Mhz 晶振, 初始化串口,代码如下

osal_pwrmgr_task_state(Test_Task_Id, PWRMGR_HOLD);
HAL_BOARD_INIT();
NPI_InitTransport(uart_receive);

③在使用完毕后,  使用如下代码释放PWRMGR状态。
osal_pwrmgr_task_state(Test_Task_Id, PWRMGR_CONSERVE);

 

 

经过实际测试, 开机初始化后, 自动进入PM2状态, 电流为2ma, 当连接以后, 串口初始化, 此时电流10ma左右, 连接断开后, 自动进入省电模式, 电流恢复为2ma

+遇到的问题:

第一次初始化UART以后, 断开连接释放PWRMGR状态,但是电流依然是10ma, 另外未使用NPI_InitTransport 进行初始化的情况下,只要串口有数据过来, 电流马上变为10ma, 经查阅资料发现一个宏, 就是上面提到的宏, DMA_PM=0 ,添加此宏后一切正常。 估计此问题与CC254x的DMA和电源管理有关系, 但是囿于时间关系, 未作深入了解

 

PS: CC254x 系列芯片还是比较省电的

 

发表评论