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

          新聞中心

          EEPW首頁(yè) > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > 低功耗應(yīng)用中µC外圍設(shè)備的選擇

          低功耗應(yīng)用中µC外圍設(shè)備的選擇

          作者: 時(shí)間:2010-09-07 來(lái)源:網(wǎng)絡(luò) 收藏

            UART 數(shù)據(jù)用 10,922 波特或 8,192 波特的 UART 接收。由于 UART 在傳輸中間點(diǎn)對(duì)數(shù)據(jù)進(jìn)行采樣以補(bǔ)償抖動(dòng),因此該點(diǎn)已經(jīng)被選擇為接收 UART 的采樣點(diǎn)。在沒有行抖動(dòng)的理想情況下,10,922 波特 UART 對(duì)第三數(shù)據(jù)位的開始兩次讀數(shù)都會(huì)是錯(cuò)誤的而8,192 波特的UART 由于會(huì)完全遺漏第三位,很快就將出錯(cuò)。由于應(yīng)用的理想時(shí)鐘是實(shí)時(shí)時(shí)鐘模式,這使得在環(huán)境中處理很困難。解決這一問(wèn)題的最好辦法就是將 &;C 與調(diào)制技術(shù)結(jié)合使用,用 32kHz 振蕩器提供非常精確的 2,400 波特,并完全能支持9,600 波特(參見圖 3)。

            

            圖 3:在 9600 波特傳輸時(shí)采用時(shí)鐘調(diào)制的 32Khz 驅(qū)動(dòng) UART

            通過(guò)混合兩個(gè)時(shí)鐘除數(shù)解決錯(cuò)誤,總體積累的錯(cuò)誤消失,數(shù)據(jù)接收正確。這種方法對(duì)于9,600 波特或以下的 UART 通信很有效。對(duì)于高速通信,幾個(gè) &;C 監(jiān)視 UART Rx 行的邊緣躍遷并觸發(fā) ISR 啟動(dòng)內(nèi)部高速振蕩器,驅(qū)動(dòng) CPU 并處理中斷。這使 &;C UART 能夠接收高速數(shù)據(jù),而不必在 UART 空閑期間保持一個(gè)啟動(dòng)的高速時(shí)鐘。如果使用外部振蕩器或內(nèi)部振蕩器頻率太低,則由于啟動(dòng)高速振蕩器需要一定的時(shí)間,第一次傳輸將失效。為克服這一限制和效率損失,設(shè)計(jì)人員應(yīng)該考慮使用能夠喚醒并及時(shí)從 32kHz 或停機(jī)模式激活的處理器,從正在傳輸?shù)?UART 恢復(fù)首次傳輸?shù)臄?shù)據(jù)。例如,系統(tǒng)時(shí)鐘需要在 25µs 內(nèi)啟動(dòng),才能拾取起始位的中間點(diǎn),從而正確接收 19,200 位的傳輸。

            許多低功耗應(yīng)用通過(guò) UART 將 µC 連接到 RS-485 傳感器網(wǎng)絡(luò)。支持尋址和多處理器(9 位)模式的 UART 非常適合于這種網(wǎng)絡(luò)。當(dāng)?shù)?9 位為 1(代表是一個(gè)地址)時(shí),這些 UART 會(huì)生成一個(gè) ISR,讓處理器能夠在其它傳感器通過(guò)系統(tǒng)發(fā)送數(shù)據(jù)時(shí)保持休眠狀態(tài)。某些 µC 會(huì)更進(jìn)一步,在 UART 中加入地址匹配,僅在第 9 位是 1 且地址與在剩余 8 位中收到的數(shù)據(jù)匹配時(shí)才喚醒系統(tǒng)。

            模擬器件

            模擬器件模擬器件是最早的操作器件。模擬器件已經(jīng)發(fā)展數(shù)十年,它是穩(wěn)定電源、為高速晶體電路提供過(guò)濾和穩(wěn)定性的必要器件,對(duì)監(jiān)控來(lái)自自然界的輸入信號(hào)也必不可少。

            模擬器件模擬器件是最早的操作器件。模擬器件已經(jīng)發(fā)展數(shù)十年,它是穩(wěn)定電源、為高速晶體電路提供過(guò)濾和穩(wěn)定性的必要器件,對(duì)監(jiān)控來(lái)自自然界的輸入信號(hào)也必不可少。

            在待機(jī)模式下,模擬器件實(shí)際上不消耗功率。模擬-數(shù)字轉(zhuǎn)換器 (ADC) 斷電快,在待機(jī)模式下,甚至可以被視為一種低功耗應(yīng)用。

            一旦加電,缺點(diǎn)即暴露無(wú)遺。一般來(lái)說(shuō),模擬器件在工作時(shí)需要的電流很大。例如,ADC 工作時(shí)需要的電流達(dá)數(shù)百微安。另外,模擬器件(例如內(nèi)部基準(zhǔn)時(shí)鐘)會(huì)使啟動(dòng)時(shí)間增加幾毫秒,因?yàn)榉€(wěn)定模擬器件需要相對(duì)較大的外部電容。另一種經(jīng)常被集成的器件-集成溫度傳感器-通常是隨溫度改變的二極管電路,也需要相當(dāng)大的電流。

            在低功耗應(yīng)用中有幾個(gè)需要考慮的標(biāo)準(zhǔn)。如果 ADC 有內(nèi)部振蕩器,就沒有必要對(duì)其它系統(tǒng)振蕩器加電來(lái)進(jìn)行轉(zhuǎn)換。在這種情況下,處理器保持?jǐn)嚯姞顟B(tài),只有轉(zhuǎn)換完成時(shí)起,才需要開始工作。像 CPU 一樣,我們可以通過(guò)縮短執(zhí)行時(shí)間來(lái)降低功耗。ADC 轉(zhuǎn)換的速度越快,器件進(jìn)入待機(jī)模式的速度越快。對(duì)于內(nèi)部基準(zhǔn)時(shí)鐘也是這樣。基準(zhǔn)時(shí)鐘啟動(dòng)和穩(wěn)定得越快,轉(zhuǎn)換完成和模擬系統(tǒng)斷電的速度也越快。如果只是偶爾使用 ADC,某些處理器允許采樣時(shí)鐘斷電,讓跟蹤電路保持加電。這樣 ADC 就能夠進(jìn)入較淺的休眠模式。這種功能的負(fù)面影響是,在進(jìn)行轉(zhuǎn)換前,需要花較長(zhǎng)時(shí)間來(lái)讓采樣和保持電路達(dá)到穩(wěn)定。

            轉(zhuǎn)換完成之后,有幾個(gè) µC 集成了直接內(nèi)存訪問(wèn) (DMA) 或先入先出 (FIFO) 緩沖存儲(chǔ)器,能夠?qū)⒍鄠€(gè)轉(zhuǎn)換存儲(chǔ)在RAM 中,而無(wú)需喚醒處理器。在一定數(shù)量的轉(zhuǎn)換到達(dá)之前,處理器會(huì)保持待機(jī)狀態(tài),而不是在每個(gè)轉(zhuǎn)換后喚醒處理器來(lái)將數(shù)據(jù)移入 RAM,這樣就可以降低功耗。

            許多低功耗 µC 內(nèi)置內(nèi)部模擬比較器,可以執(zhí)行簡(jiǎn)單的模擬任務(wù)。有些制造商的比較器允許編程,可以通過(guò)延長(zhǎng)響應(yīng)時(shí)間降低功耗。

            起始點(diǎn)

            總之,µC 的選擇是由終端應(yīng)用最終決定的,因此我們應(yīng)從全面評(píng)估系統(tǒng)功能及其功率要求著手。許多處理器制造商宣稱其器件具備低功耗工作能力,但是不同的應(yīng)用對(duì)“低功耗”一詞有不同的定義。是需要大量集成的速度更高的處理器,還是需要具有極深度睡眠模式的速度更低的處理器,更多地取決于內(nèi)嵌系統(tǒng)的要求,而不是內(nèi)嵌處理器所謂的“低功耗”工作能力。


          上一頁(yè) 1 2 下一頁(yè)

          關(guān)鍵詞: micro 低功耗 外圍設(shè)備

          評(píng)論


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