经过克里斯弗朗西斯
使用低功耗微控制器并尽可能使其“睡眠”是一种公共功耗技术,因为它们可以通过内部或外部时钟或内部或外部事件来唤醒。将PIC 8位XLP设备作为示例(所谓的纳瓦图形设备),它们在1.8V下具有3V和20NA的睡眠电流。这要求关闭所有I / O引脚的设置和状态。看门狗定时器,欠压复位,固定电压参考和振荡器都需要禁用,并且所有外围设备不活动。
使用看门狗定时器通常会在1.8V时将电流增加到大约300nA,在3V时增加到500nA。这很好,但你也需要考虑醒来后消耗的能量。时钟启动时间通常引用为5μs的HFINTOSC,这是500kHz时钟,从中导出高频时钟。当您考虑对外部事件的响应而不是功耗问题时,这一点很重要——如果时钟不运行,它可能不会占用太多的功耗。
然而,特定设计的实验结果需要深入研究振荡器启动的本质,因为它在数据表中不合格。有一个标志,它允许你检查内部振荡器是否在运行,尽管如果你实际上从内部振荡器运行,这是很少的用途,因为如果它没有运行,你的软件将无法检查标志。在两个时钟源之间切换时更有用。有两个其他标志,允许您检查高速内部振荡器是否在2%和0.5%的精度,但这些精度的启动时间没有给出。
如果你只是想执行几条指令(在我的测试中是10条),然后在没有时钟检查的情况下再次入睡,这可以在10μs左右完成。虽然这可能看起来是一个很长的时间,10个指令与16MHz时钟(4MIPS),你必须记住,时钟只在大约三分之一的全速运行在启动。测试程序应该有10个指令周期,平均大约1MIP。假设你没有时间限制,这本身就不是问题。这10条指令(包括SLEEP指令)的典型启动电流如下图所示,Y刻度为100欧,即50mV = 500μA。

因此,在10.36μs下,电流约为500μA。如果微控制器每16毫秒被watchdog唤醒来执行这10条指令,那么平均电流(3V)大约为500nA + 500μA * 10.36μs/16ms = 824nA。这是一个很好的数字,尽管你可能想要执行超过10个指令,可能想要比每16毫秒执行一次更频繁。
在应用程序中,我需要调查时钟启动,我经历了不稳定的时间从PWM后醒来。如果你只是想运行一些代码,而没有任何时间关键,那么你可以简单地忽略所有的时钟标志,并在醒来时运行代码,然后尽快回到睡眠状态。然而,如果你有一些时间等关键如UART什么的PWM,虽然不是关键,不能与一个流浪的时钟,你需要意识到发生了什么时钟在启动时,它可以在你的功耗产生重大影响。
如果你等待时钟精确到2%,电流[100欧姆电压]看起来是这样的:

因此,您现在正在等待额外的125μs,以稳定,平均电流为10.9μA,而在前的示例中为0.8μA - 超过电流的10倍。虽然您可能会争辩说,当时钟仍在升高时,您可以简单地运行PWM,但波形是在启动期间的时钟频率的播放性质并不明显。它加速并在通向全工作频率的路上速度降低。这可以在上面的迹线中部分地看出,在大约20μs后电流下降再次爬上。通过当前监视器的软件测试确认了这种效果,其中标称250ns脉冲宽度在起始时为644ns,但然后在其前往目标250ns的路上再次减少之前增加到1.1μs。
使用PLL,波形中的当前尖峰实际上是从500kHz内部时钟导出的高速时钟。这与额外的后缩放器PLL分开,可用于将频率从16MHz增加到32MHz。
等待振荡器稳定为0.5%的精度结果:

在这里,早期时钟脉冲和晚期时钟脉冲的时间被放大了。在启动的早期阶段,500kHz时钟是172kHz。在初始加速之后,可以看到500kHz时钟的2μs周期。平均电流为22.5μA,而上一个示例的平均电流为10.9μA。
从功耗的角度来看,电源预计将与时钟速度大致成比例,所以运行速度较慢需要更长的时间来执行,但是功耗将按比例地降低,因此无论如何,执行这10个指令所需的能量将大致恒定。时钟速度。这实际上不是这种情况 - 处理器在更高的时钟速度下更有效。在使用内部振荡器的16MHz时,3V下方需要1.4mA,并且在8MHz处需要0.9mA(数据表图)。因此,更快的时钟速度更有效。当4xPLL用于导出32MHz时钟时,这不是真的。通过4xPLL,电流速度大于加倍。
总之,如果需要等待准确的时钟,时钟启动时间的影响可能很重要。如果您有非时间关键的软件以及时间关键的软件,那么您可以通过组织软件来最小化功耗,以便首先运行非时间关键软件,然后在继续之前检查时钟精度标志。如果您的软件都不是时间至关重要,那么您可以简单地忽略时钟精度标志。否则在组织软件并选择时钟时需要关心,以便最小化功耗。虽然这些测试在PIC微控制器上进行,但是其他微控制器的详细操作可能需要仔细调查以最大限度地减少功耗。
《华盛顿邮报》低功耗微控制器设计时钟启动首先出现了微控制器的技巧。
提交:•专家见解那技术+产品




