微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 嵌入式应用中的能耗调试

嵌入式应用中的能耗调试

时间:04-17 来源:21ic 点击:

时的另一种常见错误。

图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。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top