韓衛(wèi)潔+陳江鋒+董興+田軍
摘 ?要: 為了對凍土區(qū)土壤環(huán)境進行實時采集處理和檢測,在此選取ADS8341作為A/D轉(zhuǎn)換芯片,STM32F103ZET6芯片作為微處理器,設計并實現(xiàn)了將ADS8341芯片和STM32F103ZET6芯片相結合用于采集土壤環(huán)境數(shù)據(jù)的硬件電路和A/D采集軟件控制過程。經(jīng)過實際的檢測與分析,該設計可以對凍土區(qū)土壤進行實時高效的采集、處理以及對數(shù)據(jù)的保存,以便后期數(shù)據(jù)的查詢和土壤環(huán)境總體趨勢的預測。
關鍵詞: ADS8341; STM32F103ZET6; 接口電路; 采集控制
中圖分類號: TN964?34 ? ? ? ? ? ? ? ? ? 文獻標識碼: A ? ? ? ? ? ? ? ? ? ? ? ? ? ?文章編號: 1004?373X(2014)24?0084?03
Interface design of high?speed data acquisition module based on ADS8341 and ARM
HAN Wei?jie1, CHEN Jiang?feng2, DONG Xing1, TIAN Jun1
(1. School of Construction Machinery, Changan University, Xian 710064, China;
2. School of Materials Science and Engineering , Changan University, Xian 710064, China)
Abstract: ?In order to conduct ?real?time acquisition, processing and detection of the frozen soil environment data, ADS8341 is chosen as A/D conversion chip and STM32F103ZET6 chip as MPU. The data acquisition circuit and A/D acquisition software control process based on ADS8341 and STM32F103ZET6 was designed. The actual tested and analyzed results show that the interface circuit can achieve real?time effective acquisition, processing and storage of the frozen soil environment data, which contribute to the future query of the relevant data and prediction of the trend of soil environment.
Keywords: ADS8341; STM32F103ZET6; interface circuit ; acquisition control
為實現(xiàn)某凍土區(qū)石油管道監(jiān)測系統(tǒng)對管道周圍土壤溫度的實時監(jiān)測和控制,在同一時間需要多路采集和處理溫度信號,由于系統(tǒng)對溫度信號的實時性和采集準確度有嚴格的要求,采用ADS8341作為專用的A/D轉(zhuǎn)換芯片而不是使用ARM芯片自帶的12位A/D轉(zhuǎn)換芯片,微處理器選用STM32F103ZET6芯片,該芯片是由ST公司生產(chǎn)的STM32F103“增強型”系列處理器芯片。其時鐘頻率可達72 MHz,具有512 KB的FLASH[1?2]。ADS8341芯片可實現(xiàn)16位數(shù)字量輸出,4路模擬量采集通道,并且可簡單方便地實現(xiàn)微處理器軟件編程和操作,對不同的檢測信號可設計并采用特定的采集方法,從而使系統(tǒng)更便于操作和推廣。
1 ?ADS8341與STM32F103ZET6接口電路設計
1.1 ?ADS8341芯片
ADS8341是Texas Instruments公司設計生產(chǎn)的具有串行接口和兩個字節(jié)數(shù)字量輸出的高速逐漸逼近式A/D轉(zhuǎn)換芯片[3]。ADS8341 具有SPI串行總線功能,可實現(xiàn)4路獨立模擬輸入或兩路差動模擬輸入,16位數(shù)字數(shù)據(jù)的輸出。ADS8341選用5 V供電,其具有86 dB的信噪比。當ADS8341選用5 V供電和采樣頻率為100 kHz時,其最低的功率損耗為8 mW,VREF(基準電壓)的選取范圍為500 mV~5 V,對應的模擬輸入電壓范圍為0~VREF ,當ADS8341芯片工作在低功耗模式時,其功率消耗很小[3]。供電電壓以2.7 V分界,高于 2.7 V時,正常使用,反之,低于 2.7 V時,正常工作。ADS8341采用SSOP?16封裝,其體積很小,便于電路板布局和加工。其在-40~85 ℃時可正常工作,超出這個溫度范圍芯片無法正常工作[4]。ADS8341芯片可在同一時間對4路模擬輸入信號進行采樣,所以在需要采集多路模擬輸入時使用ADS8341芯片,因此本采集系統(tǒng)選用ADS8341芯片將模擬輸入信號轉(zhuǎn)換為數(shù)字輸出信號[4]。
1.2 ?ADS8341與STM32F103ZET6接口電路設計
采用軟件實現(xiàn)ADS8341與STM32F103ZET6接口控制連接[5]。本設計中ADS8341采用外部時鐘供電模式,最高頻率為72 MHz, A/D轉(zhuǎn)換輸入引腳DIN接STM32F103ZET6的PA2,A/D轉(zhuǎn)換輸出引腳DOUT接STM32F103ZET6的PA4,A/D轉(zhuǎn)換結束控制引腳BUSY接STM32F103ZET6的PA3,A/D轉(zhuǎn)換片選引腳CS_1接STM32F103ZET6的PA1,A/D轉(zhuǎn)換時鐘引腳DCLK接STM32F103ZET6的PA0。當采用軟件連接時,STM32F103ZET6使用芯片14(DIN)引腳把控制字命令逐位傳送給ADS8341,實現(xiàn)芯片的初始化。芯片的第2~第5引腳(CH0~CH3)為四路模擬輸入通道,6引腳為COM引腳,當不使用COM引腳時,即COM接?IN、選中的的CHX(X=0~3) 接+IN,采用的是單通道輸入模式,當使用COM引腳時采用的是差分輸入模式[3]。本文選擇單通道模擬輸入模式即選取CHX(X=0~3)中的一個模擬輸入通道[3]。其具體的接口電路如圖1所示[5]。
為了保證A/D采樣精度,還需要注意:正確區(qū)別模擬、數(shù)字地。由于ADS8341芯片內(nèi)部對模擬地和數(shù)字地有明確的區(qū)分,所以必須正確地區(qū)分和使用它們[5]。PCB電路板設計布線時,需將模擬地和數(shù)字地分開與在ADS8341芯片相接處,在設計多層板時必須將電源層和地層分開。VREF的布線應盡量短,防止其他信號對其產(chǎn)生嚴重影響[6]。
2 ?A/D采集控制
由硬件電路知,ADS8341芯片工作所需的CLK時鐘信號不能自己產(chǎn)生而是由 ?STM32F103ZET6向其提供所需的時鐘信號[4]。在STM32F103ZET6的準確控制之下,嚴格按照ADS8341芯片的采樣時序圖由PA0引腳提供ADS8341的工作時鐘。為了更加高效地采集數(shù)據(jù),選用100 kHz 作為實際的采樣率。當A/D轉(zhuǎn)換開始時,以片選信號(15引腳)的下降沿作為起始標志,最初的8個時鐘信號將8位的控制字通過DIN引腳傳送給ADS8341芯片,當ADS8341芯片接收完控制字的第八位后,等待一個時鐘周期,然后A/D轉(zhuǎn)換芯片通過硬件方式將BUSY引腳設置為高電平,BUSY引腳為高電平標志著轉(zhuǎn)換已完成,已經(jīng)產(chǎn)生了16位的數(shù)據(jù),隨后16位數(shù)據(jù)將在16個時鐘信號下降沿的作用下逐位的從DOUT引腳輸出,此時只需要將輸出的數(shù)據(jù)放到事先定義好的數(shù)組中便可以將其存儲起來,以便后續(xù)的輸出或查看[4]。當MSB出現(xiàn)時BUSY引腳才被設置為低電平,此過程用一個CLOCK周期完成,16位數(shù)據(jù)逐位地輸出需要16個CLOCK周期,因此單次采樣最少需要25個時鐘周期,本系統(tǒng)采用的單片機采用8 b傳輸數(shù)據(jù),因此需額外增加一個時鐘信號用于LSB位,為滿足采樣周期和快速采樣要求,決定選用24個時鐘信號作為每次采樣的時鐘周期[4]。當控制字的首位出現(xiàn)在輸入引腳上時,上一次的LSB同時出現(xiàn)在DOUT引腳上。當BUSY引腳拉低后,標志通道的轉(zhuǎn)換已全部完成,STM32F103ZET6開始讀取數(shù)據(jù),完成后將片選信號設置為高電平,輸出引腳和忙標志引腳進入高阻態(tài),等待直到再次的轉(zhuǎn)換開始[4]。ADS8341的工作時序如圖2所示。
如圖3所示為采集流程圖。程序設計時,通過定時器0控制采集系統(tǒng)的采樣率,將采集程序與定時器程序相結合,可以按編程者的需求方便的控制采集過程。程序開始運行時,首先將對ADS8341芯片和單片機系統(tǒng)進行初始化,初始化結束以后,A/D轉(zhuǎn)換過程開始。轉(zhuǎn)換完成標志(BUSY引腳)接PA3引腳,在此對BUSY脈沖進行計數(shù),每完成一次采集,計數(shù)變量累加1(初值設為0),系統(tǒng)等待BUSY拉低判斷轉(zhuǎn)換是否完成(即BUSY信號是否拉低)。當完成時,從DOUT引腳讀取輸出數(shù)據(jù);當相反時,表明轉(zhuǎn)換過程非正常,對系統(tǒng)復位,重新采集數(shù)據(jù)。系統(tǒng)以1 000個數(shù)據(jù)為一次采集周期,因此要判斷是否達到1 000個數(shù)據(jù),當達到時進行相應的的后續(xù)處理。
部分程序代碼如下:
//主函數(shù)代碼:
int main(void)
{
Stm32_Clock_Init(9); ? ? ? ? ? ? ? ? ? ? ? ? ? ?//系統(tǒng)時鐘設置
uart_init(72,9600); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//串口初始化
delay_init(72); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //延時初始化
TIM3_Int_Init(10,7199); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//計時1ms
io_Init(); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //I/O口初始化
while(1); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //循環(huán)
}
//定時器中斷服務程序
void TIM3_IRQHandler(void)
{
q++; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //計數(shù)變量
if(TIM3?>SR&0X0001) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//溢出中斷
{
RCC?>APB1ENR|=0<<1;
TIM3?>CR1|=0X00;
read8341 (0x94); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//采集數(shù)據(jù)
}
if(q==1000) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//計數(shù)變量判斷
{
q=0; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//計數(shù)變量清零
sendu1000(); ? ? ? ? ? ? ?//將采集的1 000個數(shù)據(jù)發(fā)送到串口
}
TIM3?>SR&=~(1<<0); ? ? ? ? ? ? ? ? ? ? ? //清除中斷標志位
RCC?>APB1ENR|=1<<1;
TIM3?>CR1|=0X01;
}
//A/D采集程序
void read8341(u8 port)
{
u8 i=0;
u8 al,ah;
ah=0;
al=0;
DLCK=0;
CS_1=0;
BUSY=0;
for(i=0;i<8;i++)
{
if(port&0x80)
{
DIN=1;
}
else
{
DIN=0;
}
DLCK=1;
DLCK=0;
port<<=1;
}
for(i=0;i<8;i++)
{
DOUT=0;
DLCK=1;
ah<<=1;
if(DOUT) ah|=0x01;
}
for(i=0;i<8;i++)
{
DOUT=0;
DLCK=1;
al<<=1;
if(DOUT) al|=0x01;
}
sendch(ah);
sendch(al);
CS_1=1;
}
3 ?結 ?論
基于ADS8341芯片和STM32F103ZET6芯片的高速數(shù)據(jù)采集方案,選用 STM32F103ZET6芯片作為單片機, ADS8341芯片作為轉(zhuǎn)換芯片,具有高效的數(shù)據(jù)傳輸效率以及非常方便的軟件編程環(huán)境。結果表明,此設計方案可非常高效、實時以及準確地對土壤狀態(tài)進行采集處理,具有傳輸速度快,過程穩(wěn)定等優(yōu)點。在日后實際推廣應用時,需要對實際情況進行評估并進行多次試驗。
參考文獻
[1] 佚名.STM32開發(fā)指南V1.0 庫函數(shù)版本[EB/OL]. [2013?02?18].http://wenku.baidu.com.
[2] 佚名.Cortex?M3權威指南[EB/OL].[2011?09?18].http://wenku.baidu.com.
[3] 劉明偉.16 位模/數(shù)轉(zhuǎn)換器ADS8341的應用[J].寶成科技,2003(1):4?10.
[4] Anon. ADS8341E [EB/OL]. [2013?08?07]. http://www.dzsc.com/xi.
[5] 劉品,李松巖,徐赫.基于ADS8364高速數(shù)據(jù)采集模塊接口設計[J].現(xiàn)代電子技術,2011,34(8):138?140.
[6] 王霞,李淑民,裴培,等.基于ADS8364的數(shù)據(jù)采集系統(tǒng)設計[J].電子技術應用,2009(7):95?97.
[7] 何炳林,張煥文,梁柱揚,等.基于ADS1252的數(shù)據(jù)采集模塊設計[J].現(xiàn)代電子技術,2011,34(13):139?141.