目前我手头上的一个项目,使用CC2640F128RHB(5×5),功耗严重偏大,不知道怎么搞。
目前关闭蓝牙广播并使用Power_sleep函数休眠后,单片机耗电电流依然高达2.8mA,仅仅是单片机输入电流就有2.8mA。
已经排除IO漏电的可能。
由于需要使用UART,使用NPI的UART不能开启POWER_SAVING。SCS串口调试了一周都调不通(收发都不通,然而公司另一个项目组的SCS却调通了,同样的芯片同样的SCS代码……搞不懂),并且听说还有固定为2个停止位,所以暂时不考虑SCS的串口。
现在使用的是Power_sleep(Power_STANDBY,NULL,NULL);函数休眠,电流很大,搞了很久,现在已经快疯了……
现在需要在大多数时间休眠,并且电流绝对不能这么大,RTC不能停止,IO可唤醒单片机,休眠时UART不工作(也不要求UART唤醒单片机),请问到底应该如何实现?或者我开启POWER_SAVING宏,怎么才能让串口不受影响?
Viki Shi:
RTC不能停止,IO可唤醒单片机,休眠时UART不工作
以上是你的要求,我觉得完全可以使用自带的standby功能,至于串口,反正休眠时不用,要用时再唤醒就行了。这样直接套用sdk里的例程做起来方便
user1980778:
回复 Viki Shi:
这个程序是按照simpleBLEPeripheral例程开发的
Viki Shi:
回复 user1980778:
simpleBLEPeripheral可以通过TI RTOS调配,自动进入低功耗,开启POWER_SAVING即可
user1980778:
回复 Viki Shi:
可是开启POWER_SAVING之后,串口怎么用呢?貌似我打开后收发都没法进行了
Viki Shi:
回复 user1980778:
参考这边例程:processors.wiki.ti.com/…/Cc2640_Adding_a_UART_or_SPI_driver_to_a_Sample_Project
user1980778:
回复 Viki Shi:
您好,今天我试了一下这个TL.c的东西,开启POWER_SAVING后还是需要四线制串口啊(有相关定义),目前正在研究如何绕过这个机制,因为串口另一边的设备硬件不支持那两个信号
user1980778:
回复 Viki Shi:
按照这个例程试了一遍,还有很多问题:
1.例程提到了新增3个事件MRDY_EVENT、TRANSPORT_RX_EVENT、TRANSPORT_TX_DONE_EVENT,但没有说明这个事件发生时应该调用什么。
2.该例程也是4线串口(带有RTS和CTS信号),我通过底层强制对这些信号的判断部分赋值,仍无法使串口在启用POWER_SAVING情况下发送数据(无POWER_SAVING时发送正常)。
3.迫于无奈,最终通过在npi_tl_uart.c中添加UART_write()函数,终于可以发送数据,但单片机耗流增大到了6mA左右,且无法接收数据。