<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 嵌入式應(yīng)用中的能耗調(diào)試

          嵌入式應(yīng)用中的能耗調(diào)試

          作者: 時(shí)間:2011-02-04 來源:網(wǎng)絡(luò) 收藏

          圖3 能耗函數(shù)

          為了避免對RX緩沖區(qū)進(jìn)行輪詢,一種常見的變通方法是啟用RX中斷并將MCU置于睡眠模式。完成之后,很容易看到能耗節(jié)省是巨大的。當(dāng)我們關(guān)閉處理器,電流降至1.40mA(見圖2b)。現(xiàn)在,當(dāng)LEUART接收到數(shù)據(jù),它就會被喚醒并通過TX緩沖區(qū)將其傳送回去。


          當(dāng)中斷被觸發(fā)時(shí),電流尖峰將達(dá)到2.5mA,而剖析程序會精確定位到中斷例程(見圖4a)。不過,電流將在這個(gè)尖峰值保留較長的一段時(shí)間,而通過點(diǎn)擊圖表,就可能會發(fā)現(xiàn)在使用UART通信時(shí)的另一種常見錯(cuò)誤。

          圖4 帶有LEUART TX輪詢的LEUART RX中斷(a),在接收字節(jié)之間處于睡眠模式下的EFM32(b),以及深睡眠模式下的EFM32(c)


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


          在發(fā)送數(shù)據(jù)之后,用戶會設(shè)置一個(gè)while循環(huán)以等待傳輸完成。無疑,這會使處理器過長時(shí)間保持在運(yùn)行模式之下。這段循環(huán)可以被中斷所取代,一旦傳輸完成,中斷就會喚醒處理器。通過這樣做,就將再次降低電流消耗量(見圖4b)。


          現(xiàn)在,在每個(gè)接收到的字節(jié)之間,處理器都進(jìn)入睡眠模式,降低了電流。字節(jié)傳輸?shù)耐瓿蔁o須處理器的干預(yù),所以就不需要輪詢緩沖區(qū)以獲知傳輸何時(shí)完成。將循環(huán)替換為中斷例程是一種更優(yōu)雅、更節(jié)能的解決方案,正如這兩種方法的不同剖析圖所示。

          深睡眠
          EFM32 MCU的LEUART模塊可以在深睡眠模式下工作。在這種模式下,高頻振蕩器被關(guān)閉,但低頻振蕩器(RC或晶振)仍在運(yùn)行并給LEUART提供時(shí)鐘。如果將EFM32置于深睡眠模式并重復(fù)上述例子,能耗將降至微安量級。


          為了能夠直觀地顯示這些電流數(shù)值,剖析程序從線性坐標(biāo)切換到對數(shù)坐標(biāo)。在深睡眠模式下,電流現(xiàn)在是1μA,而接收到幀時(shí)的尖峰值是80μA(見圖4c)。從第一種方法到最后一種配置,節(jié)能倍數(shù)超過了1000。


          上一頁 1 2 3 下一頁

          關(guān)鍵詞:

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();