如何对微控制器进行省电管理

微控制器的使用越来越多,在现实诸多方面均有微控制器的身影。但在实践过程中,暴露出一些微控制器问题,譬如如何对微控制器进行省电管理。如果你对这个微控制器问题存在兴趣,不妨继续往下阅读哦。
一、微控制器省电管理方法
新唐科技的nuc1xx包含nuc101、nuc100、nuc120、nuc130和nuc140,是以arm cortex-m0为核心的32位微控制器(mcu),经由不同时钟的设定,最高可以达到50mhz的运作频率。然而在一般简单控制或系统负载较低时,cpu并不需要执行在最高的运行时钟下即可应付所需要的计算量。这时候,便可以利用系统时钟的控制来降低时钟,以达到省电的目的。
另一种情况是cpu因为等待下一个工作或只需要久久工作一次时,就可以先将cpu进入idle或power down模式,等到一定的时间之后或是有特定的事件发生时,才被唤醒过来进行相关事件的处理。同时,如果系统内没有用到的系统模块,也可以将其关闭以节省不必要的耗电。下面介绍各种不同的省电方法的原理,并提供相关的范例说明。
二、开关系统模块
在新唐科技nuc1xx中,为了省电的需求,当某个系统模块不使用时,可以将其输入时钟关闭,使其进入关闭的模式,依此来达到省电的效果。在nuc1xx中,几乎所有的系统模块都可以各别被关闭,这些模块包括:watch dog timer、rtc、timer0~3、i2c0~1、spi0~3、uart0~2、pwm0~7、can、usb、adc、acmp、ps2、pdma、 flash isp。不过,并非每颗芯片都包含了所有模块功能,例如can模块只在nuc130和nuc140才有此功能,详细说明请参考各芯片的相关文件。
各模块的相关耗电如表1所示。
新唐科技nuc1xx藉由关闭各模块时钟的方式来达到关闭各模块的目的,所以要关闭模块就必须设定相关的时钟控制缓存器。nux1xx提供ahbclk register与apbclk register,来控制上文所列出各模块的开关。
三、系统时钟设定
新唐科技nuc1xx本身的耗电量和它的运行时钟有很大关系。如果运行的时钟高,则耗电高,反之则比较省电,但同时cpu就可能无法负荷大量的运算。因此,如果要同时兼顾大量运算跟省电,就必须能够根据实际上的需求来调整cpu的工作时钟,以求达到最佳的运作效率。
nuc1xx内建了pll,能使用外部12mhz的晶振或是内部22m振荡器产生系统所需的时钟,由pll所产生的时钟再经过适当除频,即可作为cpu的工作频率。另外nuc1xx也提供经由外部32khz的晶振或是内部10khz 振荡器直接供给作为cpu工作频率的方式。因此,nuc1xx对于工作时钟的设定,提供了很大的灵活性。
四、idle省电模式
新唐科技nuc1xx除了可利用设定最适合的工作时钟来达到省电的目的外,如果在系统完全不需要工作时,还可以将cpu及大部分的硬件关闭,以达到最大的省电效果。这种搭配关闭cpu及大部分硬件的模式,我们称之为省电模式,其中包括了idle省电模式及power down省电模式。下面就idle省电模式进行说明。
藉由关闭大部分硬件时钟以达到最大省电效率的模式主要有两种,一种是idle省电模式,另一种是power down省电模式。这两种模式最大的不同点是,当系统进入idle省电模式下时,任何的中断事件都可以重新唤醒cpu,以便让系统可以处理新进的事件。但如果系统处于power down省电模式,就只有少数特定的中断事件能够唤醒系统。
由于所谓的idle模式,实际上就是把cpu的时钟关闭,这样让cpu在没有工作时处在最省电的模式。因为在这个模式下,只是将cpu的时钟关闭,一旦有任何中断事件发生,马上可以打开cpu的时钟来处理相关的事件,所以不会造成处理事件的延迟,同时又可以达到省电效果,是兼顾速度与省电的一种模式。
nuc1xx可以利用arm cortex-m0本身提供的wfi/wfe指令进入idle模式。一旦进入idle模式,cpu将立刻进入sleep模式而停止运作,因此在wfi/wfe指令之后的程序都必须等到cpu被唤醒后才会被执行。此时nuc1xx的耗电量将降到约16ma@3.3v-48mhz。
进入idle省电模式之后,如果要唤醒cpu,回到一般的工作模式,就必须先产生中断信号。该中断信号可以是nuc1xx中的任何模块所产生的中断,也可以通过外部中断的方式来唤醒cpu。需要注意的是,当决定cpu要由某个中断来唤醒时,就必须在进入idle省电模式前,将该中断设定完成,才能使其产生中断事件来唤醒cpu。
五、power down省电模式
power down是新唐科技nuc1xx最省电的一种模式,因为一旦进入power down省电模式,晶振时钟会被关闭,整颗nuc1xx呈现静止的状态,这时的耗电量将减到最小的程度。而在此模式下,也只有少数的特定中断事件能够唤醒nuc1xx,使其恢复工作状态。在power down模式下,nuc1xx提供了gpio、usb、uart、rtc、acmp和can的中断唤醒方式。
要进入power down省电模式,除了必须呼叫wfi/wfe指令外,在调用wfi/wfe指令之前,必须另将pd_wait_cpu和pwr_down_en两个功能依序打开。已确保cpu先进入sleep模式后,系统再进入power down模式,此时nuc1xx是属于最省电的状态,耗电量将降到约15ua。
一旦nuc1xx进入power down省电模式,由于大部分的逻辑电路都进入停止状态,因此要想唤醒cpu,必须经由特殊定义的中断源来唤醒。在idle省电模式下,只要有任何中断即可唤醒cpu不同,不过相同的是,两者都必须要在进入省电模式前,先设定好将来要用来唤醒cpu的模块,这包括其中断或唤醒功能,这些为了唤醒cpu的准备都完成之后,才能进入省电模式,否则就没有任何方式能够再唤醒cpu了。
由于所谓的power down省电模式,实际上是把晶振的时钟关闭,让整个nuc1xx呈现静止的状态。而因为晶振也被关闭了,一旦有唤醒中断事件发生,需要等到晶振稳定下来后,cpu才能继续运作,所以由power down进入一般的工作模式,会需要延迟一点时间来等待,而nuc1xx系列所提供的延迟时间预设为4096个clock cycle。以12mhz来计算,延迟时间为(1/12mhz)*4096=341.12us(图2中的t2),而晶振起振所需时间(图2中的t1)则会随着晶振频率、品牌、pcb 布线等都会造成少许差异。一般而言, 12mhz晶振起振所需时间约1~2ms。实际量测范例数据如图2所示。
本文介绍了新唐科技nuc1xx所提供的各种省电方式,包括了关闭没用到的模块、调整cpu运作的时钟、idle省电模式与power down省电模式。在实际应用时,使用者可以根据自身所需,选择适合的方式,甚至组合不同的省电方法以达到最佳的省电效率。

华为笔记本能升级鸿蒙系统吗
使用可配置的数字IO为您的工业控制器提供优势
微型电机行业新蓝海——无人机
三星Galaxy Note 10.1将于8月16在香港发售
为什么小家电的充电器不能做成通用的
如何对微控制器进行省电管理
山西移动下线8元4G套餐,5G真的要来了吗?
电量传感器灌封工艺及常见问题解决方案
C8051F020触摸屏驱动控制
在非洲卖得最火的国产手机不是华为而是它!原因竟是这个!
OPPO R9拆解,看看这款手机的内部做工如何
下代iPhone将使用OLED显示屏和三摄设计会更轻更薄更便宜吗
锤子坚果Pro最新消息:坚果Pro发布会倒计时,骁龙626+安卓7.1系统
华为5g芯片和高通芯片的区别
采用LM1812的超声波防碰撞电路设计
美国政府考虑把海康威视列入黑名单乃至断供
用DS600构成的温度控制器,DS600 Temperature controller
上海伯东半导体器件检漏
采用24V供电的MCU电源电路及BOM表分析
欧洲航天局希望改进用于卫星风力监测的紫外探测器