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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于ARM Cortex-M3的過采樣技術(shù)

          基于ARM Cortex-M3的過采樣技術(shù)

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


          3 LM3S8962實現(xiàn)ADC過采樣
          3.1 Cortex-M3內(nèi)核特點介紹

          在ADC過采樣設(shè)計中,選用TI公司ARM Cortex-M3芯片,主要原因是其功能強大、高性價比的Cortex-M3內(nèi)核,使過采樣的效率與精度得到進一步提升。該內(nèi)核具有如下特性:
          (1)采用ARMv7M架構(gòu),在ARMv4T架構(gòu)基礎(chǔ)上擴展了36條指令。
          (2)基于哈佛結(jié)構(gòu),數(shù)據(jù)與指令可同時從存儲器讀取,并行執(zhí)行多個操作,加快程序執(zhí)行速度。與ARM7TDMI-S相比,比ARM指令每兆赫效率提高了35%,比Thumh指令效率提高了70%。
          (3)帶有多種睡眠和喚醒模式,實現(xiàn)產(chǎn)品的低功耗。
          (4)單周期乘法、乘-加、硬件除法指令,實現(xiàn)快速運算。
          (5)低延遲中斷處理:支持8層硬件中斷嵌套,末尾連鎖功能,高優(yōu)先級中斷遲來處理。
          3.2 過采樣的軟件實現(xiàn)
          (1)外設(shè)初始化。
          在軟件實現(xiàn)過采樣之前,必然要對各個模塊進行初始化和配置。初始化定時器、ADC、UART等模塊,定時器模塊用來提供系統(tǒng)時鐘周期,配置ADC的觸發(fā)模式和采樣速率,利用UART將測量值傳遞給PC,方便查驗是否正確。
          (2)產(chǎn)生PWM信號,作為噪聲。
          為了保證過采樣原理應(yīng)用的可靠性,引入噪聲激勵信號。而為了避免激勵噪聲出現(xiàn)的誤差,使用內(nèi)部的PWM信號發(fā)生器產(chǎn)生周期性和對稱性很好的PWM波,作為激勵噪聲。產(chǎn)生噪聲步驟如圖1所示。

          本文引用地址:http://www.ex-cimer.com/article/151003.htm


          (3)數(shù)據(jù)的采集、濾波及抽取。
          在過采樣中所做的數(shù)字平均濾波僅提高了平滑度,精度卻并沒有增加,抽取過程才是真正意義上的提高精度。額外的K次采樣,按照常規(guī)平均那樣進行累加,但并不是直接將結(jié)果除以M,而是右移N位(N是期待所增加的額外精度),得到更精確的采樣結(jié)果。
          過采樣算法如圖2所示。對TI的LM3S8962芯片,將10位AD值的精度提高到12位的方法,直接調(diào)用寄存器讀取函數(shù)HWREG訪問FIFO緩存區(qū),經(jīng)過兩次循環(huán),將從FIFO中收集到的16個10位轉(zhuǎn)換值相加,產(chǎn)生一個14位結(jié)果,右移2位后就得到所希望的12位AD值。



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