浅析低功耗产品设计

当前越来越多的无线产品,由于使用场景选择使用电池供电,系统的功耗越来越受到用户的重视,特别是用电池供电的穿戴式设备尤其明显。

在电池供电的产品中,系统功耗作为产品性能指标中位列第一位的,产品的待机时间决定了这个产品的成败。试想一下,一个功能强大但待机时间只有几天与一个功能合适但待机时间长达几个月的产品,用户选择频繁更换电池还是选择非必须的功能。

嵌入式系统低功耗设计需要全面分析各因素,统筹规划,全方面解决功耗才能达到真正的低功耗。功耗可通过公式:P=I*V*T计算,其中I:电流;V:电压;T:工作时间。嵌入式系统功耗应从这3个方面入手解决。

嵌入式系统功耗由待机电流和运行电流组成。待机电流指系统处于睡眠状态下消耗的功耗,产品不同功耗的功耗也不尽相同,最低可达1uA以下。同时MCU作为系统核心,在系统功耗消耗往往占据大头,其一般依赖于以下几点:

  • MCU芯片尺寸或晶体管数量

  • MCU供电电压

  • MCU时钟频率

  • 外设数量

  • 合理运行模式

  • 工作时间

嵌入式产品功耗并非选择一个低功耗单片就能彻底解决,而是由单片机功耗和外围电路功耗等组成,所以在设计上应该从选型、硬件设计、软件开发多方面同时入手优化。

1:选型:

 选型是一个系统工程,需要兼顾性能、成本、供货、交期等多种因素。

  • 选择合适的MCU内核:MCU内核选型以“够用就好”为原则。在8位机能满足系统需求时,就没有必须选择当前更为流行的32位机;在32位机中可选择cortex-m3/m0等不同构架时,选择m0。单片机的构架越复杂,集成度越高,功能越强大,就意味着片内集体管越多,往往总漏电流也越大。虽然目前ARM结构的32为单片机大行其道,但是也有很多芯片厂商的低功耗8位单片机产品可供选择,如ST的STM8L系列,Silicon Labs的EFM8系列等。

  • 选择低电压供电,更宽的电压范围的MCU:MCU供电电压低,可以有效降低功耗。更宽的供电范围意味着可延长电池的使用时间,不至于电池电压下降后,MCU就无法正常工作。

  • 选择多更多低功耗模式的MCU:带低功耗模式的MCU,往往具有多种不同的运行模式可供选择。不同的运行模式意味着不同的功耗级别,开发者可根据不同的应用级别进入不同的功耗模式。

  • 外围电路芯片选型也执行同样的原则,工作电压尽量低,工作电流/待机电流尽量小,如低功耗LDO,升压芯片等。

  • 在满足同等功能情况下,外部器件选型应优先选择带触发输出功能的器件而非需查询的器件。触发输出器件可在达到触发条件之后通过中断唤醒MCU,处理触发逻辑,平时MCU可一直处于睡眠状态。而查询类器件需MCU做定时唤醒功能来查询外部器件状态。

2:硬件设计

  • 外围电路电源管理:对于不需要一直工作的外围器件,不工作时应关断该部分电源已达到最低功耗。可采用MOS管电路配合MCU控制实现局部电源开关实现电源管理。

  • 在GPIO口输入输出设计上应该注意触发时的电平状态,是否存在待机模式下漏电可能。如普通电路设计上,按键一般设计为低电平有效,通过上拉电阻确定在普通状态下的电平。在低功耗系统中,系统基本处于睡眠状态,按钮须用于外部中断唤醒,无法通过软件来设置GPIO状态达到节能状态。此时若使用上拉方式,上拉10K的电阻,就意味着300uA的电流消耗。这种应用就应该改为默认是低电平,按下按钮为高电平有效,可有效降低功耗。

  • 关注上拉/下拉电阻值,如I2C电路必须使用上拉电阻,该上拉电阻阻值在低功耗产品中,既影响I2C总线通讯速度,又影响系统功耗,应综合取舍。

3:嵌入式软件设计

  • 降低时钟频率:更高的时钟频率意味着更快的MCU运行速度,那么MCU内部CMOS电路就更快的开关频率,导致更高的运行电流和待机电流。在低功耗软件设计中,进入睡眠模式后应关闭倍频。

  • 合理使用低功耗MCU的多种待机模式:低功耗MCU都具有不同的待机模式,同时不同的待机模式具有不同的功能和不同的功耗。在某些深度睡眠模式下可能需要特殊的唤醒方式,唤醒后处理方式也不尽相同。合理的配置进入不同的待机模式/唤醒模式,对于延长待机时间有重要意思。

  • 睡眠状态下尽可能使用中断唤醒:一般的低功耗单片机中断都具有唤醒功能,在软件设计时就应使用这些中断达到睡眠状态快速唤醒,避免过多的定时唤醒。

  • 合理处理外设:使能的外设越多,功耗越大。不需要使用的外设,一定要关闭,需要临时使用的外设只能在使用期间使能,使用完成后立即关闭。进入睡眠状态下只开启需要唤醒的外设。

  • 合理配置GPIO:GPIO在唤醒后,处理对应功能才恢复对应GPIO口,如需内置上拉/下拉功能在此时才使能,使用完成后立刻恢复,避免由于上拉或下拉形成回路产生不必要的功耗。在未启用对应GPIO功能状态时,如果此GPIO口带上拉,设置为高电平输出;如此GPIO带下拉,设置为低电平输出。

  • 合理配置未使用的GPIO口:应将未使用的GPIO口输出至高电平或低电平

  • 重点关注模拟接口:模拟功能一般都是耗电大户,在MCU使用中最常使用的AD/DA功能,在软件设计中应重点关注,控制使用模拟功能的时间。

  • 合理使用DMA和FIFO缓冲区:DMA控制器是功能强大的可降低功耗的工具。DMA通过分担CPU的数据传输任务来提高性能,同时减少CPU运行时间。

  • LED:LED在低功耗系统中也是耗电大户,可通过PWM方式驱动LED,有效降低功耗。

  • 测量功耗时,断开调试器。由于连接调试器后,调试器会拉高/低当前连接芯片的调试口,会导致功耗异常。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章