完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
低功耗测量 - 引脚的处理
提出问题 datasheet上的数据是在理想情况下测定的, 使用验证系统专门的EVB电路板, 除电源引脚之外的所有引脚都同外部电路系统断开, 不用担心信号引脚向外部的漏电流, 即使使用粗糙的软件也能测得极限电流. 但在实际的开发板上, MCU的引脚都已经接好在外部电路中, 不便拆除, 此时再调试低功耗重现极限值, 就需要在软件上特别注意. 在已经接好外部电路的电路板上测量MCU的低功耗极限指标(休眠状态下极低的电流消耗), 通常是一件非常麻烦的事情. 整个电路系统的电流是从VCC到GND的流动的, 板子上所有电路的电流都是从总电源的VCC流出, 经过各个部分的电路之后, 从总电源的GND回收回去. 测量MCU的功耗, 实际是测从MCU芯片这一通路流经的支流, 在MCU内部还区分不同的电源域, 数字电源部分, 模拟电源部分, 及一些其它专用的电源(例如RTC等). MCU的电流越小, 说明MCU对整个电路系统耗电的影响更小. 但要注意, 这也仅仅是MCU一脉的电流. 从应用上看, 优化整个电路系统的功耗特性才是最终的目标, 毕竟电池不可能仅给MCU供电, 而仅给MCU供电也不能让整个电路系统实现有意义的功能. 引脚的变化会体现出电流的消耗, 因此, 处理引脚问题将会是避免额外漏电流的一个重要的考虑方向. 见招拆招 这里是笔者在测量低功耗实验中处理引脚问题时总结出的几个要点. 尽量断开能断开的引脚 设计有低功耗测量要求的电路板时, 会用一些跳线帽将附加的电路单元隔离开, 此时能拔掉就拔掉吧, 尽量让大多数引脚悬空(不连任何可能直接或者间接通向GND的线路) 在项目上用的电路板中, 如果用不了那么多引脚, 直接悬空也是一种可行的设计. 但如果考虑电磁干扰问题的影响, 也可以将无用的引脚接地, 相当于是增大了芯片的接地点, 减少来自于电磁辐射产生的错误输入从而不断翻转芯片内部的检测电路产生额外功耗. 特别注意, 测量电流时断开调试器 (重要的事情说三遍) 测量电流时断开调试器 (重要的事情说三遍) 测量电流时断开调试器 (重要的事情说三遍) 使用SWD调试模式时, 有三根信号线, SWCLK, SWDIO和RESET. SWCLK和SWDIO比较容易考虑到, 但RESET更要特别注意. 实际上, 在Kinetis的官方开发板上都集成的板载调试电路系统OpenSDA, OpenSDA通过GPIO线控制主MCU的RESET. 一些完善的设计会做好这块信号的电气隔离, 即使不断开影响也不大, 但在某些电路板上仍存在一些设计简略了电气隔离的电路, 直接用GPIO引脚对接到RESET, 或者简单用跳线插座隔离开(这样也行, 就是需要人工插拔操作一下). 在搭建低功耗测量环境时要特别考虑到. 笔者就曾经在这个RESET信号线上卡了将近两周, 实测电路板同在EVB板上测的理论值(大约3uA)总是差大约20个uA, 经过很长时间的排查, 最后通过断开OpenSDA到MCU的RESET电路的跳线帽降下了最后这20uA的电流. OpenSDA同主控MCU的连线还有一个串口的rx和tx两根线, tx信号线是主控MCU控制的, 如果主控MCU自己关闭端口引脚功能, 而对面OpenSDA的K20芯片引脚为输入, 那么几乎不会额外的漏电流. rx信号线要特别注意一下, 有可能受到对面OpenSDA的K20芯片引脚的输出产生电平翻转, 检测翻转会产生额外电流消耗, 因此在MCUX SDK的power_mode_switch样例工程中, 在进入休眠模式时都会把rx信号线上的引脚功能禁掉. 将断不开的引脚直接禁用或者设置成模拟功能 这里面其实是个偷巧的做法. 如果能直接关闭端口当然最好, 但在Kinetis芯片中, 会将ALT0安排给模拟功能. 不同于数字电路只关心0和1, 模拟电路对电平之外的电流也非常敏感, 所以相应电路上做的隔离也比数字电路部分要好很多, 因此漏电流更小. 当然, 还有一种猜测, 切换到模拟功能后, 电流可能从模拟域VDDA走了, 如果此时测量的仅是数字域的VDD, 那无疑也是给VDD减负了, 但这部分电流仍应算在MCU的耗电当中. 将引脚设置成GPIO输入并外部上拉电阻到外部电源 这也是一个偷巧的做法, 引脚设置为GPIO输入, 通过外部上拉电阻接到电源上. 由于上拉的电势大于等于芯片内部的电势, 考虑到电流总是从电势高的地方流向电势低的地方, 外接上拉电阻的做法总是不会出现内部的电流通过引脚向外部泄露的可能. 此时要特别注意, 一定要用外部的上拉电阻, 并且上拉电源是测量通路外部的电源, 而不能使用芯片内部的引脚上拉电阻(内部的上拉电阻是上拉到芯片的VDD上, 刚好在测量范围之内), 从而将这部分可能产生的"漏入"电流算在测量指标以外. 这种方法对外部电路的设计有要求, 需要外部电源和外置上拉电阻的设计, 但这种方法得到的低电流指标并不能体现出芯片对低电流控制的能力有多好, 所以在关注实际使用效能的测量中一般不用. 但如果只是为了给芯片提供一个看起来漂亮的数据时另当别论. 不过, 在某些特别需要的地方, 例如RESET引脚和NMI中断的引脚, 即使是在低功耗情况下也必须保持监控状态, 此时这些引脚上的上拉电阻可以帮助屏蔽一些不必要的影响, 让开发者重点关注除了这些引脚之外其余部分的功耗情况. 但在最终评估整个电路系统的功耗情况时仍需要考虑在内. 将无法断开没有模拟功能的引脚设置成GPIO输出0电平 这是没有办法的办法, 如果没有隔离用的跳线帽或者0欧电阻, 又不想割线以破坏电路板, 引脚本身也没有模拟信号的功能, 只能使用数字功能. 那就只能用这最后一招了. 将引脚配置成GPIO输出0电平, 在内部等价为直接将引脚接地, 从逻辑电路上直接接地, 就节省了为了维持高电平而从VDD分出来的能量. 这也能尽量节约一部分电能. 另外, 正如在第一项中提到的那样, 将引脚设置成GPIO输出0电平到地相当于是逻辑接地, 在一定程度上增加了整个芯片的接地点, 在抗电磁干扰上能起到一定的积极作用. 总结 整个电路系统的电流是从VCC到GND的流动的, 板子上所有电路的电流都是从总电源的VCC流出, 经过各个部分的电路之后, 从总电源的GND回收回去. 测量MCU的功耗, 实际是测从MCU芯片这一通路流经的支流. MCU内部还区分不同的电源域, 是测其中一路还是总的电流, 测量前要明确测量目标. 其实如果不是担心由于电流表会引起接地不稳并且考虑MCU芯片接地点众多的因素, 测量MCU芯片的接地线通路其实跟电源正极通路是等效的. 本文中描述的几种方法, 在实际使用时需要结合具体电路的具体情况灵活选用. 测量的指标也是根据实际使用情况选定, 是为了凸显某一部分的电流特征, 还是考察整个系统的功耗情况, 又要有与之相应的测量环境. 文中提到的一些取巧的方法是双刃剑, 用好了可以帮助开发者提取关键测量指标, 滥用会漏算数据. 因此在描述低功耗性能指标时一定要将与之对应的测量环境同时交代清楚, 千万不要玩弄文字游戏, 在不相符的测量环境下测出的数据忽悠人就是欺骗, 在实用环境下没有意义, 在以后终归会碰到上来追债的. |
|
|
|
只有小组成员才能发言,加入小组>>
3253 浏览 9 评论
2933 浏览 16 评论
3435 浏览 1 评论
8936 浏览 16 评论
4027 浏览 18 评论
9663浏览 3评论
1060浏览 3评论
551浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
546浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2283浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-3 06:47 , Processed in 1.018507 second(s), Total 81, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号