引言
在控制终端系统设计中,当系统要求整体功耗偏低时,C8051系列单片机是一个最佳的选择,它们拥有灵活的时钟硬件,使系统能够方便地在高效运作模式与低功耗模式间进行转换,智能的电源管理模式能够在正常工作及待机状态自由切换,从而降低整个系统的能量损耗,当工作频率低于10kHz时,时钟丢失检测器(MCD)能够引发系统产生复位,确保系统工作的安全可靠。
1 C8051F各部分组件的功耗
整个单片机系统的功耗应该由4部分组成,振荡器功耗、数字设备功耗、模拟外设功耗及I/O端口功耗,振荡器功耗包括内部振荡器的功耗以及外部振荡器功耗,数字设备能量消耗主要由CPU的工作模式,工作电压及系统时钟频率决定,温度与数字外围设备对数字设备的功耗影响很小,模拟外围设备功耗主要包含ADC,电压基准VREF、温度传感器、偏压发生器及内部振荡器,比较器也有少量的能量功耗。
1.1 振荡器功耗分析
外部振荡器具有很好的可配置性,为系统设计者提供了多种选择。时基信号可以从外部CMOS电平时钟源、晶振或陶瓷谐振器、RC组合电路或外部电容获得,每一种方法都有各自的优势,由于振荡器可以灵巧地在各种方式中转换,因此可以通过改变振荡器来降低功耗,对外部振荡器来说,外部CMOS时钟,电容和RC网络都能够提供较低的振荡频率。
(1)外部CMOS时钟
当工作于外部振荡器CMOS时钟模式时,外部振荡器驱动被关闭,电路功耗电流微小可以近似忽略,XTAL2输出的时基信号可以用作CPU、计时器、PCA或其他外围设备的时钟源,注意,即使在某一端口应用了高频信号,功耗仍只有少量的增加。
(2)外部晶振
外部晶振提供了最精确的时间基准,但随之而来的功耗在同一频率下也更高,外部晶振依赖于晶振频率和振荡器驱动电路(XFCN)。
(3)外部电容C模式
外部电容模式通过将一个电容连接到XTAL2为系统提供低功耗时钟,这是精度最差的一种时基方式,但同时也是最灵活的一种方式,只用一个电容元件就可以提供8种不同的工作频率,最高频率几乎可达最低频率的3000倍,可以通过改变在OSCXCN寄存器中的XFCN位改变其振荡的频率,并直接影响其输出的电流,外部电容方式下的时基精度主要由电容的误差和流过XTAL2的内部电流源的精度决定。
(4)外部振荡RC模式
RC模式与电容模式十分相似,区别在于外部电容方式下电容的充电电流由接到XTAL2的内部可编程电流源提供,并且在RC模式下充放电电路除了包含电容外还要通过一个外部电阻器。RC模式振荡电路的平均功耗由通过电阻器的平均电流所决定,电阻器上的压降成指数倍大小,其波形可以简化为三角波来估计平均值。
通常,设计者可以通过合理地选择时钟源达到降低功耗的目的,内部振荡器消耗数字电源电流的典型值为200μA,用于驱动外部振荡器的电流是变化的,对于一个外部振荡源(如晶振),驱动电流(由模拟电源提供)用软件通过配置外部振荡器控制寄存器OSCXCN的XFCN位来设置,在驱动电流较大时用户可以使用内部振荡器以降低功耗。
1.2 数字设备的功耗分析
数字设备的能量消耗主要是由CPU电流的大小来衡量的,CPU的电源模式是决定CPU电流大小、工作电压及系统时钟频率的关键因素,通常,温度和数字外围设备对数字设备的功耗只有很小的影响。
(1)CPU电源管理模式
CPU有3种操作模式:正常状态,空闲状态与停止状态。通常,空闲状态的平均电流值受控于内部振荡器,正常模式时的电流值减去空闲模式时的电流值即为CPU正常运行的工作电流值。当写1到IDLE位时,CPU结束指令周期进入低功耗模式,直到被中断或复位唤醒。在空闲模式下,所有的模拟与数字外围设备、存储器与内部寄存器都保持原来的值不变,被唤醒后,CPU开始从设置空闲方式选择位指令的下一条指令开始执行,当写1到STOP位时,CPU进入停机模式,设置停机模式后,当前指令被执行完毕,内部振荡器及所有的数字外围设备全部停止工作,模拟外设(如比较器与外部振荡器)保留其当前的状态。在停止状态,MC
U消耗最少的电流。
(2)CPU工作电压、频率及温度对功耗的影响
工作电压:CPU的工作电流会随着供电电压的升高而增加,这种关系存在于任意一种工作频率下,尤其在高频运行时表现得更为明显,理论上提供电压最小可达到2.7V,但由于电压调整本身有±10%的误差率,因此系统通常供电电压不会低于3V。
温度:温度对系统的功耗无影响。
工作频率:CPU工作频率对系统功耗有主要影响,在CMOS数字逻辑器件中,功耗与系统时钟SYSCLK频率成正比:
功耗=CV2f
式中:C是CMOS的负载电容;V是电源电压,f是SYSCLK的频率。
因此,为了降低功耗,设计者必须知道给定系统所需的最高SYSCLK频率和精度,某些设计可能需要其系统时钟频率在全部工作时间内保持不变,在这种情况下,设计者将选择满足要求的最低频率,并采用消耗最低功耗的振荡器配置。
1.3 数字外围设备与I/O接口的功耗分析
数字外围设备(计数器、UART、PCA、SPI)的损耗占系统总功耗的比例很小,举个例子,当C8051F单片机工作在3.06MHz(内部振荡器8分频),3V电压时,没有一个数字外围设备端口的工作电流超过700μA,而在启动计数器作为UART0数据传输时钟后,系统的工作电流会增加18μA,这里,计数器与UART的功率损耗主要由其时钟频率及工作电压来决定,利用交叉开关配置通过I/O口为推挽模式,也能够影响功耗的大小,在上述例子中,如果利用交叉开关将UART0的TX端分配到P0.4口,则配置端口为推挽模式将令系统的工作电流再增加82μA,输出引脚的功耗由连接在该引脚的外部电流频率决定。
1.4 模拟外围设备的功耗
模拟外围设备功耗是ADC、温度传感器、内部偏置电压产生器及内部振荡器的功耗和,通常,只要ADC、内部振荡器或温度传感器被激活,内部偏置电压产生器就会自动被使能。ADC在转换期间的工作电流比ADC没有转换时的工作电流大30%-50%,SAR转换时钟频率与采样频率也影响了功耗的大小,由于增加SAR转换时钟频率或降低采样率会缩短每次A/D转换的时间,使系统在转换间隙有更多的时间处于空闲状态,因此会大大降低系统功耗。
2 降低功耗的几点考虑
要降低系统的平均功耗,需要从两个方面考虑:首先是适当调整在所有时间一直影响系统工作的参数,通常工作电压是重要考虑的参数,工作电压决定了系统是否能够处于正常运作状态,它可以由电压调整器或一个电池来提供,对于一个节能系统,工作电压应该被最小化,以节约能量。第二点就是构建合理的固件结构以降低功耗,要为系统设计两个工作模式:一个为高效的运作模式;另一个则是以降低功耗为目的的睡眠模式,两个模式的设计标准不同,但应尽量让系统在大部分时间内处于睡眠模式,以降低系统的总功耗,下面详细讨论这两个方面的设计。
2.1 降低工作电压、减少工作电流
工作电压对系统的总功耗起着举足轻重的作用,对于节能系统、应该尽量在保证系统安全可靠的前提下采用最低的工作电压。通常电压调制器会有10%的误差率,因此在设计工作电压时地最低的工作电压应该为3V,此时电压调制器的输出电压在2.7V与3.3V之间,也可以选择用电池。在这里推荐使用锂电池,锂锰二氧化氮电池能够无须任何调节地输出稳定的2.85V电压,并且该电池能够直接连接到设备的电源引脚,无须担心电池耗尽时会对系统工作有不良的影响,因此C8051F系列单片机中,片上电源监控器能够确保在电池耗尽后系统自动复位。
由于工作电压通常是恒定的,因此经常通过减小平均电流来降低系统的总功耗,平均工作电流是系统在单位时间内消耗的电荷量,对一个系统来说,其总的运行时间应该被分为两个部分——高效工作期与低功耗休眠期,如图1所示,高效工作期的工作电流偏大,而休眠期的电流非常小,平均工作电流是系统在这两部分时间的总电荷量与时间相除所得的平均值,因此如果想减小平均电流值,唯有通过两种方法解决——缩短高效工作期的时间或减小高效工作期的峰值电流,设计者应该尽量从这两方面着手设计系统,以达到降低总功耗的目的。
2.2 设计一个低功耗的休眠模式
可以通过设计低功耗休眠模式,令系统在非工作期一直处于低消耗状态,从而达到减小整个系统工作电流的目的。休眠模式可以通过将电源管理模式设定为空闲或停止状态来实现,通常会设定空闲模式,因为该模式更容易被恢复,需要注意的是,在休眠模式下应该关闭所有不需要的外围设备,并配置休眠模式的时钟为外部振荡器,因为外部振荡器能够禁止内部振荡器的振荡,并能以非常低的时钟基准进行振荡,这里有两个可选的振荡器:36.728kHz晶振与单电容模式外部振荡器。
外部电容模式振荡器消耗的功耗比晶振低,但没有晶振精确。其优势在于能够使钟控外围设备(如定时器)的频率低度低于10kHz,同时由于其组成只包含1个电容,相比于晶振的2个装载电容及1个电阻器结构,能够节省PCB板的空间,若在设计中使用了高频晶振,则可将装载电容连接到XTAL2引脚,作为外部振荡器使用,并可在C模式下为休眠模式提供一个较低频率的时钟。
2.3 设计一个高效运作模式
高效运作模式的设计应该以尽可能缩短完成作业所需时间为标准,使得系统能够尽快地恢复到休眠模式,模式的设计包括调整工作电流的峰值以及时钟频率,以减小高效工作期间的总电荷量,通常在高效工作模式下使用内部振荡器,更有益于系统总功耗的降低。
下面以ADC采样为例,比较、分析两种设计中系统功耗的消耗率情况。
片上温度传感器以10Hz速率采样,系统的外部晶振连接到XTAL与XTAL2之间,定时器2每100ms溢出产生一个中断,将系统从空闲模式唤醒。当系统被激活后,系统捕捉ADC采样数据,然后重新返回空闲模式,直到下一个中断发生。
由于该系统是电池供电,因此系统应尽量减少每次A/D采样所消耗的电荷,由于电荷量是一段时间内电流的总量,因此可以通过缩短采样时间或减小采样时的峰值电流来节约能量。也就是说,在捕捉ADC采样数据时,系统可以选择转换到3MHz的内部振荡器,在短时间内使用大的电流,或是用外部32kHz的晶振作为系统振荡器,使单片机在长时间内使用较小的电流值。
根据以上分析,进行了两种设计,一种设计是在采样时一直采用外部32.768kHz晶振作为系统时针基准,另一种设计是在采样时将振荡器转换到内部振荡器,以缩短A/D转换的时间,两个系统在不采样时都处于同样的空闲模式。
第1个系统从空闲模式被唤醒后,系统直接启动了ADC设备开始采样,系统没有转换到内部振荡器,而是仍采用原来的32kHz晶振作为系统的时钟基准,A/D转换结束后,系统读取采样值,关闭ADC并重新进入空闲模式,为了捕捉采样数据,系统在峰值工作电流0.65mA上持续了1.5ms,第2个系统从空闲模式被唤醒时,系统启动内部振荡器与ADC,转换系统时钟基准为内部振荡器8分频模式,并开始ADC转换,转换完成后,读ADC数据,而后停止ADC及内部振荡器并令CPU回到空闲模式,为了捕捉ADC采样数据,系统在峰值工作电流2.2mA上持续了400μs,利用公式:
计算可得,第1种设计系统的平均电流为15μA;而第2种设计系统的平均工作电流为14μA,在3V锂电池供电的情况下,第1种设计电池的寿命为40000h;而第2种设计电池的寿命为42000h。
从这个例子可以看出,在系统高效工作时提高系统的时钟频率能够减小系统的平均工作电流,从而降低系统的总功耗。