《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 用SoC的DMA方式記錄井下鉆具的振動
用SoC的DMA方式記錄井下鉆具的振動
EDN_china
周靜 樊晶晶 牛潔 丁旭東
摘要: 傳統(tǒng)的數(shù)據(jù)采集方法采用CPU直接控制的方式進(jìn)行數(shù)據(jù)采集,數(shù)據(jù)傳送需要經(jīng)過CPU的中轉(zhuǎn)才能存入存儲器,傳送速度慢且采集速率受到CPU的限制,極大影響了系統(tǒng)的采樣頻率,不能滿足對振動信號高速采集的要求。而在DMA傳送方式下,數(shù)據(jù)傳送不經(jīng)過CPU,由DMA控制器來實現(xiàn)內(nèi)存和外設(shè)之間數(shù)據(jù)的直接快速傳送。在XTCS的測控系統(tǒng)中,CPU采用的SoC芯片中集成有DMA,將其與其它器件協(xié)同工作就可以實現(xiàn)采集與存儲的同時進(jìn)行,達(dá)到高速采集信號的目的,得到高保真的井下振動信號。
關(guān)鍵詞: SOC DMA CPU
Abstract:
Key words :

  從上個世紀(jì)九十年代起,電子技術(shù)在鉆井井下得到應(yīng)用。但井下鉆具的振動會給很多傳感器帶來不利影響。

  特別是對測量井下鉆頭姿態(tài)的慣性導(dǎo)航傳感器影響巨大,在隨鉆振動環(huán)境中,如果對信號不作處理,根本就不能測量出正確的井斜角和方位角,也就無法實現(xiàn)井眼軌跡隨鉆控制的要求。本文介紹應(yīng)用SoC芯片中的DMA技術(shù)對振動的高速采集和存儲功能的實現(xiàn)方法,并給出了鉆井環(huán)境中測試的結(jié)果。

  方法的提出

  傳統(tǒng)的數(shù)據(jù)采集方法采用CPU直接控制的方式進(jìn)行數(shù)據(jù)采集,數(shù)據(jù)傳送需要經(jīng)過CPU的中轉(zhuǎn)才能存入存儲器,傳送速度慢且采集速率受到CPU的限制,極大影響了系統(tǒng)的采樣頻率,不能滿足對振動信號高速采集的要求。而在DMA傳送方式下,數(shù)據(jù)傳送不經(jīng)過CPU,由DMA控制器來實現(xiàn)內(nèi)存和外設(shè)之間數(shù)據(jù)的直接快速傳送。在XTCS的測控系統(tǒng)中,CPU采用的SoC芯片中集成有DMA,將其與其它器件協(xié)同工作就可以實現(xiàn)采集與存儲的同時進(jìn)行,達(dá)到高速采集信號的目的,得到高保真的井下振動信號。

  系統(tǒng)介紹

  該采集系統(tǒng)以C8051F060 SoC為核心,C8051F060內(nèi)部集成有ADC和DMA。另外,以大容量存儲芯片K9F2808作為數(shù)據(jù)存儲器。系統(tǒng)結(jié)構(gòu)如圖1所示。

  圖1 信號采集系統(tǒng)結(jié)構(gòu)圖

  該系統(tǒng)應(yīng)用于井下相關(guān)信號的檢測裝置。由于通過壓力與振動傳感器所采集的壓力和振動信號比較微弱,故還需放大電路對信號進(jìn)行調(diào)理放大。傳感器的輸出均為模擬信號,采集數(shù)據(jù)時會受到噪聲的干擾,為了消除噪聲并提高電路的共模抑制比和輸入阻抗,該采集放大電路使用了前置輸入緩沖器三運(yùn)放結(jié)構(gòu)。由于SoC內(nèi)的ADC0只能采集正信號,因而在經(jīng)過調(diào)理放大電路后設(shè)有偏置電路,將-5V ~ +5V的電壓轉(zhuǎn)換為0V~+2.5V,以利于信號的采集。

  CPU控制多路選擇開關(guān)進(jìn)行信號的采集,然后通過ADC轉(zhuǎn)換,在DMA的傳送方式下,采集的數(shù)據(jù)直接寫入存儲器K9F2808中,在DMA存儲數(shù)據(jù)的同時,ADC也一直進(jìn)行采集。經(jīng)軟件測試,即采用SoC內(nèi)集成的定時器2記錄采集一頁512個字節(jié)所需時間是1.277ms,而向片外存儲器K9F2808寫一頁數(shù)據(jù)需要0.722ms。ADC采集一頁的時間小于DMA向片外寫一頁數(shù)據(jù)的時間,因而可實現(xiàn)數(shù)據(jù)采集與存儲的同時進(jìn)行,而不會出現(xiàn)數(shù)據(jù)覆蓋丟失現(xiàn)象,實現(xiàn)快速準(zhǔn)確的數(shù)據(jù)采集。

  硬件部分

  C8051F060單片機(jī)與51系列單片機(jī)內(nèi)核兼容,其內(nèi)部集成有兩個16位SAR(逐次比較)ADC和一個DMA功能模塊。片內(nèi)有4352個字節(jié)的數(shù)據(jù)存儲器、64KB 閃存和64KB的數(shù)據(jù)存儲器接口,可以進(jìn)行系統(tǒng)編程。兩個SAR ADC的精度為16位,可作為兩個單端或一個差分轉(zhuǎn)換器。若采用DMA直接將數(shù)據(jù)存儲到RAM中,就不再需要額外的軟件開銷。

  K9F2808UOC存儲器是NAND結(jié)構(gòu)的超大容量數(shù)據(jù)存儲器件,在MP3、U盤、數(shù)碼相機(jī)和PDA中有廣泛的應(yīng)用。其電源電壓為1.7V~3.6V,體積小,功耗低,按頁進(jìn)行讀寫,按塊擦除,通過I/O口分時復(fù)用作為命令/地址/數(shù)據(jù),端口支持實時雙向輸入輸出。將閃存的各控制端口與SoC的P3口連接,通用I/O口與SoC的P7口連接,通過控制SoC口線的輸出,可實現(xiàn)對FLASH存儲器的讀、寫、擦除操作。圖2為芯片的接口電路圖。

  

  圖2 芯片接口電路圖

  A/D轉(zhuǎn)換與數(shù)據(jù)存儲

  C8051F060的ADC子系統(tǒng)中集成了跟蹤保持電路、可編程窗口檢測器和DMA接口。這兩個ADC可以被配置為兩個獨(dú)立的單端方式ADC或組成一個差分對。數(shù)據(jù)轉(zhuǎn)換方式、窗口檢測器和DMA接口都可用軟件特殊功能寄存器來控制。ADC控制寄存器ADCnCN中的ADnEN位被置為邏輯1時ADCn被使能。該系統(tǒng)選用的ADC0有4種轉(zhuǎn)換啟動方式,由ADC0CN中的ADC0啟動轉(zhuǎn)換方式位(AD0CM1,AD0CM0)的狀態(tài)決定。該測控系統(tǒng)軟件采用定時器3溢出進(jìn)行定時的連續(xù)轉(zhuǎn)換采集。將ADC初始化后,定時器3溢出一次ADC就自動采集一次。當(dāng)采集完一頁的數(shù)據(jù)后,在DMA傳送方式下,采集的數(shù)據(jù)直接存儲到片外的閃存存儲器K9F2808中,并對該芯片進(jìn)行讀、寫及擦除。

  在該測控系統(tǒng)中,采用VB語言編寫上位機(jī)程序,采用C51語言編寫下位機(jī)程序。通過上位機(jī)來控制下位機(jī)執(zhí)行相應(yīng)的任務(wù)。由于該系統(tǒng)的SoC集成有UART,可以通過PC機(jī)的RS232串口實現(xiàn)通信,下位機(jī)每次接收到任務(wù)命令后,下位機(jī)程序跳入到相應(yīng)的串行中斷程序中執(zhí)行任務(wù)。下位機(jī)主程序包括連續(xù)啟動DMA程序、調(diào)用片外存儲器K9F2808UOC的寫程序,將用DMA方式采集的512字節(jié)送到K9F2808中,實現(xiàn)采集與存儲同步進(jìn)行。主程序流程圖如圖3所示。子程序主要包括:晶振初始化、端口初始化、串口初始化、ADC初始化、DMA初始化、定時器3初始化、片外存儲器K9F2808UOC的擦除程序、延遲程序等。

  圖3 下位機(jī)主程序流程圖

  這里,晶振初始化主要完成對外部振蕩器使用的配置;端口初始化完成對端口p0~p7的初始化配置;串口初始化完成對定時計數(shù)器T0和T1的配置及對波特率的設(shè)定;ADC0初始化對ADC0進(jìn)行配置;DMA0初始化主要完成對DMA0的配置,設(shè)置外部數(shù)據(jù)存儲器開始值,ADC0開啟模式等;定時器3初始化主要完成對重裝載值的設(shè)定,激發(fā)ADC0進(jìn)行采集;片外存儲器K9F2808的擦除程序完成對K9F2808內(nèi)數(shù)據(jù)的擦除。

  性能測試與室內(nèi)實驗

  硬軟件調(diào)試結(jié)束后,我們把測試電路和傳感器送到石油儀器儀表質(zhì)量檢驗中心的標(biāo)準(zhǔn)振動臺上,在(10g,1000Hz)、(25g,100Hz)、 (25g,200Hz)、(25g,1000Hz)條件下對測試系統(tǒng)進(jìn)行標(biāo)定,證明對振動幅度的測量精度為1%,振動頻率的測量精度為5‰,這樣的精度可以滿足導(dǎo)向鉆井系統(tǒng)對振動測量的要求。

  參考文獻(xiàn):

  1. 周靜,付鑫生.利用敏感井底鉆具振動傳遞地面信息的方法[J] . 石油學(xué)報,2005.2

  2. 童長飛. C8051F系列單片機(jī)開發(fā)與C語言編程[M]. 北京:北京航空航天大學(xué)出版社,2005

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。