我们检查了微控制器中可用的几种不同的低功率模式,以及这些低功率模式如何影响能耗和唤醒时间。低功率模式是减少微控制器使用的能量的主要技术之一,但这并不是开发人员可用的唯一技术。在这篇文章中,我们将研究我最喜欢的五种用于降低微控制器能耗的技术。
技术#1 - 使用DMA控制器
在微控制器中,CPU通常是渴望使用最新的功率的设备。外围设备肯定会导致能源消耗,尤其是在有USB或以太网控制器的情况下,但是优化能源设备的第一步之一就是尽可能长时间保持CPU的状态。应用程序将定期唤醒,尽管可以将数据移动到诸如从UART接收字节并将其存储在缓冲区中的数据。避免不断唤醒CPU以处理移动数据的一种方法是使用直接内存访问(DMA)控制器。
DMA允许开发人员保持其CPU入睡,而是使用较低的功率外围设备来执行CPU否则会做的事情,请在微控制器周围移动数据。 DMA控制器可用于多种目的,例如:
· 将数据从外围移动到内存
· 将数据从内存移动到另一个内存位置
· 将数据中的数据移至外围
关于如何设置DMA的细节将从一个微控制器到另一个微控制器,但是好处是,CPU可以保持低功率状态,直到需要实际唤醒并处理DMA传输的数据为止。
技术#2 - 使用时钟节流
您可能会从微控制器课程或在线阅读中记得,微控制器的能量消耗取决于时钟频率。频率越高,能耗越高。应用程序不一定总是需要完全倾斜。实际上,根据需要完成的操作,可以将时钟限制为最小化所消耗的能量的有效技术。
显示了NXP Kinetis-L微控制器中的运行模式电流与核心频率。从这个数字中,读者可以看到,节流频率将减少能耗。还可以看出,禁用未使用的外围设备如何在微控制器消耗的能量中有所作为。
究竟何时以及如何防风频率完全取决于应用程序。某些应用程序可能仍然希望一直倾斜。在其他情况下,可以将频率从最大值切成两半并以这种方式运行。在其他情况下,根据应用程序的操作,动态更改时钟可能是有意义的。只需注意,如果您决定动态使用时钟节流,则可能需要动态更改外围寄存器设置以补偿更改。
技术#3 - 利用编译器优化
现代编译器提供嵌入式的优化设置,可以改善给定代码的执行时间。例如,大多数编译器为开发人员提供优化设置,以执行循环展开和内联功能。尽管这些只是两个示例,但开发人员可以使用这些技术来生成更快执行的代码。执行更快的代码即使确实使用了更多的代码空间,也将使在低功率模式下花费更多时间,从而减少应用程序消耗的能量。
我建议您尽快安排一些时间来查看编译器手册,并查看其内置功能,以帮助您更快地执行代码。虽然似乎节省了几十个时钟周期并不重要。这些时钟周期可以在数周甚至几个月的时间内迅速增加。
技术#4 - 利用低功率(LP)外围设备
如果您仔细阅读了微控制器数据表,您会注意到,专为低功率操作而设计的微控制器通常包括与“标准”外围设备分开的低功率外围设备。例如,STM32微控制器包括LP计时器。这是一个计时器外围设备,不包括所有额外的铃铛和哨子,但被设计为在低功率环境中操作。在优化甚至开始低功率设计时,观察这些低功率外围设备并利用它们可能是减少产品能源消耗而无需额外努力的好方法。
技术#5 - 在框外思考
有时,您可能会发现您需要真正思考开箱即用才能优化能量。几年前,我从事电池运行的医疗产品,必须在电池上持续12至14小时。我们选择了所需的电池,然后继续进行设计。好吧,工业设计师认为电池太大了,没有告诉电子或软件团队,他们决定大量收缩电池,以便他们可以创建一个更小,更性感的设备。该设备的第一次测试表明,电池只能持续约4-5个小时!
工业团队当然已经使用了生产工具,而且没有回到更大的电池。唯一的选择是疯狂地优化。尽管在书中使用了所有可能的优化技术,但我只能使设备持续约8个小时。那么,怎么办?事实证明,该产品在船上有一个USB主机,该主机在MSD/CDC设备上连接了自定义存储设备。 USB使用大量的能量,如果不需要的USB可以关闭,则可以节省很多能量。
我们必须从框框外面思考,然后启动设备后,我们将禁用USB设备,拨动USB主机供电,当需要USB设备时,我们在USB D+和D端口上键入了一条消息,该端口发出信号USB主机将恢复电源。这是疯狂的,丑陋的,一个工作的工作,但成功的电池寿命超过了14个小时。有时,您只需要在盒子外面思考即可获得所需的能源效率。
结论
在这篇文章中,我们研究了一些其他技术,开发人员可以利用这些技术来最大程度地减少其微控制器的能耗。使用这些技术以及低功率模式可以大大降低设备能源消耗。当您致力于优化微控制器的能源应用程序时,请不要忘记选择将为您提供最大爆炸的技术。能源优化通常会成为一个黑洞,因为时间投资随着每次迭代而降低回报。