基于WinCE系統(tǒng)的FIFO數據傳輸程序設計
當數據采集板通過程序控制方式、定時器觸發(fā)方式或外部觸發(fā)方式采集到模擬信號后自動進行A/D轉換后將數據放入A/D數據寄存器并依次寫入FIFO 緩沖區(qū)中,Windows CE.net中的用戶應用程序通過檢測FIFO標志寄存器和MIC-2718狀態(tài)寄存器(地址為BASE+8)的狀態(tài)來確定是否進行了有效的A/D轉換。下面給出在Windows CE開發(fā)平臺上對FIFO進行讀操作的部分代碼,設MIC-2718的基地址為300H:
PUCHAR ioPortBase=MapIoSpace(300H);//將物理地址影射為虛擬地址
BYTE aistatus=READ_PORT_UCHAR(ioPortBase+8);//讀MIC-2718的狀態(tài)寄存器
BYTE status=READ_PORT_UCHAR(ioPortBase+25);//讀FIFO的狀態(tài)寄存器
BYTE ad0,ad1;
if(aistatus0x10)//若MIC-2718狀態(tài)寄存器的A/D轉換位有效
{
if(status1!=0)//若FIFO不為空,則讀FIFO
{
ad0=READ_PORT_UCHAR(ioPortBase+23);
ad1=READ_PORT_UCHAR(ioPortBase+24);
}
}
表1 A/D數據寄存器與FIFO數據寄存器的比較
在使用MIC-2718的某一通道分別用常規(guī)方式和FIFO方式對一個持續(xù)變化的電壓源做連續(xù)的信號采集和傳輸時,兩種方式傳輸的數據如表1所示??梢钥闯觯?和第8組中A/D數據寄存器中的數值是錯誤的,可見使用普通A/D傳輸方式存在數據丟失問題,因此并不能準確傳輸數據,而使用FIFO方式可以保證數據傳輸的完整性。
評論