通信总线协议总结
通信總線協議總結
【學習筆記】
一、UART總線
簡介
UART(Universal Asynchronous Receiver/Transmitter)即通用異步收發器
特點
串行、異步通信、兩條數據線、全雙工發送和接收、點對點通信。
應用場合
在嵌入式系統中常用于主機與輔助設備之間的通信(嵌入式領域應用廣泛)
UART幀格式
1、起始位:發送1位邏輯0(低電平),開始傳輸數據。
2、數據位:可以是5~8位的數據,先發低位,再發高位,一般常見的就是8位(1個字節),其他的如7位的ASCII碼。
3、校驗位:奇偶校驗,將數據位加上校驗位,1的位數為偶數(偶校驗),1的位數4為奇數(奇校驗),【校驗位可有可無,根據需求選擇】
4、停止位:停止位是數據傳輸結束的標志,可以是1/1.5/2位的邏輯1(高電平)。
5、空閑位:空閑時數據線為高電平狀態,代表無數據傳輸。
發送的波特率和接受的波特率要保持一致,且為了避免累計誤差,不能連續發送多個字節,這就是數據最多發送8位的原因。
比特率的概念
UART傳輸速率的概念——比特率。
比特率的單位是bps,全稱是bit per second,意為每秒鐘傳輸的bit數量。
比特率9600bps,代表每秒鐘傳輸bit的數量為9600,那么傳輸1bit數據的時間就是1/9600=104us,比特率115200bps,代表傳輸1bit數據的時間是8us。
硬件連接
交叉連接
設置引腳功能的本質:就是將引腳與相應的功能相連接,如連接到GPIO,或連接到UART
UART寄存器配置
(1)設置發送引腳和接收引腳
(2)設置UART幀格式
(3)設置UART發送發送和接收模式
(4)設置UART的波特率
發送數據
(1)等待發送寄存器為空
(2)將發送的數據寫入發送寄存器
接收數據
(1)判斷接收寄存器是否接收到了數據
(2)如果接收到,則讀取到寄存器
一般在開發中很少直接用串口進行編程,因為它存在很多問題,在實際應用中,通常用優化的UART:RS232、RS485
UART存在的問題
1、電氣接口不統一
UART只是對信號的時序進行了定義,而未定義接口的電氣特性
(1)UART沒有規定不同器件連接時連接器的標準,所以不同器件之間通過UART通信時連接很不方便
(2)UART通信時一般直接使用處理器使用的電平,即TTL電平,但不同的處理器使用的電平存在差異,所以不同的處理器使用UART通信時一般不能直接相連。
2、抗干擾能力差
一般直接使用TTL(+5V等價于邏輯“1”,0V等價于邏輯“0”)信號表示0和1,但是TTL信號抗干擾能力較差,數據在傳輸過程中很容易出錯。
3、通信距離極短
由于TTL信號的抗干擾能力差,所以其通信舉例也很短,一般只能用于一個電路板上的兩個不同芯片之間的通信。
二、RS232、RS485總線
簡介:這兩個協議只是單純的電氣層面的協議,是依賴于串口UART的。
1、RS232協議
RS232協議是在1970年由美國電子工業協會(EIA)聯合貝爾系統、調制解調器廠家、計算機終端生產廠家共同制定的用于串行通訊的標準。起初為25根線,后來被IBM簡化為9根線,但是現代工業控制的RS-232接口一般只使用RXD、TXD、GND三條線。
改標準規定采用一個標準的連接器,標準中對連接器的每一個引腳的作用加以規定,還對信號的電平加以規定。
該標準的信號規定
邏輯“1”:電平為-5V到-15V
邏輯“0”:電平為+5V到+15V
選用該電氣標準的目的在于提高抗干擾能力,增大通信距離,其傳送距離一般可達15m。
電平轉換MAX232:可以把TTL信號和232信號相互轉化,以延長通信距離(15m)。
RS232存在的問題
(1)接口信號電平值較高,容易損壞接口電路的芯片,又因為與TTL電平不兼容,所以需要使用電平轉換芯片才能與TTL電路連接。
(2)通信速度較低
(3)易產生共模干擾,抗噪聲干擾性弱
(4)傳輸距離較短(15m)
2、RS485協議
特點:
(1)也是對串口在電氣層面的改良,相比于RS232,RS485提高了抗干擾能力,并且極大增強了通信的距離(1500m)
(2)具有多站能力,這樣可以利用單一的RS485接口方便的建立起一個設備網絡。不在是點對點的通信,而是類似于IIC一樣可以掛很多芯片設備,從而組成一個網絡。
采用雙絞線,用兩根線的差分電壓值高低表示邏輯電平,并消除共模干擾。
由于兩根線傳輸差分信號,所以發送和接收不能同時進行,故只能采用半雙工的方式工作。
電平轉換:
由于處理器產生的信號一般都是TTL信號并不是符合RS485標準的信號,所以一般還需要再處理器外部去添加電路將TTL信號轉換成差分信號。
RS485的優勢
(1)接口信號電平值較低,不易損壞接口電路的芯片,且與TTL電平兼容,可方便地與TTL電路連接。
(2)通信速度快
(3)抗噪聲干擾強
(4)傳輸距離較遠(1500m)
(5)可實現多節點組網
三、IIC總線
簡介
IIC(Inter-Integrated Circuit)其實是IICBus簡稱,所以中文應該叫集成電路總線。由飛利浦公司推出。
特點
串行、半雙工、硬件結構簡單、成本低、應用廣泛、非點對點通信。
應用場合
近距離、低速芯片之間的通信(抗干擾差,不能用于長距離)
數據線SDA:用于收發數據
時鐘線SCL:用于通信雙方的時鐘同步
接線
把芯片的SCL接到總線SCL上,把芯片的SDA接到總線SDA上。
IIC總線是一種多主機總線,連接在總線的器件分為主機和從機,主機有權發起和結束一次通信,而從機智能被呼叫。
當由多個主機同時啟用總線時,IIC也具有沖突檢測和仲裁的功能來防止錯誤的產生。
每個器件都可以作為主機或者從機,但是同一時刻只能由一個主機。總線上增加和刪除器件,不影響其他器件正常工作。
每一個連接到IIC總線上的器件都有一個唯一的地址(7bit)。
一個器件,當它接收數據的時候是作為接收器,發送數據的時候作為發送器。
通信過程
(1)主機發送起始信號啟用總線【其他主機接收到信號,知道總線被占用,則待機,從機接收到信號,準備好接收信號】
(2)主機發送第一個字節數據指明從機地址和后續字節的傳送方向【高7bit指明從機地址,而最后第零位,用于確定是主機給從機發送數據(0表示主機到從機)還是從機給主機發送數據(1表示從機到主機)】
(3)被尋址的從機發送應答信號回應主機【其他從機閉嘴了】
(4)發送器發送一個字節的數據【發送器是誰,要看最后一位是0還是1】
(5)接收器發送應答信號回應發送器
(…)循環步驟4、5【這兩步和2、3兩步本質上一樣】【這兩步的前提是主從機都已經確定好了,即通信過程中改變不了方向】
(n)通信完成后主機發送停止信號釋放總線
第一個數據必須是主機給從機發,用于確定地址和方向,后續的方向由字節的第一位決定。通信過程中可以連續發送無數個字節的數據,方向不允許改變。
整個過程就包含了四種信號:起始信號、發送一個字節、應答信號…、停止信號
起始信號:SCL為高電平時,SDA由高變低表示起始信號
停止信號:SCL為高電平時,SDA由低變高表示停止信號
起始信號和停止信號都是由主機發出,起始信號產生后總線處于占用狀態,停止信號產生后總線處于空閑狀態。
在起始信號和停止信號之間,用于已經做好應答的主從機之間的通信,其他主機是不能啟用總線的。
字節傳輸與應答
IIC總線通信時每個字節為8位長度,數據傳輸時先發高位、再發低位。
發送器每發完一個字節數據,接收器必須發送1位應答位來回應發送器,即一幀共有9位。
IIC總線協議:
四、CAN總線
###來自CAN總線報文淺析
簡介
CAN是控制器局域網絡(Controller Area Network, CAN)的簡稱,是一種能夠實現分布式實時控制的串行通信網絡。
優點
傳輸速度最高到1Mbps,通信距離最遠到10km,無損位仲裁機制,多主結構。近些年來,CAN控制器價格越來越低。
(1)低成本:ECUs通過單個CAN接口進行通信,布線成本低。
(2)高集成:CAN總線系統允許在所有ECUs上進行集中錯誤診斷和配置。
(3)可靠性:該系統對子系統的故障和電磁干擾具有很強的魯棒性,是汽車控制系統的理想選擇。
(4)高效率:可以通過id對消息進行優先級排序,以便最高優先級的id不被中斷。
(5 )靈活性:每個ECU包含一個用于CAN總線收發芯片,隨意添加CAN總線節點。
應用范圍
CAN的高性能和可靠性已被認同,并被廣泛的應用與工業自動化、船舶、醫療設備、工業設備等方面。
CAN總線網絡結構
CAN總線網絡主要掛在CAN_H和CAN_L,各個節點通過這兩條線實現信號的串行差分傳輸,為了避免信號的反射和干擾,還需要在CAN_H和CAN_L之間接上120歐姆的終端電阻為什么是120Ω,因為電纜的特性阻抗為120Ω,為了模擬無限遠的傳輸線。
CAN收發器
CAN收發器作用是負責邏輯電平和信號電平之間的轉換
TXD:發送數據輸入
RXD:接收數據輸入
CANL:低電平CAN總線
CANH:高電平CAN總線
S:選擇進入高速模式還是靜音模式
CAN總線信號表示
CAN總線采用不歸零碼位填充技術,也就是說CAN總線上的信號有兩種不同的信號狀態,分別是顯性的(Dominant)邏輯0和隱形的(recessive)邏輯1,信號每一次傳輸完后不需要返回到邏輯0(顯性)的電平。
顯性與隱性電平的解釋:
CAN的數據總線有兩條,一條是黃色的CAN_High,一條是綠色的CAN_Low。當沒有數據發送時,兩條線的電平一樣都為2.5V,稱為靜電平,也就是隱性電平。當有信號發送時,CAN_High的電平升高1V,即3.5V,CAN_Low的電平降低1V,即1.5V。
顯性和隱性定義
CAN_H-CAN_L < 0.5V 時候為隱性的,邏輯信號表現為"邏輯1"- 高電平。
CAN_H-CAN_L > 0.9V 時候為顯性的,邏輯信號表現為"邏輯0"- 低電平。
CAN總線信號傳輸
發送過程: CAN控制器將CPU傳來的信號轉換為邏輯電平(即邏輯0-顯性電平或者邏輯1-隱性電平)。CAN發射器接收邏輯電平之后,再將其轉換為差分電平輸出到CAN總線上。
接收過程: CAN接收器將CAN_H 和 CAN_L 線上傳來的差分電平轉換為邏輯電平輸出到CAN控制器,CAN控制器再把該邏輯電平轉化為相應的信號發送到CPU上。
CAN數據傳輸
CAN總線傳輸的是CAN幀,CAN的通信幀分成五種,分別為數據幀、遠程幀、錯誤幀、過載幀和幀間隔。
其中數據幀根據仲裁段長度不同分為標準幀(2.0A)和擴展幀(2.0B)
以下是數據幀的兩種幀格式:
數據幀格式
幀起始
由一個顯性(低電平)組成
幀結束
由七個隱形位(高電平)組成
仲裁段
只要總線空閑,總線上任何節點都可以發送報文,如果有兩個或兩個以上的節點開始傳送報文,那么就會存在總線訪問沖突的可能。但是CAN使用了標識符的逐位仲裁方法可以解決這個問題。
CAN總線控制器在發送數據的同時監控總線電平,如果電平不同,則停止發送并做其他處理。如果該位位于仲裁段,則退出總線競爭;如果位于其他段,則產生錯誤事件。
幀ID越小,優先級越高。由于數據幀的RTR位為顯性電平,遠程幀為隱性電平,所以幀格式和幀ID相同的情況下,數據幀優先于遠程幀;由于標準幀的IDE位為顯性電平,擴展幀的IDE位為隱形電平,對于前11位ID相同的標準幀和擴展幀,標準幀優先級比擴展幀高。
控制段
控制段共6位,標準幀的控制段由擴展幀標志位IDE、保留位r0和數據長度代碼DLC組成;擴展幀控制段則由IDE、r1、r0和DLC組成
數據段
一個數據幀傳輸的數據量為0~8個字節,這種短幀結構使得CAN-bus實時性很高,非常適合汽車和工控應用場合
數據量小,發送和接收時間短,實時性高,被干擾的概率小,抗干擾能力強。
CRC段
CAN-bus使用CRC校驗進行數據檢錯,CRC校驗值存放于CRC段。 CRC校驗段由15位CRC值和1位CRC界定符構成
ACK段
當一個接收節點接收的幀起始到CRC段之間的內容沒發生錯誤時,它將在ACK段發送一個顯性電平
遠程幀格式
與數據幀相比,遠程幀結構上無數據段,由6個段組成,同理分為標準格式和擴展格式,且RTR位為1(隱性電平)
如下圖所示由于數據幀的RTR位為顯性電平,遠程幀的RTR位為隱性電平。
所以幀格式和幀ID都相同情況下,數據幀的優先級比遠程幀優先級高
數據幀與遠程幀的區別
錯誤幀
盡管CAN-bus是可靠性很高的總線,但依然可能出現錯誤;CAN-bus的錯誤類型共有5種
當出現5種錯誤類型之一時,發送或接收節點將發送錯誤幀。錯誤幀的結構如下,其中錯誤標識分為主動錯誤標識和被動錯誤標識
為防止自身由于某些原因導致無法正常接收的節點一直發送錯誤幀,干擾其他節點通信,CAN-bus規定了節點的3種狀態及其行為
(注:這些錯誤處理的機制是由硬件自主完成的這樣做的目的就是只要CAN在收到數據肯定是正確的數據)。
過載幀
當某個接收節點沒有做好接收下一幀數據的準備時,將發送過載幀以通知發送節點;過載幀由過載標志和過載幀界定符組成
由于存在多個節點同時過載且過載幀發送有時間差問題,可能出現過載標志疊加后超過6個位的現象
幀間隔
幀間隔用于將數據幀或遠程幀和他們之前的幀分離開,但過載幀和錯誤幀前面不會插入幀間隔。
幀間隔過后,如果無節點發送幀,則總線進入空閑。
幀間隔過后,如果被動錯誤節點要發送幀,則先發送8個隱性電平的傳輸延遲,再發送幀。
CAN總線發送總流程
CAN-bus整個鏈路層處理數據的流程
五、SPI總線
###來自SPI通信協議
簡介
SPI是串行外設接口(Serial Peripheral Interface)的縮寫。是 Motorola 公司推出的一
種同步串行接口技術,是一種高速的,全雙工,同步的通信總線。
特點
高速、同步、串行、全雙工、非差分、總線式、主從機通信模式、通信簡單、數據傳輸率快。
缺點
沒有應答機制確定是否收到數據,可靠性較IIC差。
接口
(1)SDO/MOSI:主設備數據輸出,從設備數據輸入
(2)SDI/MISO:主設備數據輸入,從設備數據輸出
(3)SCLK:時鐘信號,由主設備產生
(4)CS/SS:從設備使能信號,由主設備控制
當有多個從設備的時候,因為每個從設備上都有一個片選引腳接入到主設備機中,當我們的主設備和某個從設備通信時將需要將從設備對應的片選引腳電平拉低或者是拉高。
SPI總線結構
SPI四種模式
SPI通信有4種不同的模式,不同的從設備可能在出廠是就是配
置為某種模式,這是不能改變的;但我們的通信雙方必須是工作在同一模式下,所以我們
可以對我們的主設備的SPI模式進行配置,通過CPOL(時鐘極性)和CPHA(時鐘相位)來
控制我們主設備的通信模式,具體如下:
時鐘極性CPOL是用來配置SCLK的電平出于哪種狀態時是空閑態或者有效態,時鐘相位CPHA
是用來配置數據采樣是在第幾個邊沿:
CPOL=0,表示當SCLK=0時處于空閑態,所以有效狀態就是SCLK處于高電平時
CPOL=1,表示當SCLK=1時處于空閑態,所以有效狀態就是SCLK處于低電平時
CPHA=0,表示數據采樣是在第1個邊沿,數據發送在第2個邊沿
CPHA=1,表示數據采樣是在第2個邊沿,數據發送在第1個邊沿
例如:
CPOL=0,CPHA=0:此時空閑態時,SCLK處于低電平,數據采樣是在第1個邊沿,也就是
SCLK由低電平到高電平的跳變,所以數據采樣是在上升沿,數據發送是在下降沿。
CPOL=0,CPHA=1:此時空閑態時,SCLK處于低電平,數據發送是在第1個邊沿,也就是
SCLK由低電平到高電平的跳變,所以數據采樣是在下降沿,數據發送是在上升沿。
CPOL=1,CPHA=0:此時空閑態時,SCLK處于高電平,數據采集是在第1個邊沿,也就是
SCLK由高電平到低電平的跳變,所以數據采集是在下降沿,數據發送是在上升沿。
CPOL=1,CPHA=1:此時空閑態時,SCLK處于高電平,數據發送是在第1個邊沿,也就是
SCLK由高電平到低電平的跳變,所以數據采集是在上升沿,數據發送是在下降沿。
六、USART協議
簡介
USART(Universal Synchronous/Asynchronous Receiver/Transmitter)通用同步/異步串行接收/發送器。USART通信線路簡單,可勝任較長距離的可靠通信(RS-232為例,最大通信距離可達15米)。被廣發應用于工業控制、醫療設備、POS系統等。
同步和異步通信的區別
USART的同步通信幀格式
所謂同步通信,是指數據傳送是以數據塊(一組字符)為單位,字符于字符之間、字符內部的位與位之間都同步。
同步串行通信特點
(1)以數據塊位單位傳送信息
(2)在一個數據塊(信息幀)內,字符與字符間無間隔
(3)接收時鐘與發送時鐘嚴格同步
簡言之:由時鐘同步
USART異步通信幀格式
所謂異步通信,是指數據傳送以字符位單位,字符與字符之間的傳送是完全異步的,位于位之間的傳送基本上是同步的。
異步串行通信的特點
(1)以字符為單位傳送信息
(2)相鄰兩個字符間的間隔是任意長
(3)接收時鐘和發送時鐘只要相近就可以
異步方式特點簡單說就是:字符間異步,字符內部各位同步
由于異步通信不需要同步時鐘,使用簡單,因此一般傳統通信都采用異步模式。
一幀數據由4個部分組成
(1)1位起始位,規定位低電平0
(2)5~8位為數據位,即要傳送的有效信息
(3)1位奇偶校驗位
(4)1~2位停止位,規定高電平1
七、USB協議
###來自USB協議詳解
簡介
一個transfer(傳輸)由一個或多個transaction(事務)構成,一個transaction(事務)由一個或多個packet(包)構成,一個packet(包)由一個或多個sync(域)構成。
1.傳輸數據通信
USB的數據通訊首先是基于傳輸(transfer)的,傳輸的類型有:中斷傳輸、批量傳輸、同步傳輸、控制傳輸。
2.事務數據通訊
一次傳輸由一個或多個事務(transaction)構成,事務可以分為:in事務、out事務、setup事務。
3.包數據通訊
一個事務由一個或多個包(packet)構成,包可分為:令牌包(setup)、數據包(data)、握手包(ack)、特殊包。
4.域數據通訊
一個包由多個域構成,域可分為:同步域(sync)、標識域(pid)、地址域(addr)、端點域(endp)、幀號域(fram)、數據域(data)、校驗域(crc)。
傳輸
傳輸分為四種類型:批量傳輸、等時(同步)傳輸、中斷傳輸、控制傳輸。
1、批量(大容量數據)傳輸(Bulk Transfers): 非周期性,突發
大容量數據的通信,數據可以占用任意帶寬,并容忍延遲 。如USB打印機、掃描儀、大容量儲存設備等。
批量輸出事務:
(1)主機先發出一個OUT令牌包(包含設備地址,端點號)。
(2)然后再發送一個DATA包,這時地址和端點匹配的設備就會收下這個數據包,主機切換到接收模式,等待設備返回握手包。
(3)設備解碼令牌包,數據包都準確無誤,并且有足夠的緩沖區來保存數據后就會使用ACK/NYET握手包來應答主機(只有高速模式才有NYET握手包,他表示本次數據成功接收,但是沒有能力接收下一次傳輸),如果沒有足夠的緩沖區來保存數據,就返回NAC,告訴主機目前沒有緩沖區可用,主機會在稍后時間重新該批量傳輸事務。如果設備檢查到數據正確,但端點處于掛起狀態,返回STALL。如果檢測到有錯誤(如校驗錯誤,位填充錯誤),則不做任何響應,讓主機等待超時。
批量輸入事務:
(1)主機首先發送一個IN令牌包(包含設備地址,端點號)。
(2)主機切換到接收數據狀態等待設備返回數據。如果設備檢測到錯誤,不做任何響應,主機等待超時。如果此時有地址和端點匹配的設備,并且沒有檢測到錯誤,則該設備作出反應:設備有數據需要返回,就將一個數據包放在總線上;如果沒有數據需要返回,設備返回NAK響應主機;如果該端點處于掛起狀態,設備返回STALL。如果主機收到設備發送的數據包并解碼正確后,使用ACK握手包應答設備。如果主機檢測到錯誤,則不做任何響應,設備會檢測到超時。注意:USB協議規定,不允許主機使用NAK來拒絕接收數據包。主機收到NAK,知道設備暫時沒有數據返回,主機會在稍后時間重新該批量輸入事務。
2、中斷傳輸(Interrupt Transfers): 周期性,低頻率。
允許有限延遲的通信 如人機接口設備(HID)中的鼠標、鍵盤、軌跡球等。
中斷傳輸是一種保證查詢頻率的傳輸。中斷端點在端點描述符中要報告它的查詢間隔,主機會保證在小于這個時間間隔的范圍內安排一次傳輸。
3、等時(同步)傳輸(Isochronous Transfers): 周期性 。
持續性的傳輸,用于傳輸與時效相關的信息,并且在數據中保存時間戳的信息 ,如音頻視頻設備。
等時(同步)傳輸用在數據量大、對實時性要求高的場合,如音頻設備,視頻設備等,這些設備對數據的延遲很敏感。對于音頻或視頻設備數據的100%正確性要求不高,少量的數據錯誤是可以容忍的,主要是保證數據不能停頓,所以等時傳輸是不保證數據100%正確的。當數據錯誤時,不再重傳操作。因此等時傳輸沒有應答包,數據是否正確,由數據的CRC校驗來確認。
4、控制傳輸(Control Transfers): 非周期性,突發。
用于命令和狀態的傳輸
控制傳輸可分為三個過程:(1)建立過程 (2)數據過程(可選) (3)狀態過程
特性:
每個USB設備都必須有控制端點,支持控制傳輸來進行命令和狀態的傳輸。USB主機驅動將通過控制傳輸與USB設備的控制端點通信,完成USB設備的枚舉和配置 。
方向:
控制傳輸是雙向的傳輸,必須有IN和OUT兩個方向上的特定端點號的控制端點來完成兩個方向上的控制傳輸 。
USB事物
USB包
包的組成:
包的內容:
1、PID:
這里只用(PID04),PID47是PID0~4的取反,用來校驗PID
PID1~0:01 令牌包、11 數據包、10 握手包、00 特殊包
2、地址:
3、幀號:
4、數據:
5、CRC:
Packet分四大類:
命令 (Token) 、Packet 幀首 (Start of Frame) 、Packet 數據 (Data) 、Packet 握手 (Handshake) Packet
不同類型包,以上的組成部件有所不同
1、四種Packet類型之令牌包(Token Packet):
令牌包用來啟動一次USB傳輸。
輸出(OUT)令牌包:用來通知設備將要輸出一個數據包
輸入(IN)令牌包:用來通知設備返回一個數據包
建立(SETUP)令牌包:只用在控制傳輸中,和輸出令牌包作用一樣,也是通知設備將要輸出一個數據包,兩者區別在于:
SETUP令牌包后只使用DATA0數據包,且只能發送到設備的控制端點,并且設備必須要接收,而OUT令牌包沒有這些限制
例子:
2、四種Packet類型之SOF Packet
幀起始包:在每幀(或微幀)開始時發送,以廣播的形式發送,所有USB全速設備和高速設備都可以接收到SOF包。
例子:
0xA5:1010 0101:對應上面PID表可知是幀起始包
3、四種Packet類型之Data Packet
例子:
4、四種Packet類型之Handshake Packet
例子:
USB 設備枚舉及描述符介紹
當一個USB設備插入主機后,會有以下活動:
在USB設備的邏輯組織中,包含設備、配置、接口和端點4個層次。設備通常有一個或多個配置,配置通常有一個或多個接口,接口通常有零個或多個端點。 ![img]
例程分析
我們插上鼠標后后出現如下的信息,我們先來分析第一個傳輸:
我們看到第一個是控制傳輸,它包含了4個事物,分別是:1個setup事務,3個in事務,1個out事務,我們先打開setup事務:
我們看到這個事務里包含了3個包
第一個包是令牌包,它由主控制器發送給目標設備的0號端口,用于設置目標設備的地址和端口號,我們看到后面兩個包都缺省了地址與端口號。在usb系統中,所有的通信都是由主機發出相應的令牌所引起的。
第二個是數據包,由主控器發送給目標設備,其中數據的內容表示:
80:表示要求設備向主機發送信息
06:表示GET_DESCRIPTOR,即設備向主機發送設備描述符
00與01:Word-sized field that varies according to request
00與40:Word-sized field that varies according to request; typically used to pass an index or offset
00:Number of bytes to transfer if there is a:Data stage
總結一下第二個包就是向默認地址0 發送GET_DESCRIPTOR 指令包,請求設備發送設備描述符
第三個是應答包:設備接收到主機發送的數據后會給出應答
接著我們看第一個in事務
我們看到這個事務里也有三個包
第一個是in包:由主機發送給設備,表示要設備向主機發送上面請求的設備描述符
第二個是數據包:由設備發送給主機,當然是發送設備描述符,我們來分析一下:
12:表示接下來要求主機向設備發送信息
01:CLEAR_FEATURE、
第三個是應答包,由主機發送給設備
接著我們來看第二個in事務
這個事務里依舊是3個包
第一個是in包:由主機發送給設備,表示需要輸入
第二個是數據包:由設備發送給主機,我們來解析一下:
6D:表示要求主機發給設備數據
04:Reserved for future use
第三個是主機給設備的應答包
最后來看out事務
第一個是out包:由主機發給設備
第二個是數據包:由主機發給設備,無數據
第三個包是設備給主機的應答包
總結
- 上一篇: 自考本计算机科学与技术专业,自考本科有开
- 下一篇: CentOS7 编译源码升级内核