隨著我國福彩事業的快速發展,電腦彩票銷售系統對投注機運行的控制、遙測數據的采集提出了更高的要求。數據采集作為福彩銷售系統實時控制、監測的前提環節,毫無疑問具有重要的作用。但在數據采集過程中,由于存在諧波等干擾因素,因此如何準確、快速地采集投注機中的各個模塊的模擬量一直是銷售系統研究中的熱點。
近年來,各種集成DSP的性能得到很大的改善,價格大幅度下滑,越來越多的用戶開始選用DSP器件來提高產品性能。本文基于ADS8365和TMS320F2812設計了一套信號采集電路,其接口電路簡單,采集精度高,速度快,到了預期的目標。
1.TMS320F2812介紹
TI(德州儀器)主推高性能 TMS320C28x系列 TMS320F2812 32位定點微控制單元(MCU),主頻高達150MHz; 具備I2C、SPI、CAN、PWM等總線接口,適用于各種控制類工業設備; 體積小、性能強、便攜性高,同時適用于多種手持設備; 符合高低溫、振動測試,滿足工業環境應用。
2.ADS8365介紹
ADS8365是一種高速、低功耗、6通道同步采樣與轉換、單+5V供電的模數轉換芯片。轉換最大采樣吞吐率可達5MHz,并帶有80dB共模抑制的全插分輸入通道以及6個差分采樣保持放大器。引腳內部還帶有2.5V基準電壓和高速并行接口。
3.ADS8365與TMS320F2812的接口電路設計
由于ADS8365與TMS320F2812都是TI公司提供的高速芯片,兩者在速度上能夠完全匹配,實現芯片間的無縫連接。
PTout為模擬信號輸入,其電壓范圍為-5V~+5V,經過差分電路輸入到ADS8365的模擬輸入通道A0。接口選擇16位數據輸出方式,因此ADS8365的BYTE和ADD引腳都接地。對每個通道轉換結果的讀取通過地址線A2、A1、A0來選擇。ADS8365的片選信號由F2812的地址線A15、A14、A13和I/O空間片選線XZCS#經過74LV138譯碼產生,ADS8365芯片地址所占用的是F2812I/O空間的低32K地址空間,與程序的調試和運行地址無關。
為了實現ADS8365六個通道的同步采樣,ADS8365的A、B、C三組啟動控制信號HOLDA#、HOLDB#和HOLDC#由F2812的同一I/O引腳控制,這樣只要F2812使該引腳有效就可以同時啟動ADS8365的六個通道,從而實現六通道的同步采樣。
ADS8365的時鐘信號由F2812的定時器4的輸出信號T4PWM提供,頻率為3.75MHz。在DSP復位時,A/D芯片也復位。A/D轉換結束信號接到DSP的外部中斷引腳XINT2,因此對A/D轉換結果的讀取可采用中斷和查詢兩種方式,視編程和工程應用的具體要求而定。
ADS8365采用+5V模擬電源(AVDD)和+5V數字電源(DVDD)供電,而其內部的緩沖器采用與F2812相同的+3.3V電壓。緩沖器電壓(BVDD)允許直接連接到3V或5V電壓系統。F2812的I/O電壓為+3.3V,因此,若使用該元件,ADS8365的BVDD必須設置3.3V。
4.TMS320F2812設置
(1)轉換時鐘設置在本系統中,用F2812的PWM2為ADS8365提供時鐘信號,設置PWM2為全比較方式工作,輸出高電平有效。設置F2812系統時鐘SYSCLKOUT=90MHZ,則高速外圍時鐘HSPCLK=SYSCLKOUT/2=45MHz。設置通用定時器T1的周期寄存器值為12(T1PR=0x000c),比較寄存器的值設為6(T1CMPR=0x0006),因此,輸出時鐘頻率為CLK=HSPCLK/T1PR=3.75MHz,符合ADS8365最大時鐘頻率為5MHz的要求。
(2)輸出端口設置設置PWM1/GPIOA0、PWM3/GPIOA2為GPIO輸出,GPIOA0用來控制ADS8365的RESET#信號,GPIOA2控制HOLDA#、HOLDB#和HOLDC#信號。端口E的XINT2_ADCSOC設置為中斷輸入信號
在ADS8365數據轉換結束時,引腳EOC#變為低電平,觸發XINT2#中斷,進入中斷服務程序,進行數據的讀操作。ADS8365的片選(CS#)為高電平時,并行數據輸出引腳D[15:0]處于高阻抗狀態,為低電平時,并行數據線反映了輸出緩沖器當前的狀態。為了正確地將數據從ADS8365的并行總線上讀出,必須設置為低電平。由于選擇F2812的XZCS2#作為ADS8365的片選信號,故ADS8365地址映射到F2812的擴展總線存儲空間XINTF Zone2上。用F2812的A9、A5、A3輸出管腳控制ADS8365的A0-A2數據地址,如表1所示
5.數據采集過程
通過觸發ADS8365的復位引腳為低電平,使讀指針指向第一個讀數位置。ADS8365的引腳REST#由GPIOA0控制。作為F2812初始化的一部分,GPIOA0最初為高電平,當系統時鐘穩定后,被觸發為低電平,從而確保了從ADC輸出的數據按照通道A0、A1、B0、B1、C0、C1的順序。
數據采集HOLDX#是有源低電平采樣觸發器。在ADS8365的HOLDX#保持至少20ns的低電平時,轉換開始。將三個HOLD信號都連接到GPIOA2,可使各個通道的采樣保持放大器同時處于保持狀態,從而使各個通道同時開始轉換。
當轉換結果被存到輸出寄存器后,引腳EOC#將保持半個時鐘周期的低電平。另外,通過設置RD#和CS#為低電平,可以使數據讀出到并行輸出總線。讀(RD#)和寫(WR#)為有源低電平輸入信號。當CS#為低時,在RD#下降沿更新ADS8365的輸出緩沖。這就意味著在每個讀序列之前,RD#信號必須被觸發一次,只有這樣,才可以讀取新采集到的數據。其讀時序圖如圖2所示。
圖2讀ADS8365時序圖
6.軟件設計
為了便于調試和維護,軟件設計遵循模塊化,自頂向下,逐步細化的編程思想。軟件采用C語言和匯編語言混合編程。系統上電復位后,首先按照所選定的模式自舉加載程序,跳轉到主程序入口,然后進行相關變量、數據緩沖區、控制寄存器、狀態寄存器的初始化。復位并初始化外部的ADS8365后,等待外部中斷,在中斷服務子程序中將A/D轉換后所得數據讀入所分配的數據緩沖區,F2812為定點DSP,為了提高運算的精度和速度,軟件設計中充分利用TI公司提供的IQmath Library以實現浮點運算與定點程序代碼的無縫接口,簡化了程序的開發,并大大提高了程序運行的實時性。其主要代碼如下(以CHA0為例):
void main(void)
{
ptrCHA0=(int*)CHA0;InitSysCtrl();
InitGpio();
ResetADS8365();
DINT;
PieCtrlRegs.PIEIER1.bit.INTx5=1;
XIntruptRegs.XINT2CR.all=0x0000;read_A();
XIntruptRegs.XINT2CR.all=0x0001;
PieCtrlReg.PIEACK.all=0x0001;return;
}
評論
查看更多