• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于F281x DSP的多通道信號到達(dá)時延測量方法

      2014-04-29 05:13:40樊長虹楊華升管文輝
      電子世界 2014年17期

      樊長虹 楊華升 管文輝

      【摘要】利用TMS320F281x DSP的捕獲功能,軟件實現(xiàn)了多通道傳感器信號到達(dá)時延測量。在DSP多個事件管理器的周期交替中斷中讀取捕獲值,消除了到達(dá)時延測量時可能出現(xiàn)的周期倍差。該測量方法充分了發(fā)揮DSP硬件功能組合靈活特性,簡化了外圍電路的硬件設(shè)計。

      【關(guān)鍵詞】F281x DSP;捕獲功能;信號時延測量

      1.引言

      超聲波測距定位、麥克風(fēng)語音定位等都需要實時而精確地測量不同傳感器信號之間到達(dá)時延,然后送給DSP進(jìn)行計算求解。時延精確測量可以分為粗測和精測,粗測通常采用可編程邏輯器件作為計數(shù)器來獲得時差,精測時通過譜估計方法獲得信號相位差,然后對粗測時差數(shù)據(jù)進(jìn)行修正。本文在某型超聲波定位系統(tǒng)中利用TMS320F28xx DSP的捕獲端口直接測量多個超聲波傳感器信號到達(dá)時差,然后對A/D采集的多路波形信號采用FFT相關(guān)方法來獲得相差。

      該方法的粗測和精測均由DSP完成,簡化硬件設(shè)計。下面主要介紹采用DSP捕獲端口直接測量時差的方法。

      2.捕獲端口時差測量難點

      現(xiàn)有的多種DSP(或MCU)都具有多個捕獲端口,很多研究者都考慮過采用捕獲端口獲取各通道觸發(fā)信號來計算信號到達(dá)時差。假設(shè)某個定時器周期為P,該定時器同時作為兩個捕獲端口CAP1和CAP2的時鐘。CAP1和CAP2分別連接外部通道Chan1和Chan2。當(dāng)Chan1和Chan2的觸發(fā)信號在同一個定時器周期內(nèi)到達(dá)時,分別讀取CAP1的捕獲寄存器時間值CAP1Counter和CAP2的捕獲寄存器時間值CAP2Counter,則CAP2Counter-CAP1Counter即為所測時差。但實際上兩路觸發(fā)信號通常在不同的定時器周期到達(dá),如果仍以CAP2Counter-CAP1Counter作為所測時差,則有可能帶來n*p個時鐘誤差(n為兩路觸發(fā)信號所差的定時器周期數(shù))??刹捎枚〞r器周期中斷中計數(shù)的方法來解決信號到達(dá)時差大于一個定時周期的問題:開啟定時器的周期中斷,設(shè)置周期中斷次數(shù)為TPCounter,在每個周期中斷中對TPCounter增1;當(dāng)Chan1通道觸發(fā)信號觸發(fā)CAP1時,在該捕獲中斷函數(shù)中記錄當(dāng)前的TPCounter為TPCounter1,同樣Chan2通道觸發(fā)信號對應(yīng)的TPCounter為TPCounter2,則兩路信號的到達(dá)時差為:

      (TPCounter2*P+CAP2Counter)-(TPCounter1*P +CAP1Counter)

      上述測量方法原理上是可行的,但考慮到DSP的中斷處理本質(zhì)上是串行實現(xiàn)的,必須考慮臨界狀態(tài)的極端情況。由于定時器周期中斷處理必須一定的時間,假如當(dāng)定時器周期中斷中讀到一個很小的CAP1Counter值,該值小到不足以區(qū)分該次觸發(fā)是當(dāng)前定時周期內(nèi)產(chǎn)生的,或者是上個定時器周期內(nèi)產(chǎn)生的但未及時被讀取的。此時如果不能區(qū)分,則時差測量時可能會出現(xiàn)一個定時器周期的誤差。

      下面對TMS320F281x片上資源分析,給出一種可靠的解決方法。

      3.解決方法

      TMS320F281x具有兩組事件管理器A和B。以事件管理器A為例,它具有兩個16位定時器Timer1和Timer2,同時具有3個捕獲端口CAP1、CAP2和CAP3,以CAP1和CAP2為示例進(jìn)行分析。Timer1和Timer2都可以分別設(shè)置各自的時鐘周期數(shù)、計數(shù)初值,并各自計數(shù)滿后產(chǎn)生相應(yīng)的周期中斷。當(dāng)設(shè)置Timer1和Timer2的時鐘為150MHz而最大周期數(shù)為0xFFFF時,每經(jīng)過約436.9微秒會各自產(chǎn)生一次周期中斷。

      新方法設(shè)置Timer1和Timer2兩者的周期中斷交替進(jìn)行,然后在周期中斷中對捕獲進(jìn)行查詢來測量時差,避免前述可能出現(xiàn)無法正確確定觸發(fā)信號所到達(dá)周期。主要處理流程如下:

      1)初始化

      設(shè)置Timer2和Timer1周期都為0xFFFF,并且Timer2計數(shù)器初始值為0x8000,以使Timer2周期中斷超前Timer1周期中斷半個周期;設(shè)置CAP1和CAP2捕獲模式。啟動Timer1和Timer2,并使能二者周期中斷,等待兩個通道觸發(fā)信號到來。

      2)Timer2周期中斷函數(shù)處理

      由于Timer2超前Timer1,因此Timer2周期中斷函數(shù)先被調(diào)用。讀取CAP1和CAP2的寄存器,判斷是否已被觸發(fā)。若CAP1已被觸發(fā),則TPCounter1=TPCounter;若CAP2已被觸發(fā),則TPCounter2=TPCounter。

      3)Timer1周期中斷函數(shù)處理

      讀取CAP1和CAP2的寄存器,判斷是否已被觸發(fā)。如果CAP1已被觸發(fā),并且讀取的數(shù)值不小于0x8000,那么可以確定該觸發(fā)一定發(fā)生在上一個Timer1周期中(因為Timer2已經(jīng)讀取過上個Timer1周期的前半個周期中是否存在觸發(fā)),則TPCounter1=TPCounter;反之,如果CAP1已被觸發(fā),并且讀取的數(shù)值小于0x8000,可確定該觸發(fā)一定發(fā)生在當(dāng)前Timer1周期中(因為小于0x8000的CAP1已經(jīng)被Timer2周期中斷函數(shù)中讀?。瑒tTPCounter1=TPCounter+1。對CAP2同樣處理。退出周期中斷函數(shù)時,TPCounter=TPCounter+1。

      4.試驗結(jié)果

      為驗證新方法有效性,采用安捷倫3320A信號發(fā)生器作為信號源,安捷倫DSO6034混合信號示波器作為時差測量儀器。

      4.1 小時差信號測試

      測量兩路時差小于定時器周期的信號:

      1)捕獲模式設(shè)置:CAP1設(shè)為上升沿捕獲,CAP2設(shè)為下降沿捕獲。

      2)信號源設(shè)置:設(shè)置3320A輸出信號為周期50KHz占空比50%幅度3V的方波,也即上升沿和下降沿時差為1/(100K)=10us,10.000us對應(yīng)150MHz晶振的1500個周期。

      3)信號輸入與測試:3320A輸出信號直接送給兩路捕獲,共測量10000次。9995次測得時差為1500個晶振周期,2次測得時差為1499個晶振周期,3次測得時差為1501個晶振周期,也即最大測量誤差為±1個晶振周期。

      4.2 跨周期時差信號測試

      測試兩路時差大于定時器周期的信號:

      1)捕獲模式設(shè)置:CAP1設(shè)為上升沿捕獲,CAP2設(shè)為下降沿捕獲。

      2)信號源設(shè)置:設(shè)置3320A輸出信號為周期500Hz占空比50%幅度3V的方波,也即上升沿和下降沿時差為1/1000=1000us,1000us對應(yīng)150MHz晶振的150000個周期。

      3)信號輸入與測試:3320A輸出信號直接送給兩路捕獲,共測量10000次,其中5949次測得時差為150000個晶振周期,其余時差值中最大150002個晶振周期,最小149997晶振周期,沒有發(fā)送過測量誤差為Timer1周期整倍數(shù)的情況。測量誤差增大是因為F281xDSP板卡本身晶振偏差所引起的。

      5.結(jié)論

      本文利用TMS320F281x DSP兩組事件管理器交錯周期中斷方法,實時讀取多路捕獲端口的寄存器捕獲時間值,無論對小時差或者較大時差均可較精確測量,長期試驗表明了該方法精確可靠。

      參考文獻(xiàn)

      [1]TMS320F281x Data Sheet(Rev.F).

      北宁市| 峨眉山市| 宾川县| 阿城市| 广东省| 山东省| 东至县| 建阳市| 伽师县| 赤峰市| 巫山县| 赣州市| 福清市| 桦南县| 南丰县| 蓬溪县| 芜湖市| 寿阳县| 吉木萨尔县| 拜城县| 浦城县| 耒阳市| 景宁| 漳平市| 柘城县| 陕西省| 永定县| 广水市| 乡宁县| 金堂县| 巴楚县| 东源县| 东台市| 抚松县| 绥宁县| 毕节市| 轮台县| 岚皋县| 扬中市| 澄江县| 太仆寺旗|