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

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

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

USB通信協(xié)議

放人 ? 來源:電氣工程及其自動(dòng)化學(xué)習(xí) ? 作者:電氣工程及其自動(dòng) ? 2022-11-25 01:35 ? 次閱讀

USB,是英文Universal Serial Bus(通用串行總線)、支持設(shè)備的即插即用和熱插拔功能。在1994年底由英特爾、IBM、Microsoft等公司聯(lián)合提出的,在此之前PC的接口雜亂,擴(kuò)展能力差,熱拔插不支持等。USB正是為了解決速度,擴(kuò)展能力,易用性等而出現(xiàn)的,本文闡述了usb 協(xié)議的特點(diǎn)及其四種傳輸模式。
1. usb的特點(diǎn)

5ed6fb50-6c1e-11ed-b468-dac502259ad0.jpg

USB 接口有4根線,兩根電源及兩根信號(hào),Standard A類型的接口定義 如下
一般的排列方式是:紅白綠黑從左到右
紅色-USB電源:標(biāo)有-VCC、Power、5V、5VSB字樣
綠色-USB數(shù)據(jù)線:(正)-DATA+、USBD+、PD+、USBDT+
白色-USB數(shù)據(jù)線:(負(fù))-DATA-、USBD-、PD-、USBDT+
黑色-地線:GND、Ground
1.1 Usb的四層描述符
USB協(xié)議采取主從模式,從設(shè)備端沒有主動(dòng)通知USB主機(jī)端的能力,從機(jī)插入后,主機(jī)控制器根據(jù)協(xié)議,獲取設(shè)備描述符及驅(qū)動(dòng)匹配。 每個(gè)usb設(shè)備可以有一個(gè)或多個(gè)配置(config),不同的配置的體現(xiàn)即不同的組合接口。 接口(interface)是一個(gè)邏輯概念,接口之間通常是隔離的,互相不干擾。 端點(diǎn)(endpoint)是usb設(shè)備的唯一可識(shí)別部分,也是host和device之間的通信流的終點(diǎn)。它是一個(gè)host或device上的一個(gè)數(shù)據(jù)緩沖區(qū),用來存放和發(fā)送usb的各種數(shù)據(jù)。每個(gè)端點(diǎn)都是一個(gè)單一連接,支持一個(gè)方向的數(shù)據(jù)流(in: device→host)(out: host→device)。 端點(diǎn)0:所有的usb設(shè)備都要擁有端點(diǎn)0,該端點(diǎn)用于對(duì)一個(gè)邏輯設(shè)備進(jìn)行配置。端點(diǎn)0支持控制傳輸,且總是在設(shè)備接入和上電時(shí)就進(jìn)行配置。
一個(gè)設(shè)備通常有一個(gè)或多個(gè)配置;
一個(gè)配置通常有一個(gè)或多個(gè)接口;
一個(gè)接口通常有一個(gè)或多個(gè)端點(diǎn)。

5ef3ead0-6c1e-11ed-b468-dac502259ad0.jpg

》設(shè)備描述符
/* USB_DT_DEVICE: Device descriptor /
struct usb_device_descriptor {
__u8 bLength; //本結(jié)構(gòu)體大小
__u8 bDescriptorType; //描述符類型
__le16 bcdUSB; //usb版本號(hào) 200->USB2.0
__u8 bDeviceClass; //設(shè)備類
__u8 bDeviceSubClass; //設(shè)備類子類
__u8 bDeviceProtocol; //設(shè)備協(xié)議,以上三點(diǎn)都是USB官方定義
__u8 bMaxPacketSize0; //端點(diǎn)0最大包大小
__le16 idVendor; //廠家id
__le16 idProduct; //產(chǎn)品id
__le16 bcdDevice; //設(shè)備出廠編號(hào)
__u8 iManufacturer; //設(shè)備廠商字符串索引
__u8 iProduct; //產(chǎn)品描述
__u8 iSerialNumber; //設(shè)備序列號(hào)字符串索引
__u8 bNumConfigurations; //配置的個(gè)數(shù)
} attribute ((packed));
》配置描述符
/ USB_DT_CONFIG: Config descriptor /
struct usb_config_descriptor {
__u8 bLength; //自身長(zhǎng)度
__u8 bDescriptorType;//描述符類型(0x02)
__le16 wTotalLength; //該配置下,信息的總長(zhǎng)度
__u8 bNumInterfaces; //接口的個(gè)數(shù)
__u8 bConfigurationValue; //Set_Configuration命令所需要的參數(shù)
__u8 iConfiguration; //描述該配置的字符串的索引值
__u8 bmAttributes;//供電模式的選擇
__u8 bMaxPower;//設(shè)備從總線提取的最大電流
} attribute ((packed));
》接口描述符
/ USB_DT_INTERFACE: Interface descriptor */
struct usb_interface_descriptor {
__u8 bLength;
__u8 bDescriptorType;//接口描述符的類型編號(hào)(0x04)
__u8 bInterfaceNumber; //該接口的編號(hào)
__u8 bAlternateSetting; //備用的接口描述符編號(hào)
__u8 bNumEndpoints; //該接口使用的端點(diǎn)數(shù),不包括端點(diǎn)0
__u8 bInterfaceClass; //接口類
__u8 bInterfaceSubClass; //子類
__u8 bInterfaceProtocol; //協(xié)議
__u8 iInterface;//描述該接口的字符串索引值
} attribute ((packed));

》端點(diǎn)描述符
/* USB_DT_ENDPOINT: Endpoint descriptor */
struct usb_endpoint_descriptor {
__u8 bLength;//端點(diǎn)描述符字節(jié)數(shù)大?。?個(gè)字節(jié))
__u8 bDescriptorType;//端點(diǎn)描述符類型編號(hào)(0x05)
__u8 bEndpointAddress; //端點(diǎn)地址及輸入輸出屬性
__u8 bmAttributes; //屬性,包含端點(diǎn)的傳輸類型,控制,中斷…
__le16 wMaxPacketSize; //端點(diǎn)收、發(fā)的最大包大小
__u8 bInterval; //主機(jī)查詢端點(diǎn)的時(shí)間間隔
__u8 bRefresh;
__u8 bSynchAddress;
} attribute ((packed));
1.2 USB 結(jié)構(gòu)及通信形式

USB總線是一個(gè)單主方式的實(shí)現(xiàn),是一種輪詢方式的總線,為樹形拓?fù)浣Y(jié)構(gòu)。協(xié)議規(guī)定所有的數(shù)據(jù)傳輸都必須由主機(jī)發(fā)起,host controller初始化所有的數(shù)據(jù)傳輸,各種設(shè)備緊緊圍繞在主機(jī)周圍。

5f1175dc-6c1e-11ed-b468-dac502259ad0.jpg

USB通信最基本的形式是通過USB設(shè)備里一個(gè)叫endpoint的端點(diǎn)(可以理解為硬件寄存器或者buff),而主機(jī)和endpoint之間的數(shù)據(jù)傳輸是通過pipe,pipe通信有兩種,一種是stream,另一種是message,協(xié)議中規(guī)定:message管道要求從它那兒過的數(shù)據(jù)必須具有一定的格式,message管道必須對(duì)應(yīng)兩個(gè)相同號(hào)碼的端點(diǎn),一個(gè)用來in,一個(gè)用來out,咱們的缺省管道就是message管道,當(dāng)然,與缺省管道對(duì)應(yīng)的端點(diǎn)0就必須是兩個(gè)具有同樣端點(diǎn)號(hào)0的端點(diǎn)。

5f2fffc0-6c1e-11ed-b468-dac502259ad0.jpg

一個(gè)USB邏輯設(shè)備就是一系列端點(diǎn)(endpoint)的集合,它與主機(jī)之間的通信發(fā)生在主機(jī)上的一個(gè)緩沖區(qū)和設(shè)備上的一個(gè)端點(diǎn)之間,通過管道來傳輸數(shù)據(jù)。管道的一端是主機(jī)上的一個(gè)緩沖區(qū),另一端是設(shè)備上的端點(diǎn) ,構(gòu)成一個(gè)通信信道。
2. USB 四種通信方式
USB endpoint有四種類型,分別對(duì)應(yīng)了四種不同的數(shù)據(jù)傳輸方式。它們是控制傳輸(Control Transfers),中斷傳輸(Interrupt Data Transfers),批量傳輸(Bulk Data Transfers),等時(shí)傳輸(Isochronous Data Transfers)。其中批量傳輸、等時(shí)傳輸和中斷傳輸每傳輸一次數(shù)據(jù)都是一個(gè)事務(wù);控制傳輸包括三個(gè)過程,建立過程和狀態(tài)過程分別是一個(gè)事務(wù),數(shù)據(jù)過程則可能包含多個(gè)事務(wù)。從usb設(shè)備端來看,也可以把端點(diǎn)分為四種類型為控制端點(diǎn)、中斷端點(diǎn)、批量端點(diǎn)、等時(shí)端點(diǎn)。USB傳輸數(shù)據(jù)先發(fā)數(shù)據(jù)低位(LSB),再發(fā)高位數(shù)據(jù)(MSB)
2.1 控制傳輸
控制傳輸用來控制對(duì)USB設(shè)備不同部分的訪問,通常用于配置設(shè)備,獲取設(shè)備信息,發(fā)送命令到設(shè)備,或者獲取設(shè)備的狀態(tài)報(bào)告??傊褪怯脕韨魉涂刂菩畔⒌模總€(gè)USB設(shè)備都會(huì)有一個(gè)endpoint 0的控制端點(diǎn),內(nèi)核里的USB core使用它在設(shè)備插入時(shí)進(jìn)行設(shè)備的配置,它會(huì)一種等待著USB core發(fā)送控制命令。
控制傳輸分為三個(gè)過程:
建立過程使用一個(gè)建立事務(wù)。建立事務(wù)是一個(gè)輸出數(shù)據(jù)包的過程,需要注意的點(diǎn)有:
? 首先是令牌包,建立過程使用SETUP令牌包;
? 其次是數(shù)據(jù)包類型,SETUP只能使用DATA0包;
? 最后是握手,設(shè)備只能采用ACK來應(yīng)答(錯(cuò)了的情況不應(yīng)答),不能使用NAK或者STALL來應(yīng)答,即設(shè)備必須要接受建立事務(wù)的數(shù)據(jù)。

5f5c86da-6c1e-11ed-b468-dac502259ad0.jpg

數(shù)據(jù)過程是可選的,即一個(gè)控制傳輸可能沒有數(shù)據(jù)過程。如果有,一個(gè)數(shù)據(jù)過程可以包含一個(gè)或多個(gè)數(shù)據(jù)事務(wù),需要注意的是:
? 首先所有的數(shù)據(jù)事務(wù)必須是同一個(gè)方向的(在控制讀傳輸中,數(shù)據(jù)過程中的所有數(shù)據(jù)事務(wù)都必須是輸入的;在控制寫傳輸中,數(shù)據(jù)過程中的所有數(shù)據(jù)都必須是輸出的);
? 其次,一旦數(shù)據(jù)傳輸方向改變,就會(huì)認(rèn)為進(jìn)入到狀態(tài)過程,狀態(tài)過程的第一個(gè)數(shù)據(jù)包必須是DATA1包;
? 最后,每次爭(zhēng)取傳輸一個(gè)數(shù)據(jù)包后就在DATA0和DATA1之間交換。
在這里插入圖片描述

控制傳輸?shù)腟tatus階段是序列中的最后一個(gè)事務(wù),狀態(tài)階段由前一階段的數(shù)據(jù)流方向改變描繪,并始終使用DATA1 PID。

獲取設(shè)備描述符為控制傳輸,由5個(gè)事務(wù)組成,分別是SETUP、IN、IN、IN、OUT,具體過程如下:

5f8ca748-6c1e-11ed-b468-dac502259ad0.jpg

2.2 批量傳輸
批事務(wù)量
{In/Out Data Packet
@令牌包(In/Out token)
@數(shù)據(jù)包 (In/Out data)
@握手包 (Out/In ack)
}

批量傳輸用來傳輸大量的數(shù)據(jù),確保沒有數(shù)據(jù)丟失,并不保證在特定的時(shí)間內(nèi)完成。U盤使用的就是批量傳輸,咱們用它備份數(shù)據(jù)時(shí)需要確保數(shù)據(jù)不能丟,而且也不能指望它能在一個(gè)固定的比較快的時(shí)間內(nèi)拷貝完。
? 批量輸出(批量寫)時(shí), Out Token→Out Data→ACK/NYET/NAK/STALL,其中ACK代表接收正常,且可以接收下次傳輸;NYET代表本次數(shù)據(jù)成功接收,但沒能力接收下一次傳輸;NAK表示沒有足夠的緩沖區(qū)來保存數(shù)據(jù);STALL表示數(shù)據(jù)接收,但是端點(diǎn)處于掛起狀態(tài)。
? 批量輸入(批量讀)時(shí),In Token→In Data→ACK /NAK/STALL,與批量寫不同,主機(jī)發(fā)送In令牌包后,若設(shè)備檢測(cè)到錯(cuò)誤,則不做任何響應(yīng),主機(jī)等待超時(shí)。若設(shè)備沒有檢測(cè)到地址端點(diǎn)等錯(cuò)誤,但是設(shè)備又沒有數(shù)據(jù)需要返回,那么設(shè)備就會(huì)返回NAK直接響應(yīng)主機(jī);若改端點(diǎn)處于掛起狀態(tài),返回STALL給主機(jī);若主機(jī)正確接收到數(shù)據(jù)后,主機(jī)返回ACK應(yīng)答設(shè)備,同樣的,主機(jī)檢測(cè)到錯(cuò)誤則不做出響應(yīng),設(shè)備檢測(cè)超時(shí)。USB協(xié)議規(guī)定,不允許主機(jī)使用NAK拒絕接收數(shù)據(jù)包。
2.3 中斷傳輸

中斷事務(wù)
{In/Out Data Packet
@令牌包(In/Out token)
@數(shù)據(jù)包(In/Out data)
@握手包(Out/In ack)
}

中斷傳輸是一種保證查詢頻率的傳輸,用來以一個(gè)固定的速率傳送少量的數(shù)據(jù)。中斷端點(diǎn)在端點(diǎn)描述符中要報(bào)告它的查詢時(shí)間,主機(jī)會(huì)保證在小于這個(gè)事件間隔的范圍內(nèi)安排一次傳輸,USB鍵盤和USB鼠標(biāo)使用的就是這種方式,USB的觸摸屏也是,傳輸?shù)臄?shù)據(jù)包含了坐標(biāo)信息。

中斷傳輸不是由設(shè)備主動(dòng)的發(fā)出一個(gè)設(shè)備請(qǐng)求,而是由主機(jī)保證不大于某個(gè)時(shí)間間隔內(nèi)安排一次傳輸。中斷傳輸通常用在數(shù)據(jù)量不大,但是對(duì)時(shí)間要求較嚴(yán)格的設(shè)備。中斷傳輸也可以用來不停的檢查某個(gè)狀態(tài),當(dāng)條件滿足后再用批量傳輸,除了對(duì)端點(diǎn)查詢的策略上不一樣之外,中斷傳輸和批量傳輸?shù)慕Y(jié)構(gòu)基本上是一樣的。
2.4 等時(shí)傳輸

等時(shí)事務(wù)
{In/Out Data Packet
@令牌包(In/Out token)
@數(shù)據(jù)包 (In/Out data)
}

等時(shí)傳輸使用等時(shí)事務(wù)(Isochronous Transactions)來傳輸數(shù)據(jù)。同樣用來傳輸大量的數(shù)據(jù),但并不保證數(shù)據(jù)是否到達(dá),以穩(wěn)定的速率發(fā)送和接收實(shí)時(shí)的信息,對(duì)傳送延遲非常敏感。用在數(shù)據(jù)量大、對(duì)實(shí)時(shí)性要求高的場(chǎng)合,例如音頻設(shè)備、視屏設(shè)備等,這些設(shè)備對(duì)數(shù)據(jù)延時(shí)敏感,期望能夠有個(gè)比較穩(wěn)定的數(shù)據(jù)流。對(duì)音頻或者視屏設(shè)備來說,對(duì)數(shù)據(jù)的100%正確要求不高,少量數(shù)據(jù)的錯(cuò)誤還是能夠容忍的,主要是要保證不能停頓;所以等時(shí)傳輸是不保證數(shù)據(jù)100%正確的。當(dāng)數(shù)據(jù)錯(cuò)誤時(shí),并不能進(jìn)行重傳操作。因此等時(shí)傳輸也就沒有應(yīng)答包,并不進(jìn)行重傳操作。數(shù)據(jù)是否正確,可以由數(shù)據(jù)包的CRC校驗(yàn)來確認(rèn)。至于出錯(cuò)的數(shù)據(jù)如何處理,是由軟件來決定的。
控制傳輸
{Setup Packet(建立階段)
@令牌包(setup token)-(out) @數(shù)據(jù)包(Setup data) -(out) @握手包(ack) - (in)
}
{In/Out Data Packet(可選數(shù)階段據(jù))
@(令牌包(In/Out token) @數(shù)據(jù)包(In/Out data) @握手包(Out/In ack)
}
{Out/In Stautus Packet(狀態(tài)階段)
@(令牌包(Out/In token) @數(shù)據(jù)包(Out/In data) @握手包( In/Out ack)
}

審核編輯黃昊宇

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

    關(guān)注

    28

    文章

    840

    瀏覽量

    40215
  • usb
    usb
    +關(guān)注

    關(guān)注

    60

    文章

    7876

    瀏覽量

    263697
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    拆解USB通信協(xié)議主要內(nèi)容

    USB應(yīng)用非常廣泛,電腦手機(jī)必備接口,很多嵌入式設(shè)備也具有USB通信能力,這里給大家分享一下USB通信協(xié)議主要內(nèi)容。
    發(fā)表于 11-11 09:19 ?778次閱讀

    一文詳解USB通信協(xié)議技術(shù)

    包(Packet)是 USB 系統(tǒng)中信息傳輸?shù)幕締卧?,所有?shù)據(jù)都是經(jīng)過打包后在總線上傳輸?shù)?。?shù)據(jù)在 USB總線上的傳輸以包為單位,包只能在幀內(nèi)傳輸。 高速 USB 總線的幀周期為125us,全速以及低速
    發(fā)表于 10-23 10:10 ?5893次閱讀
    一文詳解<b class='flag-5'>USB</b><b class='flag-5'>通信協(xié)議</b>技術(shù)

    USB通信問題

    請(qǐng)問各位大神,怎樣使用LABVIEW編寫USB通信協(xié)議,以能夠?qū)崿F(xiàn)與下位機(jī)的通信。求大神指點(diǎn)
    發(fā)表于 10-25 20:47

    嵌入式USB通訊協(xié)議資料

    主要內(nèi)容包括USB概述USB設(shè)備USB物理特性USB通信協(xié)議JB8的USB模塊的編程方法
    發(fā)表于 11-08 16:00

    USB通信協(xié)議和接口芯片的控制方法

    的傳輸性能不能得到根本改善。USB總線接口則具有速度快、易于擴(kuò)展、支持熱插拔、使用靈活方便等優(yōu)勢(shì),尤其適用于家用設(shè)備與計(jì)算機(jī)的通信連接。本文重點(diǎn)討論USB通信協(xié)議及其接口芯片的控制方法
    發(fā)表于 05-17 07:00

    基于STM32處理器和PC主機(jī)的USB通信協(xié)議的實(shí)現(xiàn)

    基于STM32處理器和PC主機(jī)的USB通信協(xié)議的實(shí)現(xiàn)。
    發(fā)表于 11-09 17:49 ?68次下載

    USB通信協(xié)議

    所有命令都是以AT開頭 并以 回車\r換行\(zhòng)n 結(jié)束的ASCII字符
    發(fā)表于 12-09 23:47 ?4次下載

    USB HID介紹及USB協(xié)議的相關(guān)內(nèi)容USB設(shè)備描述符資料概述

    HID是一種USB通信協(xié)議,無需安裝驅(qū)動(dòng)就能進(jìn)行交互,在學(xué)習(xí)HID之前,先來復(fù)習(xí)一下USB協(xié)議的相關(guān)內(nèi)容。
    發(fā)表于 11-02 15:15 ?28次下載
    <b class='flag-5'>USB</b> HID介紹及<b class='flag-5'>USB</b><b class='flag-5'>協(xié)議</b>的相關(guān)內(nèi)容<b class='flag-5'>USB</b>設(shè)備描述符資料概述

    實(shí)現(xiàn)USB通信協(xié)議和標(biāo)準(zhǔn)串口的設(shè)計(jì)的注意事項(xiàng)

    轉(zhuǎn)串口芯片CH340T,就可以成功實(shí)現(xiàn)USB通信協(xié)議和標(biāo)準(zhǔn)串口,但在硬件設(shè)計(jì)中要注意一下幾個(gè)問題:(電路見下圖)
    發(fā)表于 02-03 07:24 ?2442次閱讀
    實(shí)現(xiàn)<b class='flag-5'>USB</b><b class='flag-5'>通信協(xié)議</b>和標(biāo)準(zhǔn)串口的設(shè)計(jì)的注意事項(xiàng)

    USB通信協(xié)議的基本概念及理解

    注意:雖然高速USB總線和全速/低速USB總線的幀周期不一樣,但是SOF包中幀編號(hào)的增加速度是一樣的,因?yàn)樵诟咚?b class='flag-5'>USB系統(tǒng)中,SOF包中幀編號(hào)實(shí)際上取得是計(jì)數(shù)器的高11位,最低三位作為微幀編號(hào)沒有使用,因此其幀編號(hào)的增加周期也為
    的頭像 發(fā)表于 10-31 15:25 ?1210次閱讀

    USB通信協(xié)議基本概念及應(yīng)用

    包(Packet)是USB系統(tǒng)中信息傳輸?shù)幕締卧?,所有?shù)據(jù)都是經(jīng)過打包后在總線上傳輸?shù)摹?shù)據(jù)在 USB總線上的傳輸以包為單位,包只能在幀內(nèi)傳輸。高速USB 總線的幀周期為125us,全速以及低速
    的頭像 發(fā)表于 10-31 17:32 ?1044次閱讀

    深入理解USB通信協(xié)議

    USB數(shù)據(jù)在【主機(jī)軟件】與【USB設(shè)備特定的端點(diǎn)】間被傳輸?!局鳈C(jī)軟件】與【USB設(shè)備特定的端點(diǎn)】間的關(guān)聯(lián)叫做【pipes】。一個(gè)USB設(shè)備可以有多個(gè)管道(pipes)。
    的頭像 發(fā)表于 11-07 12:15 ?935次閱讀

    簡(jiǎn)單了解USB通信協(xié)議

    在一個(gè)USB通信系統(tǒng)中,只能有一個(gè)主機(jī)存在,USB通信只存在于主機(jī)和設(shè)備之間
    發(fā)表于 05-25 11:08 ?7879次閱讀
    簡(jiǎn)單了解<b class='flag-5'>USB</b><b class='flag-5'>通信協(xié)議</b>

    基于STM32處理器和PC主機(jī)的USB通信協(xié)議的實(shí)現(xiàn)

    電子發(fā)燒友網(wǎng)站提供《基于STM32處理器和PC主機(jī)的USB通信協(xié)議的實(shí)現(xiàn).pdf》資料免費(fèi)下載
    發(fā)表于 10-26 10:05 ?2次下載
    基于STM32處理器和PC主機(jī)的<b class='flag-5'>USB</b><b class='flag-5'>通信協(xié)議</b>的實(shí)現(xiàn)

    USB通信協(xié)議必備基礎(chǔ)知識(shí)

    高速 USB 總線的幀周期為125us,全速以及低速 USB 總線的幀周期為 1ms。幀的起始由一個(gè)特定的包(SOF 包)表示,幀尾為 EOF。EOF不是一個(gè)包,而是一種電平狀態(tài),EOF期間不允許有數(shù)據(jù)傳輸。
    的頭像 發(fā)表于 11-25 14:39 ?620次閱讀
    <b class='flag-5'>USB</b><b class='flag-5'>通信協(xié)議</b>必備基礎(chǔ)知識(shí)