CC26xx(CortexM3)的低功耗设计
Posted 苏导
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CC26xx(CortexM3)的低功耗设计相关的知识,希望对你有一定的参考价值。
简述
这里非BLE的低功耗设计,BLE的低功耗需要对协议栈进行了解。这里是针对CC26XX的mcu本身进行开发时,为达到休眠时尽量低的功耗,而进行的一些处理。
GPIO设置
低功耗许多时候是因为GPIO设置不当造成漏电流,而导致系统睡眠时实际的功耗降不到非常低的状态。对于mcu本身而言,mcu进入睡眠状态的话,GPIO是会保留其状态的,外部没有连接设备的GPIO,可以不用设置,使其处于高阻态即可。对于GPIO为输出方式的,在不影响其控制的部分的情况下,将其设置为低电平即可防止漏电流。对于GPIO为输入方式的,比如常见的ADC,可以将ADC功能关闭,切换为GPIO输出低电平来防止漏电流,仅当mcu被唤醒需要使用ADC时才重新初始化来开始使用。
外设驱动
这里以UART为例,其他如SPI, I2C都是类似处理,只要合理的调用TI的Driver中的函数即可。当然在编译时需要使能项目的Power Saving宏。
UART的驱动操作请参考[[CortexM3–CC26XX]UARTs],初始化时,会调用UART_init和UART_open的函数,而一般情况下,会通过调用UART_read来开始串口读取,直到串口超时或者读到数据时会触发callback(可在callback中重新发起UART_read来继续监测后续串口数据)。
低功耗设计时,当进入睡眠状态,UART确认此时不用接收数据(UART_read一直开启的话mcu是无法进入深度睡眠的),使用UART_close关闭UART供电即可。而UART功能关闭后其GPIO也不用刻意再设置为GPIO输出低,在初始化时通过PIN_init(BoardGpioInitTable);即可将UART的GPIO默认设置为输出低电平,这样在调用UART_close后,UART的GPIO会默认恢复开始的GPIO状态,因此也可以有效防止漏电流。
用万用表简单测试功耗
这个转自:https://blog.csdn.net/u012912039/article/details/52450665
以上是关于CC26xx(CortexM3)的低功耗设计的主要内容,如果未能解决你的问题,请参考以下文章