|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
选择一款最适合您自己应用的超低功耗mcu并非易事,并不像对比数据表前面的数据那么简单。我们必须详细对比 mcu功能,包括:断电模式、 定时系统、 事件驱动功能、 片上外设、 掉电检测与保护、 漏电流、 处理效率。还可以关闭外设时钟,注意I/O口的电平状态等措施来降低功耗。
0 E, B4 T5 W: S5 {+ d% r! z4 r* s! q2 f# T7 G8 K" i. I& n j9 _: B4 \
" s/ o4 x; T/ n; U
* o9 p) d0 Z9 P4 E, m循序渐进式的功耗优化已经不再是超低功耗mcu的游戏规则,而是“突飞猛进”模式,与功耗相关的很多指标都不断刷新记录。我们在选择合适的超低功耗mcu时要掌握必要的技巧,在应用时还需要一些设计方向与思路才能够更好的应用。
# T% S, Q, M* w8 G7 Y" J& J& l( g0 w5 Q) d# |7 a3 B$ f
2 |! b$ m" R- Z# {5 U
( H5 q4 S1 ]4 x; r8 x超低功耗MCU的选择方法
T7 z2 w, W" x2 ~5 r d! G% O& D' S [/ Q" W' c: w' s7 I% c- o% e+ A: ~- I1 B
- O( w2 d5 g% L& a1 A$ M/ z7 i3 U! l0 _, H4 j, `4 Q6 @
嵌入式微控制器 (MCU)的功耗在当今电池供电应用中正变得越来越举足轻重。大多MCU芯片厂商都提供低功耗产品,但是选择一款最适合您自己应用的产品并非易事,并不像对比数据表前面的数据那么简单。我们必须详细对比 MCU功能,以便找到功耗最低的产品,这些功能包括:断电模式、 定时系统、 事件驱动功能、 片上外设、 掉电检测与保护、 漏电流、 处理效率。7 }* m1 x: F5 z) f0 W: `5 _# G/ r3 k& N) I' Q& s# M/ P
4 s) M0 `& |6 f/ t3 ? x7 h! T/ u7 K% @: \6 G2 F
$ H& `0 @5 A- `7 X2 p$ a6 q I在低功耗设计中,平均电流消耗往往决定电池寿命。例如,如果某个应用采用额定电流为 400mAh 的 Eveready 高电量 9V 1222 型电池的话,要提供一年的电池寿命其平均电流消耗必须低于 400mAh/8760h,即45.7uA。2 F: w8 l/ ^+ I Y B3 O+ y! l
! M u- B4 a! C" S+ p( v, ~+ g: ? ]" A6 y. p
, `1 I b& W8 p3 J3 f, v- C
+ ~1 [7 F& V+ z# C. D5 E$ _在使MCU能够达到电流预算的所有功能中,断电模式最重要。低功耗MCU具有可提供不同级别功能的断电模式。例如,TI 超低功耗 MCU MSP430 系列产品可以提供 5 种断电模式。低功耗模式 0 (LPM0) 会关闭 CPU,但是保持其他功能正常运转。LPM1 与 LPM2 模式在禁用功能列表中增加了各种时钟功能。LPM3 是最常用的低功耗模式,只保持低频率时钟振荡器以及采用该时钟的外设运行。LPM3 通常称为实时时钟模式,因为它允许定时器采用低功耗 32768Hz 时钟源运行,电流消耗低于 1uA,同时还可定期激活系统。最后,LPM4 完全关闭器件上的包括 RAM 存储在内的所有功能,电流消耗仅 100 毫微安。
" l% H. ?- A1 z1 g) X$ {! c8 W6 G+ }, v; {3 }
6 }/ ?4 K6 m( q1 m9 [# r
+ {. v+ }7 O9 S: R5 M时钟系统是MCU功耗的关键。应用可以每秒多次或几百次进入与退出各种低功耗模式。进入或退出低功耗模式以及快速处理数据的功能极为重要,因为 CPU会在等待时钟稳定下来期间浪费电流。大多低功耗MCU都具有“即时启动”时钟,其可以在不到 10~20us 时间内为 CPU 准备就绪。但是,重要的是要明白哪些时钟是即时启动、哪些非即时启动的。某些MCU具有双级时钟激活功能,该功能在高频时钟稳定化过程中提供一个低频时钟(通常为32768Hz),其可以达到 1 毫秒。CPU 在大约 15us 时间内正常运行,但是运行频率较低,效率也较低。如果 CPU 只需要执行数量较少的指令的话,如:25 条,其需要 763us。CPU 低频比高频时消耗更少的电流,但是并不足于弥补处理时间的差异。相比而言,某些 MCU在 6 微秒时间内就可以为 CPU 提供高速时钟,处理相同的 25 条指令仅需要大约 9us(6us 激活+25 条指令′0.125us指令速率),而且可以实现即时启动的高速串行通信。
) |3 o7 Y) R; u4 x9 e' i+ U. A' x: a& f5 x7 I5 B" p( Q! w8 ]5 J
9 T: V' V4 U3 a7 T& S- e1 D; V; G5 v' m. ~# g
另外,如果MCU时钟系统为外设提供多个时钟源的话,当 CPU 处于睡眠状态时外设仍然可以运行。例如,一次 A/D 转换可能需要一个高速时钟。如果MCU 时钟系统提供独立于 CPU 的高速时钟,CPU 就可以在 A/D 转换器运行情况下进入睡眠状态,从而节省 CPU 耗流量。0 ]9 {( l9 f7 M$ L5 I1 H
; p2 I9 g4 i0 X) w6 ^
* w) ~0 |. H8 G3 P事件驱动功能与时钟系统的灵活性并存。中断会使MCU退出低功耗模式,因此,MCU的中断越多,其防止浪费电流的 CPU 轮询与降低功耗的灵活性就越大。轮询意味着进行与不进行功耗预算之间存在差异,因为它在等待出现事件时会浪费CPU 带宽并需要额外电流。一个好的低功耗MCU应具有充分的中断功能,为其所有外设提供中断,同时为外部事件提供众多外部中断。4 L2 I( i, m& R8 D, D
9 ]. E! K- {+ C, d4 ^( k; w: Q, G* n0 g
7 u3 R7 B9 t' G! V( B; K" X: p8 y6 b7 X. L/ b% u( n; l& v$ A" ]3 W8 B. o
按钮或键盘应用可以证明外部中断的优势。如果不具备中断功能,MCU必须频繁轮询键盘或按钮,以确定其是否被按下。不仅轮询自身会消耗功率,而且控制轮询间隔也需要定时器,其会消耗附加电流。相比而言,在具备中断情况下,CPU 可以在整个过程中保持睡眠状态,只有按下按钮时才激活。) ]0 M, p8 T4 t9 v, p3 h, h
) I% I, X5 ]; f% h; n% [! S$ L2 Y6 h; C( C }1 `
5 V: B' O1 o+ I4 c* ^3 x在选择低功率MCU时,还需要考虑外设功耗与电源管理。某些低功率MCU仅仅是设计时不具备低利率功能的旧架构的改进版本。而有些MCU在设计时即具备低功耗特性,并在其外设中内置了低功耗功能。一种特性是在需要时单独启动或关闭外设的能力,换言之,更重要的是自动启动或关闭外设的能力。 A/D 转换器就是一个例子,其在完成一次转换后可以自动关闭。另外,某些MCU正在引入直接存储器存取功能,其可以在无需 CPU 干预情况下自动处理数据。7 X* t/ j6 A& F* b; j8 l/ r$ X: i8 T3 e; T
! J/ T" o& A3 K2 _$ i. q8 B9 g" e9 `4 t r+ f3 J2 e
8 H: G1 V: P. Y+ S( X4 H' T
, a/ @# M" C* c, Z( I7 S% o大多 MCU具有集成的掉电保护功能,当电源低于正常操作范围时其可以复位 MCU。通常会提供启动或关闭掉电保护以节省功耗的功能,但是必须在整个过程中都使掉电保护功能置于可用状态,因为掉电是不可预测的。某些MCU需要70uA 的电流来实现掉电保护。在只需要 45uA 平均电流的应用实例中很明显可以不考虑这些MCU。 在选择低功耗MCU期间有时会忽视漏电流,但是,在最苛刻的低功耗应用中则必须考虑到漏电流。大多改进后的低功耗MCU都具有 1uA 的限定输入漏电流。在 20 输入器件中,它可能会消耗 20uA!针对低功耗设计的最新MCU具有最高50nA 的漏电流。3 y; v4 q3 }6 t9 l- C1 H& e
- a1 p1 v; Z3 N- ?8 {2 w1 q: `& n9 `, }8 [9 Y$ q$ N! m m, ~- G. j3 D6 ~
+ b2 j2 G4 o' A: B( L2 l6 c+ ]: E2 [! E
最后,我们常常会误解MCU处理效率。大家通常会认为 16 位 MCU需要两倍于 8 位MCU的内存,但是一个 16 位架构实际上需要比 8 位架构要少一些的代码,而 16 位MCU一般会更快速地执行任务。例如,8 位 MCU需要 CPU 开销来管理具有 10 位 A/D 转换数据或需要 16 位计算的应用中的数据。而且当今许多MCU产品都具有单个工作文件或累加器,其数据必须进行传输,以便处理,因此,与基于寄存器的架构相比需要额外的 CPU 开销。
8 p( U: I- ?) h: q: f, B2 u. ^, ^/ C. u; ~. `' f; y3 I5 o4 u0 \' f: R* F8 I/ _" P( V
+ [! n( m" b5 d6 n' \) i4 B& t) F
' G& t$ f$ F7 D5 g7 m8 H/ K选择低功率MCU是一项耗时、棘手的工作。如果花费一些时间来了解可用产品选项的架构特性,我们就能够开发出能满足最苛刻功率预算的设计。2 `# M! O* o- C% Q4 }* G" k5 |1 x: h+ d: C! Q
6 i& ~% m& [( a. I( _
+ t" _# s0 @6 B! V; s' D' J$ [; S0 k, |9 o
小结:MCU的低功耗设计是一个细致活,要养成良好的习惯,做到每添加一个功能都要重新验证一下低功耗是否符合要求,这样就可以随时随地干掉消耗功率的因素。如果把所有功能都设计好了才去考虑低功耗的问题,一个不小心,就可能要更改程序的架构——即便如此也不一定能把功耗给彻底降下去。& f( W1 D+ e6 t
|
|