便攜式數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)
Linux設(shè)備驅(qū)動(dòng)程序?qū)崿F(xiàn)的功能包括驅(qū)動(dòng)程序的注冊(cè)與注銷、設(shè)備的打開與釋放、設(shè)備的讀寫操作、設(shè)備的控制操作等。當(dāng)用戶需要通過設(shè)備文件與硬件通信時(shí),必須通過調(diào)用open、read、write、close、ioctl等系統(tǒng)函數(shù)實(shí)現(xiàn),這些函數(shù)都由file_operations結(jié)構(gòu)體的函數(shù)指針成員給出入口地址,file_operations結(jié)構(gòu)體的每一個(gè)成員名都對(duì)應(yīng)一個(gè)系統(tǒng)函數(shù)嗍。用戶進(jìn)程利用系統(tǒng)調(diào)用在對(duì)設(shè)備文件進(jìn)行諸如read、write操作時(shí),系統(tǒng)調(diào)用通過設(shè)備文件的主設(shè)備號(hào)找到相應(yīng)的設(shè)備驅(qū)動(dòng)程序,然后讀取該數(shù)據(jù)結(jié)構(gòu)相應(yīng)的函數(shù)指針,接著把控制權(quán)交給該函數(shù)。因此,編寫設(shè)備驅(qū)動(dòng)程序就是編寫file_operations數(shù)據(jù)結(jié)構(gòu)的各個(gè)函數(shù)指針對(duì)應(yīng)的各個(gè)函數(shù),隨著Linux設(shè)備驅(qū)動(dòng)程序的復(fù)雜程度越來越高,file operations結(jié)構(gòu)體的成員數(shù)越來越多,但并不是每種設(shè)備的驅(qū)動(dòng)程序都需要利用file_operations中的全部功能,大多數(shù)驅(qū)動(dòng)程序只是利用其中一部分,對(duì)于驅(qū)動(dòng)程序中無需提供的功能,只需將相應(yīng)位的數(shù)值設(shè)為NULL。本系統(tǒng)將ADS8364作為字符型設(shè)備設(shè)計(jì)驅(qū)動(dòng)程序,對(duì)于字符設(shè)備來說,file_operations結(jié)構(gòu)體中要提供的主要入口有:打開設(shè)備文件open()、釋放設(shè)備文件release()、讀取A/D轉(zhuǎn)換的數(shù)據(jù)read()、啟動(dòng)A/D轉(zhuǎn)換和選取A/D轉(zhuǎn)換的讀數(shù)通道號(hào)write()、A/D轉(zhuǎn)換參數(shù)快速設(shè)置ioctl()。
結(jié)合ADS8364與S3c24lO的接口電路,設(shè)計(jì)驅(qū)動(dòng)程序時(shí),采用中斷方式或者查詢方式讀取轉(zhuǎn)換數(shù)據(jù)。采用查詢方式在驅(qū)動(dòng)程序中需將通用輸入輸出引腳GPF4設(shè)置成輸入模式,在應(yīng)用程序中反復(fù)查詢GPF4的輸入狀態(tài),當(dāng)查詢到低電平時(shí)表明A/D轉(zhuǎn)換器完成一次轉(zhuǎn)換,此時(shí)可調(diào)用驅(qū)動(dòng)程序中的read()函數(shù)讀取轉(zhuǎn)換結(jié)果;采用中斷方式需在驅(qū)動(dòng)程序中將GPF4設(shè)置中斷方式,將中斷觸發(fā)方式設(shè)置下降沿觸發(fā),ADS8364產(chǎn)生的EOC信號(hào)觸發(fā)Linux系統(tǒng)的外中斷EINT4,應(yīng)用程序只需打開ADS8364所對(duì)應(yīng)的設(shè)備文件,并采用write()函數(shù)啟動(dòng)相應(yīng)通道開始轉(zhuǎn)換,然后由驅(qū)動(dòng)程序中的中斷服務(wù)函數(shù)將數(shù)據(jù)存放到一個(gè)全局變量中,應(yīng)用程序通過read()函數(shù)讀取數(shù)據(jù),因此,利用中斷方式采集數(shù)據(jù)速度更高、讀數(shù)控制更簡(jiǎn)單。圖4為采用中斷方式的程序流程。
5 測(cè)試結(jié)果
該系統(tǒng)已應(yīng)用于某油田的井口多參數(shù)采集裝置,前端分別接壓力、流量、流速、溫度等傳感器,用來測(cè)量采油井井口的多種參數(shù)。經(jīng)測(cè)試,該系統(tǒng)與傳統(tǒng)的基于單片機(jī)的多參數(shù)測(cè)量裝置相比,具有界面美觀,易操作,精度高,可方便利用存儲(chǔ)卡或U盤存儲(chǔ)重要設(shè)置參數(shù)、系統(tǒng)運(yùn)行狀態(tài)的數(shù)據(jù)和測(cè)量數(shù)據(jù),便于使用者管理和維修等優(yōu)點(diǎn)。表1為該系統(tǒng)設(shè)計(jì)所測(cè)量值與實(shí)際值的對(duì)比情況。
從表1看出,該系統(tǒng)的測(cè)量誤差很小,其中所測(cè)量的多個(gè)電壓點(diǎn),相對(duì)誤差都小于O.08%,這樣的精度可滿足數(shù)據(jù)采集應(yīng)用需求。
6 結(jié)束語
本文提出的基于嵌入式Linux技術(shù)的便攜式數(shù)據(jù)采集系統(tǒng),與傳統(tǒng)的單片機(jī)或DSP技術(shù)實(shí)現(xiàn)的數(shù)據(jù)采集系統(tǒng)相比較,具有功耗低、體積小、用戶操作界面友好、采集精度高、便于擴(kuò)展升級(jí)等優(yōu)點(diǎn)。ARM的片上資源豐富,Linux操作系統(tǒng)的功能強(qiáng)大,該系統(tǒng)通過外接不同傳感器可實(shí)現(xiàn)多種參數(shù)采集,利用系統(tǒng)的豐富GPIO接口編程設(shè)計(jì)多個(gè)外部設(shè)備控制動(dòng)作,完成多通道PWM輸出。該系統(tǒng)在石油鉆采、工廠自動(dòng)化等領(lǐng)域具著廣泛的應(yīng)用前景。
評(píng)論