MCU省电模式帮助降低整体功耗
时间:2012-02-29 12:00:17点击:次
大多数单片机都设有多种模式,可提供各种省电选项。尽管模式的名称可能各不相同,但是几乎所有MCU都会提供“运行”、“空闲”和“休眠”三种典型模式。图1给出了许多单片机上可用模式的汇总。在一些情况下,何时使用哪种模式是显而易见的;例如,对于主要的处理工作,只能使用运行模式。在处理工作完成后,如果需要长时间等候外部事件,显然应该选择休眠模式。何时适合选择空闲模式并不容易判定,但是在发送或接收大批量的数据时最常选择该模式。在保留其他功能的同时等候较短时间延迟来关闭CPU,也会使用空闲模式。
对于特定架构的多种其它模式和功能的熟悉程度非常重要。虽然仅使用上述一些熟悉的模式也可以使设计功耗达到可接受的水平,但是要使应用的电流消耗达到绝对的最低水平,最好是利用器件的独特功能。例如,某些MCU采用了一种新型断电模式,该模式取消对MCU的内核供电以最大程度地降低功耗,从而使功耗低于常规断电模式下的功耗。这种模式通常被称为“深度休眠”。图2中显示的PIC24F16KA 16位MCU便是深度休眠器件的一个实例。
MCU内核断电时RAM也将断电,这样会导致其它低功耗模式(如休眠)下仍然可以保留的某些信息丢失。既然代价如此高昂,那么什么情况下才适合使用深度休眠模式呢?使用深度休眠模式的好处是取消器件的大部分供电时产生的漏电流很小,这可以显着降低掉电电流——某些情况下可以降到50 nA以下,如图1所示。小漏电流还使得深度休眠模式在高温或高压应用中的表现更好,高温和高压常常导致休眠模式电流增加。深度休眠模式的另一个主要优点是可以实现设计尺寸更小且性能更佳的芯片,同时不用放弃低功耗目标。这种模式最适用于掉电时间较长的应用,这些应用中减小掉电电流的重要性远远超过使应用重新初始化的成本。
设计人员对器件的熟悉度变得重要的另一个原因是,不仅只有低功耗模式才能降低功耗,很多用于提升性能的功能也有利于降低功耗。例如,如果某个器件有内部振荡器,则用户可以在主晶振开始运行初始化代码的同时使用该内部振荡器,这样便可以缩短器件唤醒所需的总时间。
数字外设的功耗
集成外设有助于显着提升MCU的性能并允许移除外部元件,这两点都有利于降低功耗。但是,如果使用不当,运行外设的成本会高过所节省的功耗。可以通过几种简单的技巧使外设自身的供电成本最小化,以维持低功耗应用。
一般来说,单片机中使用的最耗电的外设是串行通信总线。I2C和SPI通信均使用多条高速线路。驱动这些线路的供电成本非常高。SPI在高速运行时消耗的电流会达到毫安级,因为它需要驱动三条高速I/O总线。驱动这些总线时的开关损耗会导致极大的电流消耗。相比而言,I2C运行速度较慢,但是因为它使用了上拉电阻,而当低电阻上拉用于实现高速时会造成相当大的电流,因此电流消耗会更大。
降低这些串行通信外设功耗的最简单的方法是降低速度;但是,并不是所有情况下都可以这样做。既然运行串行通信的大部分成本来自于驱动总线,那么我们就应该将焦点放在驱动总线上。对于SPI而言,采用走线较短的简洁电路板布局来最小化线路阻抗很重要。而I2C则相反——在总线上采用值较高的上拉电阻可以降低电流消耗,并且在某些情况下并不会减慢最大速度。要最小化这两种情况下的功耗,可以减少总线上的器件数量或关闭未使用的器件的电源,而不是在选择芯片上费脑筋。在软件中,如果某个应用正在等候串行数据,可以通过禁止CPU来降低这些外设的功耗。另外,也可以将串行传输数据组合成集群,而不是持续传输,这样应用就可以更长时间保持在省电模式,而在更少时间处于唤醒状态以发送和接收数据。
模拟外设的功耗
MCU上的模拟外设会对电流消耗产生很大的影响。BOR、pcb抄板比较器和ADC等模拟功能需要消耗足够的功率才能产生准确的结果。因此,当这些功能部件在低功耗模式下运行时,无法总是像对数字功能那样对其进行功耗优化。正因为如此,确保应用仅在需要时使能模拟功能(而不是始终使能)就变得非常重要。若要降低ADC的采样速率,往往使用尽可能快的时钟和尽可能短的采样时间而不是延长采样时间或放慢ADC时钟。而且,在采样完成后,应该禁止ADC。对于很多MCU而言,这样做可以用更低的功耗产生相同的结果。类似地,在器件运行过程中使用BOR功能来检测会导致错误执行的小幅压降,比在器件处于省电模式时使用该功能更重要,因为在省电模式下,仅要求检测大到足以造成RAM崩溃的压降。因此,将BOR配置成采用功耗更低的休眠模式比配置成运行模式更加有用,这样的话,可以利用在休眠时较低的功耗强度要求并达到低至50nA或更低的电流消耗,同时还能在运行时维持高性能