新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 嵌入式应用中的能耗调试

嵌入式应用中的能耗调试

作者: 时间:2011-02-04 来源:网络 收藏

图3 能耗函数

为了避免对RX缓冲区进行轮询,一种常见的变通方法是启用RX中断并将MCU置于睡眠模式。完成之后,很容易看到能耗节省是巨大的。当我们关闭处理器,电流降至1.40mA(见图2b)。现在,当LEUART接收到数据,它就会被唤醒并通过TX缓冲区将其传送回去。


当中断被触发时,电流尖峰将达到2.5mA,而剖析程序会精确定位到中断例程(见图4a)。不过,电流将在这个尖峰值保留较长的一段时间,而通过点击图表,就可能会发现在使用UART通信时的另一种常见错误。

图4 带有LEUART TX轮询的LEUART RX中断(a),在接收字节之间处于睡眠模式下的EFM32(b),以及深睡眠模式下的EFM32(c)


void pollLEUARTTX(void)
{while ( !( LEUART0 -> STATUS LEUART_STATUS_TXC) );}


在发送数据之后,用户会设置一个while循环以等待传输完成。无疑,这会使处理器过长时间保持在运行模式之下。这段循环可以被中断所取代,一旦传输完成,中断就会唤醒处理器。通过这样做,就将再次降低电流消耗量(见图4b)。


现在,在每个接收到的字节之间,处理器都进入睡眠模式,降低了电流。字节传输的完成无须处理器的干预,所以就不需要轮询缓冲区以获知传输何时完成。将循环替换为中断例程是一种更优雅、更节能的解决方案,正如这两种方法的不同剖析图所示。

深睡眠
EFM32 MCU的LEUART模块可以在深睡眠模式下工作。在这种模式下,高频振荡器被关闭,但低频振荡器(RC或晶振)仍在运行并给LEUART提供时钟。如果将EFM32置于深睡眠模式并重复上述例子,能耗将降至微安量级。


为了能够直观地显示这些电流数值,剖析程序从线性坐标切换到对数坐标。在深睡眠模式下,电流现在是1μA,而接收到帧时的尖峰值是80μA(见图4c)。从第一种方法到最后一种配置,节能倍数超过了1000。


上一页 1 2 3 下一页

关键词:

评论


相关推荐

技术专区

关闭