找回密码
 注册
关于网站域名变更的通知
查看: 54|回复: 0
打印 上一主题 下一主题

怎么让MCU轻松实现低功耗

[复制链接]
  • TA的每日心情
    开心
    2023-5-15 15:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
     楼主| 发表于 2024-9-5 17:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    4 m0 ]4 c$ O$ A# M$ K% U

    : n' x3 E* F0 @6 ]3 r低功耗是mcu的一项非常重要的指标,比如某些可穿戴的设备,其携带的电量有限,如果整个电路消耗的电量特别大的话,就会经常出现电量不足的情况,影响用户体验。
    : B3 J' B% A$ p" O* f5 H" j' F8 X+ \2 I0 r  `1 J, d
    平时我们在做产品的时候,基本的功能实现很简单,但只要涉及低功耗的问题就比较棘手了,比如某些可以低到微安级的MCU,而自己设计的低功耗怎么测都是毫安级的,电流竟然能够高出标准几百到上千倍,遇到这种情况千万不要怕,只要认真你就赢了。下边咱们仔细分析一下这其中的原因。
    7 f: I" U3 Q( ^( P8 ]7 \
    5 m  n! ~& l" ]+ V9 S6 X第一条:掐断外设命脉——关闭外设时钟: X9 h; o1 F8 C! W: E' b

    & d; n$ l5 g4 ?7 x# Z先说最直观的,也是工程师都比较注意的方面,就是关闭MCU的外设时钟,对于现在市面上出现的大多数的MCU,其外设模块都对应着一个时钟开关。只需要打开这个外设的时钟,就可以正常的使用这个外设了,当然,此外设也就会产生相应的功耗;反之,如果想要让这个外设不产生功耗,只需关闭它的时钟即可。5 O  H6 l* I8 a3 y& ?& i+ O, K

    ; B$ ?. a) E- s* l6 _第二条:让工作节奏慢下来——时钟不要倍频; q8 Z7 ~; ~' Y0 S4 u7 w

    / x! s2 _% R( P. B: j除了外设模块功率消耗之外,还有一个功耗大户需要注意一下,这就是PLL和FLL模块。PLL和FLL主要是用来对原始的时钟信号进行倍频操作,从而提高系统的整体时钟,相应的,其功耗也会被提上去。所以在进入低功耗之前,需要切换是种模式,旁路掉PLL和FLL模块,从而尽可能的降低MCU的功耗,等到MCU唤醒之后再把时钟切换回去。  X; H5 S  {; P1 h7 ^
    : A5 W0 O4 p* x$ P; O" d
    4 S7 f6 y. h& _# u$ l3 F/ K% ~

      L" z3 P0 P+ r4 S第三条:围堵涓涓细流——注意I/O口的电平状态5 U$ E3 R; J# u9 R5 a/ K8 b" K

    * x' I2 S/ j. D) C. y6 \1 ~如果认为只要关闭外设时钟就能够保证外设不再耗电,那么你就太天真了。如果IO口没有做好处理的话,它就会在暗地里偷走功耗,而你却浑然不知。具体原因是这样的,一般的IO的内部或者外部都会有上下拉电阻,举个例子,如下图所示,假如某个IO口有个10KΩ的上拉电阻,把引脚拉到3.3V,然而当MCU进入低功耗模式的时候,此IO口被设置成输出低电平,根据欧姆定律,此引脚就会消耗3.3V/10K=0.33mA的电流,假如有四、五个这样的IO口,那么几个mA就贴进去了,太可惜了。所以在进入低功耗之前,请逐个检查IO口的状态:4 g0 B) g$ j& |, Q' t1 x6 D' W) J

    . Y" p: T6 L) E9 [3 @2 A1 M如果此IO口带上拉,请设置为高电平输出或者高阻态输入;
    7 b0 U+ r7 U2 n, e* p+ m9 q  |% \, D* `
    如果此IO口带下拉,请设置为低电平输出或者高阻态输入;
    ' m# T( B9 V' m
    & l& ^! Q: ~3 L2 K
    ' W5 g9 H1 ~  V6 q: E" f6 Y8 D- O& _7 d: `  V3 ?9 v7 I* {5 v
    总之一句话,不要把上好的电流浪费在产生热量的功能上,咱可不靠这点温度去暖手。
    7 j, w+ w2 }4 M7 D% Z0 Q2 ?# A+ A: r/ {( t! m- y* U2 f% ?9 U
    第四条:睦邻友好合作——注意I/O与外设IC的统筹. H+ ~; I/ Z" ]3 m) V
    ) r4 \/ F4 z# Z3 h5 ]! k/ d  l
    IO口的上下拉电阻消耗电流这一因素相对比较明显,下边咱来说一个不明显的因素:IO口与外部IC相连时的电流消耗。假如某个IO口自带上拉,而此与IO相连的IC引脚偏偏是自带下拉的,那么无论这个引脚处于什么样的电平输出,都不可避免的产生一定的电流消耗。所以凡是遇见这一类的情况,首先需要阅读外设IC的手册,确定好此引脚的的状态,做到心中有数;然后在控制MCU睡眠之前,设置好MCU的IO口的上下拉模式及输入输出状态,要保证一丝儿电流都不要被它消耗掉。2 M9 v" `0 M* H8 _! H6 j# x: `
    : k; E+ ]. ?- M
    第五条:断开调试器连接,不要被假象所迷惑: W  m; \; g( b: ?5 v# q

    ) e' y5 @( l  ~; o还有一类比较奇特,检测出来的电流消耗很大,可实际结果是自己杞人忧天,什么原因呢?是因为在测试功耗的时候MCU还连接着调试器呢!这时候大部分电流就会被调试器给掳走,平白无故的让工程师产生极度郁闷的心情。所以在测低功耗的时候,一定不要连接调试器,更不能边调试边测电流。
    7 W0 Y% J* D6 d) P5 ^
    " u" \; N- K3 b  J/ J7 i  o总结
    0 a7 A/ a( k( o6 w0 f* m- N6 q  [9 a" K5 l- _' ?* I( V9 u
    MCU的低功耗设计是一个细致活,要养成良好的习惯,做到每添加一个功能都要重新验证一下低功耗是否符合要求,这样就可以随时随地干掉消耗功率的因素。如果把所有功能都设计好了才去考虑低功耗的问题,一个不小心,就可能要更改程序的架构——即便如此也不一定能把功耗给彻底降下去。
    8 `( l! {4 |& C( i& @' w3 ~; |$ _1 J8 {
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-9-24 05:20 , Processed in 0.140625 second(s), 26 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表