基于PowerPC的模擬量輸入接口擴展
3 硬件結構
MAX197是一種通用A/D芯片,可以和多種處理器接口,本系統(tǒng)通過MPC8349E的局部總線與MAX197連接。硬件結構如圖3所示。圖3中使局部總線的LBD7~LBD0與MAX197的D0~D7相連。選擇MAX197為軟件設置低功耗工作方式,所以置SHDN管腳為高電平,本系統(tǒng)采用內部基準電壓,所以REF、REFADJ管腳均通過電容接地。用一路片選信號線做讀高、低位數(shù)據(jù)的選擇線, 直接與HBEN管腳相連,因而采用讀不同地址的方式分別讀取低8位和高4位數(shù)據(jù)。MAX197的INT管腳與系統(tǒng)的INT相連,作為轉換識別信號,當數(shù)據(jù)轉換完畢時,MAX197的INT腳產生中斷信號,從而使處理器進入中斷處理程序進行一路轉換數(shù)據(jù)的讀入操作。
4 驅動軟件設計
設備驅動程序是應用程序和機器硬件之間的接口。設備驅動程序為應用程序屏蔽了硬件的細節(jié),在應用程序看來,硬件設備只是一個設備文件,應用程序可以象操作普通文件一樣對硬件設備進行操作。
本系統(tǒng)采用Linux操作系統(tǒng),需要編制Linux下的設備驅動程序。A/D轉換設備用作為字符設備,而字符設備驅動程序具有比較固定的結構,即將設備抽象成文件來進行操作,因此要在驅動程序實現(xiàn)Open、Close、Write、Read和Ioctl等操作,其中Ioctl對于執(zhí)行各種類型的硬件控制應用比較方便,其在內核中的原型為
int(*ioctl)(struct inode *inode,
struct file *filp,
unsigned int cmd,
unsigned long arg);
A/D轉換的驅動程序主要是實現(xiàn)了這個函數(shù)。其中cmd用來傳遞通道序號,arg傳遞指向用戶空間的一個指針,用來返回A/D轉換結果。
當寫入控制字開始轉換后,處理器進入其它工作狀態(tài),直到轉換完成產生中斷,處理器在ioctl中讀取A/D轉換結果,并調用put_user(datum,ptr)宏函數(shù)將該結果傳遞到用戶空間。Ioctl函數(shù)的流程圖如圖4所示
用戶程序實現(xiàn)數(shù)據(jù)采集需要先打開設備文件,分配數(shù)據(jù)空間,決定A/D轉換通道序號,然后調用ioctl實現(xiàn)A/D轉換并得到結果。
當對MAX197 的控制字開始寫操作時,轉換就開始了。寫操作將選擇多路通道,并確定MAX197的輸入范圍是單極性還是雙極性。一個寫脈沖( )可以開始一次采集,或者對采樣進行初始化并開始轉換。對任何時鐘模式和采集模式,轉換間隔都延時12個時鐘周期。若在轉換周期寫一個新的控制字節(jié)將使轉換失效, 并啟動方式可以更精確地控制采樣間隔和轉換。在這種方式下,用戶通過2個寫脈沖控制采集和啟動轉換。在第一寫脈沖中,要使ACQMOD 位=1,它將啟動一次采集開始。在第二個寫脈沖中,要使ACQMOD 位=0,在 的上升沿開始轉換并結束采集。在發(fā)第一和第二個寫脈沖時, 多路輸入通道的地址位值必須一樣。在第二個寫脈沖中, 低功耗模式位( PD0、PD1)可以設一個新值。當轉換結束產生一個正確的結果時,芯片發(fā)出一個標準的中斷信號INT給處理器。在第一個讀周期或者寫一個新控制字節(jié)時,INT就變?yōu)楦唠娖健?
評論