C8051F340的USBXpress開發(fā)包USB通信設(shè)計
⑦USB_PwAttributes,BYTE型,用于供電配置。如果設(shè)備自己供電第6位置“1”,若為總線供電則為“O”。如果設(shè)備提供弱上拉作用,第5位置“l(fā)”,位0~4必須為“O”,位7必須為“1”。
⑧USB_bcdDevice,無符號int型,用BCD碼表示設(shè)備的版本號,如2.13版為Ox0213。
(2)USB中斷函數(shù)
設(shè)備端USB通信中API函數(shù)的功能,都在一個中斷模塊里面實現(xiàn),為此必須提供一個中斷向量。其中,0x008B(Interrupt 17)是F34X設(shè)備的中斷向量。在main函數(shù)中,只有允許了USB中斷(調(diào)用USB Int Enable函數(shù)),才能進(jìn)入中斷。一旦進(jìn)入中斷服務(wù)程序,必須先獲得中斷標(biāo)志(調(diào)用Get_Interrupt_Source函數(shù),返回BYTE型中斷標(biāo)志),后續(xù)操作根據(jù)獲得的中斷標(biāo)志值與工具包自定義的中斷標(biāo)志值判斷執(zhí)行。自定義的中斷標(biāo)志值主要有:USB_RESET(復(fù)位中斷)、TX_COMPLETE(發(fā)送完成中斷)、RX_COMPLETE(允許接收中斷)、DEVICEOPEN(設(shè)備實例在主機端打開)、DEVICE SUSPEND(延緩信號)等。
中斷函數(shù)如下:本文引用地址:http://m.butianyuan.cn/article/157255.htm
在main函數(shù)中進(jìn)行初始化之后,若中斷允許,通過函數(shù)Block_write來發(fā)送數(shù)據(jù),發(fā)送數(shù)據(jù)的字節(jié)數(shù)不能超過4096。發(fā)送結(jié)束后將觸發(fā)中斷,從而進(jìn)入中斷服務(wù)程序進(jìn)行判斷操作。如果主機端向設(shè)備端的Buffer寫入數(shù)據(jù)完成,也將觸發(fā)中斷,判斷執(zhí)行Block_Read操作將Buffer中的數(shù)據(jù)存入指定的存儲單元。
發(fā)送數(shù)據(jù)的函數(shù)原型為:Block_write(數(shù)據(jù)存儲單元首地址,發(fā)送的字節(jié)數(shù))。
(3)主機端USB應(yīng)用程序設(shè)計
在VC++6.O編譯環(huán)境下開發(fā)主機端的USB通信應(yīng)用程序,需要注意在編譯之前向工程中添加開發(fā)包提供的SiUSBXp.dll、SiUSBXp.h和SiUSBXp.lib文件。
為了能讓主機端識別USB設(shè)備并與之通信,在運行應(yīng)用程序之前,要安裝主機端的驅(qū)動程序(開發(fā)包已提供)。安裝了驅(qū)動程序,主機端才能識別USB設(shè)備,在設(shè)備管理器中可以找到USB設(shè)備的相關(guān)描述信息。
對USB設(shè)備的描述信息,除了可以修改設(shè)備端發(fā)送過來的描述符之外,還可以修改在主機端驅(qū)動安裝目錄下*.inf文件中的信息。
結(jié)語
本文詳細(xì)介紹了USB通信的開發(fā)過程、電路設(shè)計和設(shè)備端的驅(qū)動設(shè)計,簡單說明了USBXpress開發(fā)包在主機端應(yīng)用的條件設(shè)置。所有設(shè)計思路和方法都通過了實驗驗證,可以直接用于工程項目開發(fā)。通過此方法,程序員可以很容易地進(jìn)行一系列USB通信應(yīng)用的設(shè)計和編程。
評論