基于單片機和USB接口的數(shù)據(jù)采集系統(tǒng)設(shè)計
固件程序?qū)X2配置為異步Slave FIFl0模式,總線寬度8位,在4個端點中,EP4和:EP8未被使用,EP2和EP6的配置如表1所示。由于采用自動輸入/輸出模式,主機和單片機通過旁路FX2的CPU直接連接,所有數(shù)據(jù)被直接通過FIFO管道提交,不需固件程序干預(yù)。在FX2的slave FIF0模式下,F(xiàn)IFOADR[1:0]引腳作為地址線選擇某個端點,SLCS相當(dāng)于片選信號,SLwR(寫)與單片機的wR引腳相連,SLRD(讀)和SLOE(輸出使能)與單片機的RD引腳相連。單片機通過訪問地址為0x00的外部存儲器的方式就可以實現(xiàn)對EP2的訪問,同理可訪問EP6端點。本文引用地址:http://butianyuan.cn/article/173758.htm
單片機通過FX2的3個標(biāo)志引腳(FALGA,F(xiàn)LAGB,F(xiàn)LAGC)來全面掌握FX2的各端點FIFO的狀況。FLAGA定義為輸入端點EP6的滿標(biāo)志,當(dāng)輸入數(shù)據(jù)滿時該引腳為低電平;FLAGB被定義為輸出端點EP2的空標(biāo)志,當(dāng)主機傳來的數(shù)據(jù)被讀空時該引腳為低電平;FLAGC定義為當(dāng)EP2端點整個FIF0中的字節(jié)數(shù)大于等于1時為低電平。假設(shè)當(dāng)前主機沒有傳送命令,則FLAGC為高電平,當(dāng)主機發(fā)送命令后,EP2的字節(jié)數(shù)大于等于1,則FLAGC變?yōu)榈碗娖?。這樣在FALGC引腳上產(chǎn)生了一個下降沿,將此引腳與單片機的INTO引腳相連,則當(dāng)主機發(fā)送命令后單片機會觸發(fā)INT0中斷,在INTO的中斷處理程序中單片機讀取并執(zhí)行傳來的命令。
2 系統(tǒng)軟件設(shè)計
2.1 驅(qū)動程序
在EZ―USB FX2開發(fā)包中,提供有通用的驅(qū)動程序包,對該程序包稍加修改就可生成一個具有下載固件并完成設(shè)備重枚舉功能的設(shè)備驅(qū)動程序。文獻對驅(qū)動程序的開發(fā)步驟有詳細的記述,這里采用的就是這個通用驅(qū)動程序(GPD)。
2.2 主機應(yīng)用程序
主機應(yīng)用程序主要實現(xiàn)向設(shè)備發(fā)送命令數(shù)據(jù)包,接收設(shè)備傳送的數(shù)據(jù)并進行顯示,主機應(yīng)用程序通過通用驅(qū)動程序來完成對設(shè)備的控制和通信。應(yīng)用程序采用VC6.O編寫,與設(shè)備通信時,首先通過調(diào)用win32函數(shù)CreateFile()來取得訪問設(shè)備驅(qū)動程序的句柄。該函數(shù)的語句實例如下:
用戶得到設(shè)備句柄后,就可以使用win32函數(shù)DevicelontroI()來向設(shè)備提交相應(yīng)的IOCTL控制碼,進行讀寫和控制操作,完成相應(yīng)操作后應(yīng)用程序通過Win32函數(shù)CloseHandle()關(guān)閉設(shè)備句柄結(jié)束1次操作。以下是部分操作的代碼實例:
評論