电子说
对于一些电池供电的应用,很多都需要用低功耗的单片机。随着国外单片机缺货,也越来越多的工程师选择国产华大低功耗系列的单片机,接下来就讲一下华大低功耗系列的单片机怎么处理低功耗。
1、关闭外设时钟
2、配置IO电平(重要)
3、内核进入睡眠
很多客户说我执行Lpm_GotoDeepSleep()进入睡眠之后,怎么电流还那么大呢?一问调用睡眠函数之前啥都没做,其实这是一个误区,调用这个函数相当于执行了__WFI(),这个只是让内核进入睡眠而已,前面的两步还没做。
根据手册的说法,部分外设在进入睡眠后会自动关闭(见下图),但还是建议进入睡眠前把不需要的外设时钟手动关掉,唤醒之后再手动打开。以HC32L136为例,执行Sysctrl_SetPeripheralGate();可以打开关闭外设时钟。
注意:ADC的关闭步骤,有一个BGR要关闭,调用Bgr_BgrDisable();即可关闭。这个是模拟模块的使能寄存器,在使用模拟外设的时候会打开,像初始化ADC、VC比较器和LVD需要打开,但睡眠的时候打开会增加30~80uA的电流。
注意:看门狗WDT开了就关不了,睡眠下也是开着,无法喂狗会导致复位。睡眠使用看门狗建议用PCA模块4的模拟看门狗,睡眠下可以关闭
这点是很多工程师都会忽略的,以为把所有东西的时钟关了,就是最低功耗。但其实外围电路还是会耗电,比如IO外面接的是上拉电阻,IO输出低的话,有电流流过,就带来了功耗的升高。
还有一点最让工程师忽略的,就是IO口悬空,认为我IO啥都没接,怎么可能耗电呢。接下来我们来看一下。
首先,IO有接外围电路的,睡眠之前根据外围电路接法决定怎么设置IO电平,原则就是电平平衡,比如有上拉,那可以用输入上拉、有LED就关闭LED、有下拉就输入下拉或输出低都可以,这部分也可以请硬件工程师帮忙分析。
注意:IO悬空的情况,包括有些型号的晶圆是比较多管脚的,但是某个型号没有把管脚都封出来,没有封出来的管脚也要当悬空处理。悬空的管脚建议设为输入下拉。
举个例子:曾经有个客户悬空的管脚没有配置,做几十个样品的时候睡眠电流都是正常的,只有5uA,量产的时候电流就60uA了,我过去一看就是把悬空的管脚配置成输入下拉就都是5uA了。
接下来我们看下为什么悬空的管脚会导致电流不稳定的原因:
如下图,IO口结构一般可以简化为如下的图,当以推荐的高电平或低电平驱动时,只有上管或下管导通,绝不会两个同时导通。但是CMOS器件的驱动电压中间都有一个不确定的电压区间,但驱动电压处在这个区间,则可能两个管子都导通,从而VDD直接到地,造成大的电流损耗。当管脚悬空时,遇到杂散噪声就可能出现这种情况,所以前面提到的客户案例就会有时会电平偏大,而有时不会。
处理完前面的东西后,最后一步就是执行Lpm_GotoDeepSleep()进入睡眠。
注意: 华大有些低功耗系列产品是有PLL倍频器的,进睡眠前需要把PLL关掉,不然功耗也会偏高
华大的低功耗系列单片机的调试步骤就这么多,其实其他品牌的单片机调低功耗方法也差不多。
审核编辑:符乾江
全部0条评论
快来发表一下你的评论吧 !