基于ARM-Linux的MAX1303接口與驅(qū)動程序設(shè)計
2 系統(tǒng)硬件設(shè)計
已提到,模/數(shù)轉(zhuǎn)換器MAX1303可以通過SPI/QSPI/MICROWIRE兼容的串行接口進行控制。由于SPI比較常見,并且協(xié)議簡單,本系統(tǒng)使用SPI協(xié)議控制此AD芯片。然而,雖然LPC3250有內(nèi)置的SPI控制器,但本系統(tǒng)選擇使用LPC3250的GPI/O口模擬SPI接口對MAX1303進行控制。下面分析原因。
已提到,MAX1303有7中工作模式,其中,有3種用于數(shù)據(jù)采集。這3種工作模式是:外部時鐘模式;外部采集模式;內(nèi)部時鐘模式。這3種采集模式各有優(yōu)缺點。外部時鐘模式的吞吐率最高,同時,給處理器帶來的負擔也最高;內(nèi)部時鐘模式吞吐率次之,能適當減輕處理器的負擔;外部采集模式的吞吐率最低,但卻能最大限度的減輕處理器負擔。由于LPC3250性能強大,所以系統(tǒng)在采集數(shù)據(jù)時,使用吞吐率高的外部時鐘模式。然而,使用外部時鐘模式時,不像使用內(nèi)部時鐘模式和外部采集模式,處理器向MAX1303寫完控制字和轉(zhuǎn)換啟動字后,只需等待MAX1303的SSTRB引腳輸出的轉(zhuǎn)換結(jié)束信號,然后就可以讀取轉(zhuǎn)換結(jié)果。使用外部時鐘模式,需要精確的控制時鐘個數(shù),這使得在驅(qū)動程序中,要經(jīng)常修改SPI的相關(guān)控制器,而且還要通過查詢來確定時鐘的個數(shù)。如果使用LPC3250的GPI/O口模擬SPI協(xié)議控制AD芯片就簡單的多??刂艷PO口不斷翻轉(zhuǎn)輸出電平就可以產(chǎn)生時鐘信號,而且可隨意控制時鐘個數(shù)。對于發(fā)送數(shù)據(jù),只需要簡單的把數(shù)據(jù)字節(jié)的每個位根據(jù)時鐘變化通過GPI口輸出給AD芯片。讀取數(shù)據(jù)與發(fā)送數(shù)據(jù)是一個相反的過程,但類似。本文引用地址:http://butianyuan.cn/article/201610/306026.htm
所以,用GPI/O口模擬SPI總線控制MAX1303非常簡單。本系統(tǒng)有兩路模擬信號需要采集,使用單端輸入,MAX1303的另外兩個輸入端接地。LPC3250與MAX1303的硬件連接如圖2所示。
3 Linux下設(shè)備驅(qū)動程序設(shè)計
設(shè)備驅(qū)動程序是應(yīng)用程序和硬件之間的橋梁,它為應(yīng)用程序屏蔽硬件細節(jié),并將硬件封裝成一個文件的形式。當應(yīng)用程序需要操作硬件時,只需操作硬件相對應(yīng)的設(shè)備文件即可。Linux對設(shè)備的分類有許多種,常見的分類是將設(shè)備分成3種:字符設(shè)備、塊設(shè)備、網(wǎng)絡(luò)設(shè)備。這三類設(shè)備對應(yīng)3種設(shè)備文件。不同設(shè)備的開發(fā)模式以及與內(nèi)核的接口也不相同。MAX1303屬于字符設(shè)備,本文將分析Linux2.6.29內(nèi)核下MAX 1303的字符設(shè)備驅(qū)動設(shè)計方法。
設(shè)備驅(qū)動程序與應(yīng)用程序不同,應(yīng)用程序從main函數(shù)開始執(zhí)行,而驅(qū)動程序在被安裝時,則是從module_init宏指定的函數(shù)處開始執(zhí)行。module_init宏指定的函數(shù)被稱為模塊加載函數(shù),它可以看成是驅(qū)動程序的入口。它通常完成地址映射,向內(nèi)核注冊并初始化cdev結(jié)構(gòu),創(chuàng)建設(shè)備文件等工作。模塊加載函數(shù)的程序流程圖如圖3所示。
與模塊加載函數(shù)對應(yīng)的,有一個模塊卸載函數(shù),此函數(shù)由module_exit宏指定,它在驅(qū)動模塊被卸載時執(zhí)行。它主要完成的工作包括:銷毀設(shè)備文件;注銷設(shè)備所對應(yīng)的cdev結(jié)構(gòu);釋放內(nèi)存;注銷設(shè)備號。
Struct cdev在內(nèi)核內(nèi)部被用來表示設(shè)備,這是一個非常重要的數(shù)據(jù)結(jié)構(gòu)。它內(nèi)部有一個成員結(jié)構(gòu)structfile_operations,用于連接設(shè)備編號和驅(qū)動程序的操作。這個數(shù)據(jù)結(jié)構(gòu)包含一組函數(shù)指針,這一組函數(shù)的實現(xiàn)是設(shè)計驅(qū)動程序的重點和難點。這一組函數(shù)有很多,但根據(jù)項目需求,本系統(tǒng)只實現(xiàn)open,write,read,release 4個函數(shù)。
評論