ARM微处理器因其高性能和低功耗的特性,特别适合于便携式系统的应用。而系统级的供电问题对于电源的有效管理也是非常重要的。一方面电源模块应尽可能满足对各模块的不同用电电压问题,另一方面要努力降低嵌入式系统的用电量。
1实例说明
电子设备电源系统包括交流电源和直流电源,电源部分是整个系统的基础,这部分的稳定工作对整个ARM核心板的稳定工作起着至关重要的作用,而ARM 处理器也带有先进的系统状态控制及电源管理。供电方面,各部件甚至是同一部件各引脚上的电平信部有可能不同,因此还必须清楚整个系统的电源需求。
本实例主要分析电源的工作状态,然后给出ARM系统中电源部分的硬件设计、电源管理的软件操作。
2 电源工作原理
2.1系统工作状态
几乎所有的ARM处理器设计都有空闲模式。在空闲模式状态下,处理器的时钟停止,以减少处理器在空闲状态下的功耗。当嵌入式操作系统发现处理器当前没有可执行的任务时,便将处理器置十空闲状态。当系统发生中断时,处理器从空闲状态被唤醒。大多数系统都有操作系统计时器中断,因此,处理器在一秒钟之内可能几千次地进山空闲状态。
值得注意的是,处理器空闲模式仅影响处理器本身,对系统的其他硬件不产生任何影响。系统的各状态切换如图5-1所示。
图5-1显示了基本的电源管理和工作状态,分别如下所示。
665){this.resized=true;this.style.width=665;}">
1. 系统挂起模式
在系统挂起模式(也称睡眠模式)下,只有以下部件继续工作:SDRAM、处理器功耗管理电路、唤醒电路。
因为SDRAM里面的内容受到保护,系统的运行状态可以存入SDRAM里保存。以下是进入睡眠模式的典型步骤。
(1)用户指定、超时、低电量状态等因素启动了挂起模式。
(2)操作系统调用驱动程序把外设调整到节电状态。
(3)处理器未保存的寄存器存入SDRAM。
(4)SDRAM进入自刷新模式。
(5)处理器进入挂起模式。在该模式下,处理器的时钟停止,系统中各供电模块关闭。重新恢复的次序与挂起次序相反,由处理器的唤醒信号或处理器内部唤醒信号源(如实时计时警报)启动。系统执行挂起模式是个庞大的任务,必须了解如何将系统中所有的外设切换到节电状态。
2.系统关闭状态
对ARM系统来说,挂起状态虽然已大大减小了功耗,但系统在挂起状态下也消耗能量,因而需要一种关闭模式,像系统没有电源一样。这种模式在电池耗尽时可以有效地保护电池不被损坏;同时可使系统在安装有电池的情况下进行传输和储存。
3.软启动
大多数系统需要一种软启动功能,软启动时,处理器被复位,但是SDRAM里面的内容仍旧保持。目前,大部分便携式系统都选择在SDRAM中存储用户文件,这是一项非常有用的功能。
2.2外设耗电考虑
有许多外设硬件需要对功耗管理做特殊考虑。
1. 显示及背光
在ARM系统中,显示设备的耗电最多。目前,有许多类型的显示设备,但大多数现代产品都选用反射式薄膜晶体管(TFT)显示加背光灯来作为显示设备。虽然在光线充足的情况下可以看清屏幕上的内容,但是考虑到阅读的舒适度,还是需要把背光灯打开。
LED背光灯耗电较少,但是有许多其他缺点。若在短时间内没有任何输入,系统一般都会把背光关闭。在许多应用里(如音乐播放器),关闭显示器是可以接受的。
2.低功耗SDRAM
665){this.resized=true;this.style.width=665;}">
在运行时(100%整循环和挂起模式时)用到2片SDRAM芯片,表中的数据是手册中数据的两倍。对于表5-1中SDRAM在不同工作电压下的功耗比较,用1.8V代替3.3V,将大大延长便携式系统的运行时间和挂起时间。
SDRAM支持多种低功耗状态。当系统处于挂起状态时,SDRAM将进入自刷新状态。在该状态下,除了CKE,所有对SDRAM的信号都无效,SDRAM自己管理自身的刷新。当系统处于运行或空闲状态时,SDRAM也可进入电源关闭状态。
3.音频
应选择具有低功耗模式的音频元件,否则,在系统挂起模式下要切断该元件的电源。另外,应注意避免在音频电路的功耗模式切换中发出刺耳的噪声。
4.备用电源
如果系统的主供电电池是可移动的,则还需要设计某种类型的备用电源。备用电源能在挂起状态下进行主电池替换时对系统继续供电。多数系统使用一个小电池做备用电源,以满足系统挂起状态下的供电需要。
5.紧急情况
一般硬件需要能够支持一些紧急情况。最重要的事件是电池缺电,在此状态下,操作系统必须被告知系统电量低,然后操作系统无条件将系统转入挂起状态。另一种危急事件是电池耗尽,此时电池的电能还没有真的全部耗尽,但为了保护电池,电池将不再对外放电。这种事件由少数极低功耗硬件处理,硬件电路监测到这种状态后,将把主电池从系统中断开。需要注意的是,断电后所有SDRAM存储器里的内容都将丢失。
6.漏电问题
漏电问题可能是当系统进入挂起状态后的一大问题。当集成电路断电后,若某个输入信号仍维持为高电平,就会产生漏电问题。
665){this.resized=true;this.style.width=665;}">
3电源线与地线设计
前一章大概提到了PCB设计中的电源质量与分配,以及地线布线的一些方法和原则,下面主要对关于电源模块的电源线和地线的设计展开讨沦。
在布线前要谨慎布局,各器件在电路板上布局应符合相应的设计原则。晶振应尽量靠近芯片,芯片滤波的电容应离芯片的电源输入端尽量的近;尽量加宽电源、地线宽度,最好是地线比电源线宽(地线>电源线>信号线);用大面积覆铜层作为地线用,在PCB印制板上把没被用上的地方都与地相连接作为地线用。
1. 电源/电源线设计
根据电路板电流的大小,尽量加粗电源线的宽度,减少环路电流,同时使电源线、地线的走向和数据传递的方向一致,这样有助于增强抗噪声能力。
在进行电源设计时,需要特别强调的是,模拟电路和数字电路部分要独立供电,数字地与模拟地分开,遵循“单点”接地的原则。系统中的模拟电源(如锁相环PLL电源,A/D、D/A电源等)一般由(有噪声的)数字电源产生,可以通过以下方式产生:一种是数字电源与模拟电源,以及数字地与模拟地之间加铁氧体磁珠(ferritebead)或电感构成无源滤波电路,如图5-3(a)所示。铁氧体磁珠在低频时阻抗很低,而在高频时阻抗很高,可以抑制高频干扰,从而滤除掉数字电路的噪声。这种方式结构简单,能满足大多数应用的要求。
另一种是采用多路稳压器的方法,如图5-3(b)所示。该方法能提供更好的去耦效果,但电路复杂、成本高,使用时注意模拟地和数字地必须连在一起。通常每个电源引脚要生电源、地环路,设计时尽量采用多层板,为电源和地分别安排专用的层,同层上的多个电源、地用隔离带分割,并且用地平面代替地总线。 ARM都有多个接地引脚,每一个引脚都要单独接地,尽可能地减少负载的数量。
665){this.resized=true;this.style.width=665;}">
1. 地线设计
地线设计的原则如下所示。
(1)数字地与模拟地分开。若线路板上既有数字电路又有模拟电路,则应使它们尽量分开。低频电路的地应尽量采用单点并联接地,实际布线有困难时可部分串联后再并联接地。高频电路宜采用多点串联接地,地线应短而粗,高频元件周围尽量用栅格状的大面积地箔。
(2)接地线应尽量加粗。若接地线用很细的线条,则接地电位随电流的变化而变化,使抗噪性能降低。因此应将接地线加粗,使它能通过3倍于电路板上的允许电流。如有可能,接地线应在2~3mm以上。
(3)接地线构成闭环路。只由数字电路组成的印制板,其接地电路布成闭环路大多能提高抗噪声能力。
3.电源滤波
电源滤波如图5-4所示。
·电源引入处必须考虑低频和高频的滤波。
·低频滤波电容均匀分布在PCB 上,每个大功率器件应安装一个16μF以上的电解电 容或钽电容,并由其所放位置处负载的特性及纹波要求确定适当的容值。
665){this.resized=true;this.style.width=665;}">
·元器件的每个(组)电源/地均应安装至少一个高频滤波电容。
·高频滤波电容必须靠近器件的电源/地引脚。
4硬件电路设计
4.1直流电压产生方法
在系统中需要使用+12VDC、+5VDC、+3.3VDC的直流稳压电源,其中,内核工作需3.3V电源,ARM的IO端口工作和部分器件需3.3V电源,为LCD提供5V的直流稳压电源。扩展板的电源模块负责提供核心板和扩展板上电路的供电,采用线性稳压器。
这3种电压的产生方法是+12VDC从外部直接引入,作为整个系统的总电源,一路直接供给作为工作电源,一路分流到LM7805的输入端;LM7805电源稳压芯片的输出端产生+5VDC,一路供给核心板上器件各+5v,一路分流到+3.3VDC稳压芯片ALSlll7的输入端,其输出端产生+3.3VDC。还可以采用线性稳压电源LMl085将DC 5V转换成2.5v。
4.2电源模块电路原理图
为简化系统电源电路的设计,这里采用高质量的Dc-Dc电源芯片ASlll7系列和LMl085系列外加一个外置稳压电源设计完成。
665){this.resized=true;this.style.width=665;}">
5电源的软件管理
电源管理状态就是全速工作状态与消耗电力最低的休眠状态。所以电源管理的主要任务就是适时地在全速工作状态和休眠状态间切换,从而达到节省电力的目的。具体的设计思路是在系统初始化时生成一个内核守护线程,该线程每隔一定时间检查一次系统状态,如果系统持续处于空闲状态的时间大于预设值,就调用汇编指令使系统进入休眠,直至用户操作将其唤醒。
1. 唤醒
当用户试图唤醒系统时,ARM要从Sleep状态恢复到正常工作状态,需要经过一个苏醒的过程,该过程初期的动作与正常的Reset过程一样。
665){this.resized=true;this.style.width=665;}">
加入这些代码之后就可以正常将系统由睡眠状态唤醒了。
1. 切换到睡眠状态
主要功能是保存栈地址,清除数据缓存,将内存置为自我刷新状态等。当所有步骤按顺序完成后,执行:
665){this.resized=true;this.style.width=665;}">
将系统切换进睡眠状态。
1. 电压的采集
电压采集是一个简单的程序,可以使系统跟踪当前的电压情况。
665){this.resized=true;this.style.width=665;}">
665){this.resized=true;this.style.width=665;}">
数据采集任务Vo_Sampling_Task()中用0STimeDly()函数实现4个节拍延时,即每隔4x0.5=2ms任务执行一次,这就保证了20ms采样10个点的取样速率。
6 实例总结
本章主要对ARM电源硬件及系统的功耗管理做了一些介绍。了解系统各部分组件的耗电情况、降低系统哪部分耗电量比较合理等问题是重要的,低功耗的优点是延长电池的使用寿命、减少散热量等。在高频率下,必须谨慎设计电源的布局布线,使电源的控制回路能正常工作。若电源在挂起状态下运行,那么它应该支持一种低功率模式,只输出挂起状态所需的极低功率就可以了。