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