通信總線協議總結
【學習筆記】
一、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包:由主機發給設備
第二個是資料包:由主機發給設備,無資料
第三個包是設備給主機的應答包
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/285829.html
標籤:其他
下一篇:Linux編程環境
