多輸入通道之間的相位誤差是數(shù)據(jù)采集系統(tǒng)的重要問題之一。采用六輸入通道模數(shù)轉(zhuǎn)換器件AD73360和數(shù)字信號處理器TMS320F2812設計了多通道數(shù)據(jù)采集系統(tǒng),實現(xiàn)了兩者之間的接口電路和通信程序設計。該系統(tǒng)可用于多路輸入信號的同步采樣,實驗證明了系統(tǒng)的有效性。
多通道數(shù)據(jù)采集系統(tǒng)一般是在一塊印刷電路板上集成了模擬多路開關、程控放大器、采樣/保持器、A/D和D/A轉(zhuǎn)換器等器件,其原理框圖如圖1所示[1]。這類系統(tǒng)雖然可以采集多路模擬信號,但其實只有一路A/D轉(zhuǎn)換器,為了能夠采集多路模擬信號,只能利用模擬多路開關在多路模擬信號之間進行切換。這樣做的好處是可以減少硬件成本和縮小板卡的尺寸,但是當多個模擬信號巡回采樣時,各路信號之間必然存在采樣的時差。
本文利用AD73360、TMS320F2812設計了數(shù)據(jù)采集系統(tǒng),包含6個以上可同時采樣的模擬通道,從而有效地減少了由于采樣時間不同而產(chǎn)生的相位誤差。
1 數(shù)據(jù)采集系統(tǒng)設計
本文設計的數(shù)據(jù)采集卡如圖2所示。A/D轉(zhuǎn)換器AD73360是一個包含6路模擬信號輸入通道的器件,每路通道均包含獨自的信號調(diào)理器、可編程放大器和16位的A/D轉(zhuǎn)換部分。這樣可實現(xiàn)對多路模擬信號的同時采樣,以減小采樣的相位差。數(shù)字信號處理器(DSP)采用TMS320F2812,實現(xiàn)對A/D轉(zhuǎn)換器AD73360的控制和讀取采樣數(shù)據(jù),從而減少了邏輯控制電路。計算機接口電路采用RS232C和RS485標準串行口實現(xiàn)DSP與上位機之間的通信。
1.1 A/D轉(zhuǎn)換器AD73360
AD73360具有6路16位分辨率的同時采樣通道,減少了由于采樣時間不同而產(chǎn)生的相位誤差。各個通道的采樣速率可設為8kHz、16kHz、32kHz或64kHz,都有內(nèi)置的抗混迭濾波器和程控可變增益放大器。可以級聯(lián)使用,最多可將8片級聯(lián)在一起。因此,模擬量輸入通道的最大數(shù)目可擴展到48路。
AD73360使用同步串行接口SPORT與CPU相連。SPORT接口信號線只有6條,不僅節(jié)約了印刷電路板的面積,而且也減小了電磁干擾。DSP基本都支持同步串行接口,所以AD73360與DSP組成的測控系統(tǒng)簡潔高效。
1.1.1 AD73360同步串行通信接口SPORT概述
AD73360同步串行通信接口SPORT包含6條信號線,分別是串行數(shù)據(jù)輸出端SDO、數(shù)據(jù)輸出幀同步端SDOFS、串行數(shù)據(jù)輸入端SDI、數(shù)據(jù)輸入幀同步端SDIFS、同步時鐘SCLK和串行接口使能端SE。該接口有三種工作方式:編程、數(shù)據(jù)以及混合方式。AD73360以“時分多址”的模式輸入和輸出數(shù)據(jù)。其特點是每一個通道的輸出數(shù)據(jù)占用固定的時間片,即使該通道被關閉,該時間片也不會被其他通道占用,此時數(shù)據(jù)輸出端SDO處于三態(tài)。圖3顯示了六個通道全部打開時數(shù)據(jù)輸出端SDO和數(shù)據(jù)輸出幀同步端SDOFS的時間波形,圖4則顯示了通道1、3、5打開時的輸出時間波形。AD73360每次上電或復位以后,自動進入編程狀態(tài),每一個采樣周期輸出一個數(shù)據(jù)輸出幀同步信號SDOFS,如圖5所示。這樣DSP可利用此幀同步脈沖給AD73360寫入控制字。圖6為各管腳的信號時序圖[2]。
1.1.2 AD73360控制寄存器
AD73360有8個控制寄存器,每個都是8位,如表1所示。其中前兩個控制寄存器CRA和CRB用來配置同步串行接口SPORT,可以設置數(shù)據(jù)率、主時鐘速率以及級聯(lián)芯片數(shù)目等參數(shù)。如果多個AD73360級聯(lián),則其CRA和CRB的設置必須完全一致。其余6個寄存器用來控制各個通道的A/D轉(zhuǎn)換器。
向這些控制寄存器寫入數(shù)據(jù)時,要遵循一定的格式??刂谱值母袷饺绫?所示。其中各個部分的含義如下:
(1) :該位為高時,表明這是一個有效控制字。
(2) :讀寫控制。
(3) 芯片地址:芯片級聯(lián)時用于確定接收數(shù)據(jù)的芯片。當該地址為零時,表明當前芯片接收該控制字;若不為零,則芯片將該數(shù)減一,并將控制字從SPORT發(fā)送給下一個芯片。
(4) 寄存器地址:選擇要寫入數(shù)據(jù)的控制寄存器,見表1。
(5) 寄存器數(shù)據(jù):寫入或讀出的數(shù)據(jù)。
由于單片AD73360具有六個同時采樣的模擬量輸入通道,所以特別適合于三相制電力運行參數(shù)測控(三個相電壓和三個相電流同時采樣)以及電機控制等應用系統(tǒng)。
1.2 數(shù)字信號處理器TMS320F2812的多通道緩沖串口McBSP
TMS320F2812是32位的定點DSP,主頻可達150MHz(時鐘周期6.67ns),是目前用于測控系統(tǒng)、電機控制等領域中的熱點產(chǎn)品。芯片資源非常豐富,可簡化外圍電路設計。串行通信模塊包括兩個SCI口和一個SPI口,CAN總線和多通道緩沖串口McBSP,能滿足多種串行通信模式的需要。本文利用TMS320F2812的多通道緩沖串口McBSP實現(xiàn)與AD73360的連接和數(shù)據(jù)傳輸。
TMS320F2812的McBSP有6條信號線。其中3條用于發(fā)送數(shù)據(jù),分別是發(fā)送數(shù)據(jù)端MDXA、發(fā)送幀同步端MFSXA和發(fā)送時鐘MCLKXA。另外3條用于接收數(shù)據(jù),分別是接收數(shù)據(jù)端MDRA、接收幀同步端MFSRA和接收時鐘MCLKRA[3]。
McBSP能與多種串行接口器件直接通信,工作方式靈活,但同時也造成端口配置復雜。McBSP具有38個寄存器,由此可見其復雜程度。這些寄存器可分成四大類:數(shù)據(jù)寄存器、控制寄存器、多通道寄存器和FIFO寄存器。要使McBSP正確工作,必須配置好這些寄存器,這就需要對McBSP的工作機制有深刻的理解。表3列出了部分寄存器,大部分屬于數(shù)據(jù)寄存器和控制寄存器,是在非FIFO和非多通道方式下需要用到的寄存器[4]。值得注意的是,PCR和MFFINT雖然分別屬于多通道和FIFO寄存器,但是在非FIFO和非多通道方式下依然要用到。
這些寄存器中每一位的詳細含義請參閱TMS320F2812技術手冊,其中一些重要參數(shù)將在下面提到。
2 系統(tǒng)實現(xiàn)
在圖2所示的系統(tǒng)框圖中,A/D轉(zhuǎn)換器AD73360將模擬輸入量轉(zhuǎn)換成數(shù)字量,TMS320F2812負責從AD73360讀取數(shù)字量并進行相應的計算,計算結(jié)果則通過RS232C和RS485標準串行口傳輸給上位機。在這個系統(tǒng)中,難點在于AD73360與TMS320F2812的接口設計。
2.1 AD73360與TMS320F2812的通信接口設計
AD73360具有一個同步串行通信接口SPORT與上位機通信,該接口可以很好地兼容現(xiàn)在大多數(shù)的DSP。本文利用TMS320F2812的多通道緩沖串口McBSP與AD73360進行通信。
2.1.1 AD73360與TMS320F2812之間的連接方式
根據(jù)對AD73360的同步串行通信接口SPORT的分析可知,在首次上電和復位后AD73360便進入編程狀態(tài),自動產(chǎn)生輸出幀同步信號,該信號不受外部器件的影響。所以在AD73360與TMS320F2812的通信接口中,AD73360應為主設備,TMS320F2812應為從設備。主從關系確定以后,才可以確定信號線的連接方式和程序設計。
兩者之間的信號線連接方式如圖7所示,AD73360的輸出幀同步端SDOFS不僅連接到DSP的兩個幀同步端MFSRA和MFSXA,而且還連接到自己的輸入幀同步端SDIFS。其同步時鐘SCLK端也同時連到DSP的兩個時鐘端MCLKXA和MCLKRA。另外,DSP的兩個通用I/O端口GPIOA0、GPIOA1則連接到AD73360的復位端和串行接口使能端SE,實現(xiàn)對AD73360的控制。
2.1.2 DSP的McBSP配置
McBSP的配置應以AD73360的時序圖為依據(jù)。分析圖3~圖6,可以得出McBSP的一些重要參數(shù)如下:
(1) 發(fā)送幀同步MFSXA為高電平有效,F(xiàn)SXP=0。
(2) 接收幀同步MFSRA為高電平有效,F(xiàn)SRP=0。
(3) 幀同步均為輸入,F(xiàn)SRM= 0,F(xiàn)SXM=0。
(4) 發(fā)送時鐘MCLKXA和接收時鐘MCLKRA均為輸入,CLKXM=0,CLKRM=0。
(5) 數(shù)據(jù)輸出在發(fā)送時鐘的上升沿,CLKXP=0。
(6) 數(shù)據(jù)接收采樣在接收時鐘的下降沿,CLKRP=0。
(7) 單相幀,RPHASE=0,XPHASE=0。
(8) 每幀一個字,RFRLEN1=00b,XFRLEN1=00b。
(9) 每個字16位,RWDLEN1=010b,XWDLEN1=010b。
(10)數(shù)據(jù)延遲為1位,RDATDLY=01b,XDATDLY=01b。
確定了以上各個參數(shù)的值,才可以在程序中正確配置McBSP的各個寄存器。
2.1.3 DSP程序設計
DSP程序采用C語言編寫,在TI公司的集成開發(fā)環(huán)境CCS2.0下調(diào)試通過。程序流程如圖8所示,主要包括DSP端口(GPIO和McBSP)初始化、AD73360初始化(復位和輸出控制命令)、等待接收A/D轉(zhuǎn)換數(shù)據(jù)等步驟。
初始化GPIO主要是配置GPIOA0和GPIOA1,分別控制AD73360的復位端和串行接口使能端SE。初始化McBSP是按照上文所述的重要參數(shù)值配置各個寄存器,使McBSP的工作方式與AD73360吻合。各寄存器的具體值如下:
RCR2 = 0x0041;
RCR1 = 0x0040;
XCR2 = 0x0041;
XCR1 = 0x0040;
SRGR2 = 0x2000;
SRGR1 = 0x0101;
PCR = 0x0000;
MFFINT = 0x0004;
初始化AD73360的流程如圖9所示。TMS320F2812與AD73360接口系統(tǒng)設計中最關鍵的部分是AD73360的初始化。由于AD73360是主設備,TMS320F2812是從設備,所以幀同步信號由AD73360發(fā)出。TMS320F2812需要在每個幀同步信號到來之前準備好要發(fā)送的數(shù)據(jù),要做到這一點,首先,在AD73360開始工作前將要發(fā)送的數(shù)據(jù)寫入發(fā)送寄存器DXR1中;然后,將AD_SE置為高電平,AD73360的SPORT開始工作。當幀同步信號到來后,DSP將數(shù)據(jù)發(fā)送給AD,同時接收數(shù)據(jù)。隨后及時將下一個數(shù)據(jù)寫入發(fā)送寄存器DXR1中。這樣在每一個幀同步信號到來時,DXR1中都有正確的數(shù)據(jù)以供發(fā)送。
AD7336初始化完成后,就自動采樣并輸出采樣數(shù)據(jù)。為了提高DSP程序的效率,應采用中斷方式接收測量數(shù)據(jù)。TMS320F2812的中斷系統(tǒng)通過外設中斷擴展PIE(Peripheral Interrupt Expansion)模塊來控制。PIE可以支持96個獨立中斷,并分成12組,每組8個中斷。通過切換開關,可以使每組中斷對應一個CPU內(nèi)核中斷線,12組共需12根CPU內(nèi)核中斷線(INT1~INT12)。McBSP的接收中斷MRINT位于第6組的第5位,中斷初始化程序不再贅述。
2.2 兩片AD73360級聯(lián)與TMS320F2812的接口設計
如果想要增加模擬通道的數(shù)目,可以將多片AD73360級聯(lián)起來。如圖10所示,兩片AD73360級聯(lián)起來可以獲得12個模擬通道。AD73360片1的SDI接DSP的MDXA,SDO、SDOFS分別接片2的SDI、SDIFS。AD73360片2的SDO接DSP的MDRA、SDOFS則接片1的SDIFS和DSP的MFSXA、MFSRA。數(shù)據(jù)的流程可以歸納為:(1)流出DSP方向:DSP→AD73360片1→AD73360片2;(2)流入DSP方向:AD73360片1→AD73360片2→DSP。
采樣數(shù)據(jù)的輸出時序如圖11所示,兩片AD73360交替輸出。
DSP程序的設計中,初始化GPIO和McBSP部分均與上文單片AD的情況比較類似,但是初始化AD73360部分不盡相同,如圖12所示。
兩片AD級聯(lián)時程序設計的關鍵在于控制字的輸出必須交替進行,即先輸出AD73360片2的一個控制字,再輸出片1的一個控制字,順序不可顛倒,直到所有的控制字發(fā)送完。根據(jù)DSP輸出數(shù)據(jù)的流程,其發(fā)出的控制字先到片1。片1接到片2的控制字時,驗證該控制字的芯片地址位不為0,將該地址位減1,在下一個幀同步信號到來時發(fā)給片2,而此時片1也接收到了自己的控制字。CRB和CRA控制AD芯片的工作模式和啟動,必須配置成一樣,并且同時到達各自的AD芯片。若不同時到達,則片1和片2不能同時啟動工作,接口設計失敗。
為了保證設計成功,充分利用DSP的McBSP具有雙緩沖的特點,提前將兩個控制字寫入DXR中,保證在任意時刻McBSP都至少有一個等待發(fā)送的數(shù)據(jù),避免幀同步信號到來時McBSP沒有有效數(shù)據(jù)發(fā)送。這樣兩片AD可在相同時刻接到相應的控制字,并同時啟動。這在多片AD73360級聯(lián)工作時至關重要。
由于提前寫入了兩個控制字,所以最后要單獨讀一次數(shù)據(jù),使最后一個控制字發(fā)送出去。至于程序其余部分與單片AD73360接口設計類似,不再敘述。兩片AD73360級聯(lián)與DSP的接口設計可以擴展成多片AD73360級聯(lián)的設計。
系統(tǒng)設計中需要注意的問題是模擬信號與數(shù)字信號的隔離。本文采用兩項措施實現(xiàn)隔離:(1)DSP和AD73360分別用不同的隔離電源供電;(2)DSP與AD73360之間的接口線路用光耦隔離。這樣可以取得比較好的隔離效果。
利用AD73360和TMS320F2812設計了多通道數(shù)據(jù)采集系統(tǒng),實現(xiàn)了模擬通道的同步采樣,解決了多通道采樣的時差問題,滿足了系統(tǒng)的要求。本文設計的數(shù)據(jù)采集系統(tǒng)應用于三相制電力運行參數(shù)測控系統(tǒng),實驗證明系統(tǒng)是完全可行的。
評論
查看更多