0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

利用USBXpress開(kāi)發(fā)包簡(jiǎn)化應(yīng)用程序?qū)崿F(xiàn)USB通信設(shè)計(jì)

電子設(shè)計(jì) ? 來(lái)源:網(wǎng)絡(luò)整理 ? 作者:佚名 ? 2020-01-14 08:02 ? 次閱讀

傳統(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ì)

(1)USB插座引腳識(shí)別

在沒(méi)備端電路設(shè)計(jì)的過(guò)程中,對(duì)USB插座引腳必須對(duì)應(yīng)連接,否則將直接影響到與主機(jī)端的通信。USB插座一般分為A型插座和B型插座,如圖1所示,其引腳說(shuō)明如表1所列。

利用USBXpress開(kāi)發(fā)包簡(jiǎn)化應(yīng)用程序?qū)崿F(xiàn)USB通信設(shè)計(jì)

利用USBXpress開(kāi)發(fā)包簡(jiǎn)化應(yīng)用程序?qū)崿F(xiàn)USB通信設(shè)計(jì)

(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-和D+不應(yīng)連接其他負(fù)載電路,因?yàn)槿魏呜?fù)載將影響數(shù)據(jù)線路上的電流,從而影響數(shù)據(jù)傳輸,直接后果將導(dǎo)致主機(jī)端無(wú)法識(shí)別設(shè)備。

②JTAG口線中的VDD引腳為+3 V輸入,輸入電壓過(guò)大將損壞器件。USB插口引腳與C8051F340引腳應(yīng)對(duì)應(yīng)連接,不要有誤。

③C8051F340的VBUS、REGIN和VDD引腳的連接有多種方式(穩(wěn)壓器配置),詳見(jiàn)表2。

利用USBXpress開(kāi)發(fā)包簡(jiǎn)化應(yīng)用程序?qū)崿F(xiàn)USB通信設(shè)計(jì)

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ù)定義

①USB_VID,16位二進(jìn)制賣主ID號(hào),一般用SILICONLab的ID號(hào)(OXl0C4)。

②USB_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)品的字符串,不能為空。

⑤USB_SerialStr,BYTE型指針,指向描述序列號(hào)的字符串,不能為空。

⑥USB_MaxPower,BYTE型,說(shuō)明總線最大電流,極限為500 mA。若取值0x32,則表示最大電流為100 mA。

⑦USB_PwAttributes,BYTE型,用于供電配置。如果設(shè)備自己供電第6位置“1”,若為總線供電則為“O”。如果設(shè)備提供弱上拉作用,第5位置“l(fā)”,位0~4必須為“O”,位7必須為“1”。

⑧USB_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ù)如下:

利用USBXpress開(kāi)發(fā)包簡(jiǎn)化應(yīng)用程序?qū)崿F(xiàn)USB通信設(shè)計(jì)

在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ì)和編程。

責(zé)任編輯:gt


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • usb
    usb
    +關(guān)注

    關(guān)注

    60

    文章

    7945

    瀏覽量

    264679
  • 時(shí)鐘
    +關(guān)注

    關(guān)注

    10

    文章

    1733

    瀏覽量

    131483
  • 應(yīng)用程序
    +關(guān)注

    關(guān)注

    37

    文章

    3268

    瀏覽量

    57710
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    博通公司利用WICED開(kāi)發(fā)包為物聯(lián)網(wǎng)錦上添花

    聯(lián)網(wǎng)產(chǎn)品開(kāi)發(fā)的新捷徑。智能開(kāi)發(fā)包為低功耗客戶端設(shè)備提供了集成智能藍(lán)牙(即低功耗藍(lán)牙)的軟件棧和應(yīng)用程序概要,為OEM提供了便捷、經(jīng)濟(jì)的嵌入式無(wú)線解決方案,其占用空間極小,同時(shí)增加了支持連接設(shè)備種類。
    發(fā)表于 05-15 18:39 ?937次閱讀

    利用物聯(lián)網(wǎng)開(kāi)發(fā)套件簡(jiǎn)化應(yīng)用程序的設(shè)計(jì)

    可能已經(jīng)熟悉這些技術(shù),但是編寫(xiě)移動(dòng)設(shè)備應(yīng)用程序和云代碼開(kāi)發(fā)以及確保足夠的安全性等其他功能是相對(duì)較新的技能。
    的頭像 發(fā)表于 03-29 08:34 ?5370次閱讀

    [轉(zhuǎn)帖]USB電腦紅外遙控器 原理框圖 及二次開(kāi)發(fā)包

    ,外圍電路簡(jiǎn)單穩(wěn)定,方便了批量生產(chǎn)和不良率的控制?!锊恍枰饧与娫?,直接取USB電源供電。 關(guān)于二次開(kāi)發(fā)包★ 功能: 將USB接收器的紅外遙控信號(hào),接收、解析出來(lái),送給應(yīng)用程序
    發(fā)表于 12-13 15:40

    如何利用STM32的USB實(shí)現(xiàn)通信?

    如何利用STM32的USB實(shí)現(xiàn)通信?
    發(fā)表于 02-21 06:50

    利用OPC實(shí)現(xiàn)VC應(yīng)用程序與PLC的數(shù)據(jù)交換

    利用OPC實(shí)現(xiàn)VC應(yīng)用程序與PLC的數(shù)據(jù)交換   VC(Visual  C++)是功能強(qiáng)大的一種Windows應(yīng)用程序可視化軟件開(kāi)發(fā)
    發(fā)表于 04-17 18:04 ?4872次閱讀
    <b class='flag-5'>利用</b>OPC<b class='flag-5'>實(shí)現(xiàn)</b>VC<b class='flag-5'>應(yīng)用程序</b>與PLC的數(shù)據(jù)交換

    利用FTP實(shí)現(xiàn)應(yīng)用程序的遠(yuǎn)程更新

    FTP (File Transfer Protocol),是用于Internet上的控制文件的雙向傳輸?shù)膮f(xié)議。同時(shí),它也是一個(gè)應(yīng)用程序。本方案主要介紹如何利用網(wǎng)絡(luò)(以太網(wǎng)、GPRS上網(wǎng)),通過(guò)FTP協(xié)議來(lái)實(shí)現(xiàn)
    發(fā)表于 06-09 16:08 ?46次下載

    利用LabWindowsCVI實(shí)現(xiàn)串口通信_labview程序案例

    程序案例 利用LabWindowsCVI實(shí)現(xiàn)串口通信
    發(fā)表于 01-12 15:44 ?132次下載

    USB通信程序開(kāi)發(fā)

    USB通信程序開(kāi)發(fā),有需要的朋友可以下來(lái)看看 。
    發(fā)表于 01-25 10:26 ?17次下載

    Android應(yīng)用程序開(kāi)發(fā)USB數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)

    協(xié)議。本文結(jié)合兩者的突出優(yōu)點(diǎn)設(shè)計(jì)了一種新型數(shù)據(jù)采集系統(tǒng),以下將詳細(xì)闡述Android 3. 1平臺(tái)下的USB 應(yīng)用程序開(kāi)發(fā)的完整過(guò)程,以及與LPC2142之間的USB
    的頭像 發(fā)表于 11-09 09:10 ?4129次閱讀
    Android<b class='flag-5'>應(yīng)用程序</b><b class='flag-5'>開(kāi)發(fā)</b>及<b class='flag-5'>USB</b>數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)

    MATLAB串口調(diào)試助手應(yīng)用程序和基于MATLAB開(kāi)發(fā)USB的串口通信源代碼

    本文檔的主要內(nèi)容詳細(xì)介紹的是MATLAB串口調(diào)試助手應(yīng)用程序和基于MATLAB開(kāi)發(fā)USB的串口通信源代碼。
    發(fā)表于 11-05 08:00 ?98次下載
    MATLAB串口調(diào)試助手<b class='flag-5'>應(yīng)用程序</b>和基于MATLAB<b class='flag-5'>開(kāi)發(fā)</b><b class='flag-5'>USB</b>的串口<b class='flag-5'>通信</b>源代碼

    USB程序燒錄軟件應(yīng)用程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是USB程序燒錄軟件應(yīng)用程序免費(fèi)下載??梢砸曨l大部分ARM開(kāi)發(fā)板。
    發(fā)表于 10-11 08:00 ?3次下載
    <b class='flag-5'>USB</b><b class='flag-5'>程序</b>燒錄軟件<b class='flag-5'>應(yīng)用程序</b>免費(fèi)下載

    USBXpress開(kāi)發(fā)包簡(jiǎn)化USB通信的應(yīng)用開(kāi)發(fā)及注意事項(xiàng)

    傳統(tǒng)的USB設(shè)備驅(qū)動(dòng)程序編寫(xiě)異常復(fù)雜,程序員往往很難入手。SILICON Laboratories公司提供的USBXpress開(kāi)發(fā)包大大
    的頭像 發(fā)表于 01-21 17:14 ?5443次閱讀
    <b class='flag-5'>USBXpress</b><b class='flag-5'>開(kāi)發(fā)包</b><b class='flag-5'>簡(jiǎn)化</b><b class='flag-5'>USB</b><b class='flag-5'>通信</b>的應(yīng)用<b class='flag-5'>開(kāi)發(fā)</b>及注意事項(xiàng)

    嵌入式Linux應(yīng)用程序開(kāi)發(fā)-(9)UDP網(wǎng)絡(luò)通信應(yīng)用程序(UDP-Socket)

    基于UDP協(xié)議的網(wǎng)絡(luò)通信應(yīng)用程序(UDP-Socket)前兩篇文章介紹了基于TCP/IP協(xié)議的網(wǎng)絡(luò)通信應(yīng)用程序。嵌入式Linux應(yīng)用程序
    發(fā)表于 11-02 12:21 ?35次下載
    嵌入式Linux<b class='flag-5'>應(yīng)用程序</b><b class='flag-5'>開(kāi)發(fā)</b>-(9)UDP網(wǎng)絡(luò)<b class='flag-5'>通信</b><b class='flag-5'>應(yīng)用程序</b>(UDP-Socket)

    MG82G5E32開(kāi)發(fā)包(應(yīng)用.開(kāi)發(fā)板.范例程序)

    MG82G5E32 開(kāi)發(fā)包 (應(yīng)用, 開(kāi)發(fā)板, 范例程序)免費(fèi)下載。
    發(fā)表于 07-01 09:41 ?2次下載
    MG82G5E32<b class='flag-5'>開(kāi)發(fā)包</b>(應(yīng)用.<b class='flag-5'>開(kāi)發(fā)</b>板.范例<b class='flag-5'>程序</b>)

    USB RFM應(yīng)用程序

    電子發(fā)燒友網(wǎng)站提供《USB RFM應(yīng)用程序.zip》資料免費(fèi)下載
    發(fā)表于 07-20 17:10 ?1次下載
    <b class='flag-5'>USB</b> RFM<b class='flag-5'>應(yīng)用程序</b>