新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于AT89C52和USB接口的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)

基于AT89C52和USB接口的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)

作者: 時(shí)間:2011-12-16 來(lái)源:網(wǎng)絡(luò) 收藏

固件程序?qū)X2配置為異步Slave FIFl0模式,總線寬度8位,在4個(gè)端點(diǎn)中,EP4和:EP8未被使用,EP2和EP6的配置如表1所示。由于采用自動(dòng)輸入/輸出模式,主機(jī)和單片機(jī)通過(guò)旁路FX2的CPU直接連接,所有數(shù)據(jù)被直接通過(guò)FIFO管道提交,不需固件程序干預(yù)。在FX2的slave FIF0模式下,F(xiàn)IFOADR[1:0]引腳作為地址線選擇某個(gè)端點(diǎn),SLCS相當(dāng)于片選信號(hào),SLwR(寫(xiě))與單片機(jī)的wR引腳相連,SLRD(讀)和SLOE(輸出使能)與單片機(jī)的RD引腳相連。單片機(jī)通過(guò)訪問(wèn)地址為0x00的外部存儲(chǔ)器的方式就可以實(shí)現(xiàn)對(duì)EP2的訪問(wèn),同理可訪問(wèn)EP6端點(diǎn)。

單片機(jī)通過(guò)FX2的3個(gè)標(biāo)志引腳(FALGA,F(xiàn)LAGB,F(xiàn)LAGC)來(lái)全面掌握FX2的各端點(diǎn)FIFO的狀況。FLAGA定義為輸入端點(diǎn)EP6的滿標(biāo)志,當(dāng)輸入數(shù)據(jù)滿時(shí)該引腳為低電平;FLAGB被定義為輸出端點(diǎn)EP2的空標(biāo)志,當(dāng)主機(jī)傳來(lái)的數(shù)據(jù)被讀空時(shí)該引腳為低電平;FLAGC定義為當(dāng)EP2端點(diǎn)整個(gè)FIF0中的字節(jié)數(shù)大于等于1時(shí)為低電平。假設(shè)當(dāng)前主機(jī)沒(méi)有傳送命令,則FLAGC為高電平,當(dāng)主機(jī)發(fā)送命令后,EP2的字節(jié)數(shù)大于等于1,則FLAGC變?yōu)榈碗娖健_@樣在FALGC引腳上產(chǎn)生了一個(gè)下降沿,將此引腳與單片機(jī)的INTO引腳相連,則當(dāng)主機(jī)發(fā)送命令后單片機(jī)會(huì)觸發(fā)INT0中斷,在INTO的中斷處理程序中單片機(jī)讀取并執(zhí)行傳來(lái)的命令。

2 系統(tǒng)軟件設(shè)計(jì)
2.1 驅(qū)動(dòng)程序
在EZ—USB FX2開(kāi)發(fā)包中,提供有通用的驅(qū)動(dòng)程序包,對(duì)該程序包稍加修改就可生成一個(gè)具有下載固件并完成設(shè)備重枚舉功能的設(shè)備驅(qū)動(dòng)程序。文獻(xiàn)對(duì)驅(qū)動(dòng)程序的開(kāi)發(fā)步驟有詳細(xì)的記述,這里采用的就是這個(gè)通用驅(qū)動(dòng)程序(GPD)。
2.2 主機(jī)應(yīng)用程序
主機(jī)應(yīng)用程序主要實(shí)現(xiàn)向設(shè)備發(fā)送命令數(shù)據(jù)包,接收設(shè)備傳送的數(shù)據(jù)并進(jìn)行顯示,主機(jī)應(yīng)用程序通過(guò)通用驅(qū)動(dòng)程序來(lái)完成對(duì)設(shè)備的控制和通信。應(yīng)用程序采用VC6.O編寫(xiě),與設(shè)備通信時(shí),首先通過(guò)調(diào)用win32函數(shù)CreateFile()來(lái)取得訪問(wèn)設(shè)備驅(qū)動(dòng)程序的句柄。該函數(shù)的語(yǔ)句實(shí)例如下:


用戶得到設(shè)備句柄后,就可以使用win32函數(shù)DevicelontroI()來(lái)向設(shè)備提交相應(yīng)的IOCTL控制碼,進(jìn)行讀寫(xiě)和控制操作,完成相應(yīng)操作后應(yīng)用程序通過(guò)Win32函數(shù)CloseHandle()關(guān)閉設(shè)備句柄結(jié)束1次操作。以下是部分操作的代碼實(shí)例:



評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉