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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 嵌入式系統(tǒng)的低功耗軟件設計

          嵌入式系統(tǒng)的低功耗軟件設計

          作者: 時間:2012-05-07 來源:網(wǎng)絡 收藏


          *關(guān)于多媒體芯片(QCP1880):

          (1) VDD( Power for OperaTIon Mode Module);(2)IOVDD (Power for All IO Module);(3) VDD_ON( Power for ByPass Mode Module)。說明:1.切斷VDD和保持PDEN為低,QCP1880耗電將低于200mA。2. QCP1880進入IDLE(空閑)狀態(tài),耗電在10mA左右。3. QCP1880進入最省電狀態(tài)后,其GPIO口不能保持。如果進入這種狀態(tài)后,要讓GPIO口保持高,則外部要通過上拉電阻接到IOVDD,如果要 GPIO口保持高低,則外部要通過下拉電阻接到地。4.切斷VDD和保持PDEN為低后,QCP1880里的程序?qū)G失,重新裝載的時間比較久 (500ms左右)。

          在應用方面芯片主要功能是:MP3/MIDI/AAC/AMR/MP4回放;AMR、MP4錄制;拍照和圖片回放;USB/UDISK;GPIO接口;CODEC(聲卡驅(qū)動);SD卡文件系統(tǒng)。

          該芯片在待機時,電流為10mA,切斷主電源電流能下降到mA級。工作時,電流較大,且根據(jù)功能的不同而不同。多媒體芯片能夠自動到待機狀態(tài)。不能達到要求,必須要讓其進入斷電狀態(tài)。又因為涉及模塊比較多,所以不能簡單的直接關(guān)閉QCP1880。針對于本嵌入式系統(tǒng)不能隨意切斷QCP 電源的原因,所以采用了查詢的方法。即在CPU進入睡眠模式之前會查詢QCP1880的狀態(tài),當LCD和背光都是熄滅的狀態(tài)下,會切斷QCP1880的主電源。(因為LCD部分電流較大,且頻繁下載QCP的效率低下,所以在LCD和背光都亮時不會切斷QCP的主電源)。

          圖3 QCP1880的電源由三組電源組成

          后同樣有3類,其中CPU和普通外設的流程比較簡單,所以略過。QCP存在一個下載的過程(切斷電源時,QCP內(nèi)部的代碼已經(jīng)丟失),如下載完全功能的版本需要的時間比較長,在一些對時間要求嚴格的地方有些問題(如按鍵時指示燈的響應,指示燈是用QCP1880控制的)。這里采用的是先下載一個比較小的版本,完成那些需要快速響應的操作,然后再下載完全功能的版本,當然這跟省電的關(guān)系不大,只是省電引起的一個小問題。值得注意的是此處需要 QCP在切換版本時GPIO能保持不變。喚醒后,系統(tǒng)一般會先調(diào)用QCP GPIO的功能,每個QCP 的API都有調(diào)用QCP_LOCK();所以在這里進行裝載工作。在處理上,系統(tǒng)也分了3類來處理這些外設,其中基帶芯片部分和一般外設一類,LCD處理一類,QCP芯片部分處理一類?;鶐酒糠值奶幚砗蚅CD的處理完全獨立,LCD會影響QCP芯片的處理。QCP的處理流程圖見圖4。

          圖4 QCP的處理流程圖


          關(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); })();