嵌入式产品的低功耗调试是一件较麻烦的事情,因为它既涉及到硬件又涉及到软件,影响因素非常多。但是又十分重要,因为它关系到产品的实际使用时长。作为整个系统的大脑, MCU通常对功耗的影响较大,MCU的功耗分为运行时的功耗和休眠时的功耗,运行功耗通常为mA级别,休眠功耗通常为uA级别。整个系统的功耗可以用平均电流来衡量,取决于运行时长t1及运行电流i1、和休眠时长t2及休眠电流i2,即:i=(i1t1+i2t2)/(t1+t2)。
实际产品的功耗状态可能并不是上图中简单的两种状态,可能由多种不同状态组合,但是原理是一样的。
对于一般的应用,因为运行功耗相比休眠功耗要高出几个数量级、且大部分时间处于休眠状态,所以对平均功耗影响较大的是运行时长和休眠电流。
如何去观察和测试动态变化的电流呢?
万用表适合测量直流,只需要选择电流档位将万用表串联接入电路即可。需要注意并不是所有的万用表都能测uA级的电流。比如福禄克这款万用表最小只能测到1mA电流。
但是当电流不断变化时,万用表就不太合适了,它没法动态跟踪电流的整个变化过程,同时无法方便的查看一段时间内的平均电流。实际调试过程中,需要看到这些才能更好的去优化。
安捷伦有一些专用的仪器可以分析功耗,但是比较贵,个人一般不适合购买。推荐一款我最近在用的功耗分析仪,我买的型号是英加850L5这一款,价格945元,用着还不错。我之前还买过一款合宙的CC表,非常小巧,不过测试下来精度不是很好,就没用了。
首先它的精度精很准,比如我先用它测试了一款MCU进入到低功耗时的电流值,
和万用表测试结果几乎一致
它真正方便的是可以动态的观察整个功耗曲线,比如ADC每隔100ms唤醒一次采集4路ADC,通过搭配的上位机可以观察到详细的功耗曲线,各种时间统计下的平均功耗。
如果需要看其中的细节,可以通过放大波形就可以:
还有一些比如蓝牙类的应用,可以用它来方便的查看各种不同状态下的功耗情况
如果不用这种仪器,用示波器也是可以的,只是不如这个方便。
工欲善其事,必先利其器。如果要细致的研究功耗情况,还是最好拥有这样一台功耗调试工具。