利用USBXpress開(kāi)發(fā)包簡(jiǎn)化應(yīng)用程序?qū)崿F(xiàn)USB通信設(shè)計(jì)
出處:維庫(kù)電子市場(chǎng)網(wǎng) 發(fā)布于:2020-01-14 15:36:52
傳統(tǒng)的USB設(shè)備驅(qū)動(dòng)程序編寫(xiě)異常復(fù)雜,程序員往往很難入手。SILICON Laboratories公司提供的USBXpress開(kāi)發(fā)包大大簡(jiǎn)化了USB通信的應(yīng)用和相關(guān)驅(qū)動(dòng)程序的開(kāi)發(fā),只要做好開(kāi)發(fā)前的準(zhǔn)備工作,USBXpress開(kāi)發(fā)包完全可以實(shí)現(xiàn)USB通信的所有功能。本文介紹USB通信開(kāi)發(fā)的全過(guò)程,以及在開(kāi)發(fā)過(guò)程中需要注意的事項(xiàng)。(主要針對(duì)設(shè)備端USB通信進(jìn)行講解)1、USBXpress簡(jiǎn)介
由SILICON Laboratories公司推出的USBXpress開(kāi)發(fā)包涵蓋了主機(jī)端和設(shè)備端的所有函數(shù)功能,支持C8051F32X、C8051F34X和CP210X設(shè)備的USB通信。USBXpress開(kāi)發(fā)包中包含主機(jī)端的設(shè)備驅(qū)動(dòng)、主機(jī)端設(shè)備驅(qū)動(dòng)安裝程序、主機(jī)端的動(dòng)態(tài)鏈接庫(kù)(DLL)和設(shè)備端的函數(shù)庫(kù)文件。
設(shè)備端的函數(shù)庫(kù)文件提供了支持C805IF32X和C8051F34X設(shè)備USB通信的API函數(shù),這些函數(shù)可以在Keil uVision3編譯環(huán)境下被編譯通過(guò)。編譯前需要在工程中添加相關(guān)的文件,詳見(jiàn)下文。
設(shè)備端函數(shù)庫(kù)中主要的API函數(shù)如下:
USB Clock Start() -初始化USB時(shí)鐘
USB Init()-USB接口初始化
Block Write() -向Buffer中寫(xiě)數(shù)據(jù)
Block Read() -從Buffer中讀數(shù)據(jù)
Get Interrupt Source()-獲取API函數(shù)的中斷標(biāo)志值USB Int Enable() -允許API函數(shù)中斷
USB Int Disable() -不允許API函數(shù)中斷
USB Disable() -不允許USB接口通信
USB Suspend() -延緩USB中斷
2、設(shè)備端的電路設(shè)計(jì)
?。?)USB插座引腳識(shí)別
在沒(méi)備端電路設(shè)計(jì)的過(guò)程中,對(duì)USB插座引腳必須對(duì)應(yīng)連接,否則將直接影響到與主機(jī)端的通信。USB插座一般分為A型插座和B型插座,如圖1所示,其引腳說(shuō)明如表1所列。
(2)基于C8051F340的USB通信電路
基于C8051F340的USB通信電路如圖2所示。
利用USBXpress開(kāi)發(fā)包簡(jiǎn)化應(yīng)用程序?qū)崿F(xiàn)USB通信設(shè)計(jì)(3)USB通信電路說(shuō)明
?、匐娐分械腄-和D+不應(yīng)連接其他負(fù)載電路,因?yàn)槿魏呜?fù)載將影響數(shù)據(jù)線路上的電流,從而影響數(shù)據(jù)傳輸,直接后果將導(dǎo)致主機(jī)端無(wú)法識(shí)別設(shè)備。
?、贘TAG口線中的VDD引腳為+3 V輸入,輸入電壓過(guò)大將損壞器件。USB插口引腳與C8051F340引腳應(yīng)對(duì)應(yīng)連接,不要有誤。
?、跜8051F340的VBUS、REGIN和VDD引腳的連接有多種方式(穩(wěn)壓器配置),詳見(jiàn)表2。
3、設(shè)備端的驅(qū)動(dòng)程序設(shè)計(jì)
在Keil uVision3編譯環(huán)境下,用USBXpress 工具包中的API函數(shù)設(shè)計(jì)設(shè)備端的USB通信,前提是在工程中添加C8051F340.h、USB_API.h和USBX_F34X.LIB文件(USBXpress工具包提供相關(guān)文件)。
下面介紹設(shè)備端USB的數(shù)據(jù)傳輸。在進(jìn)行數(shù)據(jù)傳輸之前,必須對(duì)USB時(shí)鐘和USB接口初始化:
利用USBXpress開(kāi)發(fā)包簡(jiǎn)化應(yīng)用程序?qū)崿F(xiàn)USB通信設(shè)計(jì)(1)USB接口初始化參數(shù)定義
?、賃SB_VID,16位二進(jìn)制賣(mài)主ID號(hào),一般用SILICONLab的ID號(hào)(OXl0C4)。
?、赨SB_PID,16位二進(jìn)制產(chǎn)品ID號(hào),一般USBXpress規(guī)定為OXEA61。
利用USBXpress開(kāi)發(fā)包簡(jiǎn)化應(yīng)用程序?qū)崿F(xiàn)USB通信設(shè)計(jì)④USB_ProductStr,BYTE型指針,指向描述產(chǎn)品的字符串,不能為空。
?、軺SB_SerialStr,BYTE型指針,指向描述序列號(hào)的字符串,不能為空。
?、轚SB_MaxPower,BYTE型,說(shuō)明總線電流,極限為500 mA。若取值0x32,則表示電流為100 mA。
?、遀SB_PwAttributes,BYTE型,用于供電配置。如果設(shè)備自己供電第6位置“1”,若為總線供電則為“O”。如果設(shè)備提供弱上拉作用,第5位置“l(fā)”,位0~4必須為“O”,位7必須為“1”。
?、郩SB_bcdDevice,無(wú)符號(hào)int型,用BCD碼表示設(shè)備的版本號(hào),如2.13版為Ox0213。
(2)USB中斷函數(shù)
設(shè)備端USB通信中API函數(shù)的功能,都在一個(gè)中斷模塊里面實(shí)現(xiàn),為此必須提供一個(gè)中斷向量。其中,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è)備實(shí)例在主機(jī)端打開(kāi))、DEVICE SUSPEND(延緩信號(hào))等。
中斷函數(shù)如下:

在main函數(shù)中進(jìn)行初始化之后,若中斷允許,通過(guò)函數(shù)Block_write來(lái)發(fā)送數(shù)據(jù),發(fā)送數(shù)據(jù)的字節(jié)數(shù)不能超過(guò)4096。發(fā)送結(jié)束后將觸發(fā)中斷,從而進(jìn)入中斷服務(wù)程序進(jìn)行判斷操作。如果主機(jī)端向設(shè)備端的Buffer寫(xiě)入數(shù)據(jù)完成,也將觸發(fā)中斷,判斷執(zhí)行Block_Read操作將Buffer中的數(shù)據(jù)存入指定的存儲(chǔ)單元。
發(fā)送數(shù)據(jù)的函數(shù)原型為:Block_write(數(shù)據(jù)存儲(chǔ)單元首地址,發(fā)送的字節(jié)數(shù))。
(3)主機(jī)端USB應(yīng)用程序設(shè)計(jì)
在VC++6.O編譯環(huán)境下開(kāi)發(fā)主機(jī)端的USB通信應(yīng)用程序,需要注意在編譯之前向工程中添加開(kāi)發(fā)包提供的SiUSBXp.dll、SiUSBXp.h和SiUSBXp.lib文件。
為了能讓主機(jī)端識(shí)別USB設(shè)備并與之通信,在運(yùn)行應(yīng)用程序之前,要安裝主機(jī)端的驅(qū)動(dòng)程序(開(kāi)發(fā)包已提供)。安裝了驅(qū)動(dòng)程序,主機(jī)端才能識(shí)別USB設(shè)備,在設(shè)備管理器中可以找到USB設(shè)備的相關(guān)描述信息。
對(duì)USB設(shè)備的描述信息,除了可以修改設(shè)備端發(fā)送過(guò)來(lái)的描述符之外,還可以修改在主機(jī)端驅(qū)動(dòng)安裝目錄下*.inf文件中的信息。
結(jié)語(yǔ)
本文詳細(xì)介紹了USB通信的開(kāi)發(fā)過(guò)程、電路設(shè)計(jì)和設(shè)備端的驅(qū)動(dòng)設(shè)計(jì),簡(jiǎn)單說(shuō)明了USBXpress開(kāi)發(fā)包在主機(jī)端應(yīng)用的條件設(shè)置。所有設(shè)計(jì)思路和方法都通過(guò)了實(shí)驗(yàn)驗(yàn)證,可以直接用于工程項(xiàng)目開(kāi)發(fā)。通過(guò)此方法,程序員可以很容易地進(jìn)行一系列USB通信應(yīng)用的設(shè)計(jì)和編程。
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫(kù)電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫(kù)電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫(kù)電子市場(chǎng)網(wǎng),http://www.hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類(lèi)作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問(wèn)題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- EDA技術(shù)工具鏈與全流程設(shè)計(jì)運(yùn)維指南2026/1/5 10:28:51
- PLC程序現(xiàn)場(chǎng)疑難問(wèn)題排查與深度優(yōu)化指南2025/12/24 14:36:36
- PLC程序現(xiàn)場(chǎng)調(diào)試與優(yōu)化實(shí)操指南2025/12/24 14:29:57
- 工業(yè)PLC模擬量信號(hào)采集:調(diào)理技術(shù)與抗干擾工程方案2025/12/15 14:39:08
- PLC設(shè)備如何選型2025/9/5 17:15:14
- 編碼器的工作原理及作用1
- 超強(qiáng)整理!PCB設(shè)計(jì)之電流與線寬的關(guān)系2
- 三星(SAMSUNG)貼片電容規(guī)格對(duì)照表3
- 電腦藍(lán)屏代碼大全4
- 國(guó)標(biāo)委發(fā)布《電動(dòng)汽車(chē)安全要求第3部分:人員觸電防護(hù)》第1號(hào)修改單5
- 通俗易懂談上拉電阻與下拉電阻6
- 繼電器的工作原理以及驅(qū)動(dòng)電路7
- 電容單位8
- 跟我學(xué)51單片機(jī)(三):?jiǎn)纹瑱C(jī)串口通信實(shí)例9
- 一種三極管開(kāi)關(guān)電路設(shè)計(jì)10
- MOSFET在汽車(chē)電子中的應(yīng)用要求
- 通信設(shè)備電源管理IC應(yīng)用解析
- 通信設(shè)備連接器選型與設(shè)計(jì)
- PCB電磁兼容性(EMC)設(shè)計(jì)核心實(shí)操規(guī)范
- 物聯(lián)網(wǎng)節(jié)點(diǎn)低功耗設(shè)計(jì):信號(hào)鏈中的濾波與功耗管理
- 同步整流中MOSFET的應(yīng)用要點(diǎn)
- 輸出短路對(duì)電源芯片的影響
- 連接器壽命評(píng)估與可靠性設(shè)計(jì)
- PCB電源完整性(PI)設(shè)計(jì)核心實(shí)操規(guī)范
- 多層PCB疊層設(shè)計(jì)核心實(shí)操規(guī)范









