基于A(yíng)RM的高速數據采集卡
在手動(dòng)采集方式下,TRIENO為低電平,TRIEN1高電平,當緩存器為空即FWr_FUL為高電平,通過(guò)LabVIEW制作的界面控制QSTART為高電平時(shí),FWr_EN被拉高進(jìn)行數據采集。當緩存器滿(mǎn)時(shí)FWr_FUL被拉低,停止采集數據。
在輸入信號觸發(fā)方式下,TRIEN0和QSTART為低電平,當緩存器為空即FWr_FUL為高電平,輸入信號電壓高于比較器的參考電壓時(shí), TOUT被拉高,FWr_EN被拉高進(jìn)行數據采集。當緩存器滿(mǎn)時(shí)FWr_FUL被拉低,停止采集數據。拉高TRIEN1后讀取緩存數據。
采集周期信號和輸入信號觸發(fā)方式相似,只是保持TRIEN1為高電平。在讀取緩存數據時(shí).觸發(fā)信號到來(lái)后采集數據。
4.1 基于μC/OS-II的USB驅動(dòng)編程
μC/OS-II提供了多任務(wù)實(shí)時(shí)操作系統的內核。在應用該操作系統時(shí),通常需要用戶(hù)自己編寫(xiě)基于μC/OS-II的外圍器件驅動(dòng)程序,以使外圍器件能在操作系統的協(xié)調下更好地為用戶(hù)服務(wù)。為了使軟件可移植性強、易維護,筆者在編寫(xiě)LPC2142 USB固件時(shí)綜合考慮USB協(xié)議、LPC2142 USB硬件條件,把驅動(dòng)程序分為5層,如圖3所示。圖中的雙向線(xiàn)表示用戶(hù)軟件與USB固件之間存在著(zhù)數據交換,單向線(xiàn)表示上層軟件對下層軟件的調用,這樣使得固件結構分明。
擁有了USB驅動(dòng)程序,用戶(hù)可在此平臺上完成用戶(hù)軟件所要實(shí)現的任務(wù),如圖4所示。單向線(xiàn)表示主任務(wù)對讀寫(xiě)任務(wù)的控制。主任務(wù)通過(guò)信號量控制讀/寫(xiě)任務(wù)的運行狀態(tài),從而實(shí)現對FIFO緩存器的讀和寫(xiě);雙向線(xiàn)表示各個(gè)模塊之間存在著(zhù)數據交換。為了加快大量數據的收發(fā),本程序把LPC2142USB的邏輯端點(diǎn)1作為控制命令的傳輸通道,把端點(diǎn)2作為數據的傳輸通道。
評論