通信總線總結

通訊總線協議總結

【學習筆記】html

1、UART總線

簡介

UART(Universal Asynchronous Receiver/Transmitter)即通用異步收發器編程

特色

串行、異步通訊、兩條數據線、全雙工發送和接收、點對點通訊。網絡

應用場合

在嵌入式系統中經常使用於主機與輔助設備之間的通訊(嵌入式領域應用普遍)異步

UART幀格式

image

一、起始位:發送1位邏輯0(低電平),開始傳輸數據。
二、數據位:能夠是5~8位的數據,先發低位,再發高位,通常常見的就是8位(1個字節),其餘的如7位的ASCII碼。
三、校驗位:奇偶校驗,將數據位加上校驗位,1的位數爲偶數(偶校驗),1的位數4爲奇數(奇校驗),【校驗位無關緊要,根據需求選擇】
四、中止位:中止位是數據傳輸結束的標誌,能夠是1/1.5/2位的邏輯1(高電平)。
五、空閒位:空閒時數據線爲高電平狀態,表明無數據傳輸。分佈式

發送的波特率和接受的波特率要保持一致,且爲了不累計偏差,不能連續發送多個字節,這就是數據最多發送8位的緣由。性能

比特率的概念學習

UART傳輸速率的概念——比特率。優化

比特率的單位是bps,全稱是bit per second,意爲每秒鐘傳輸的bit數量。ui

比特率9600bps,表明每秒鐘傳輸bit的數量爲9600,那麼傳輸1bit數據的時間就是1/9600=104us,比特率115200bps,表明傳輸1bit數據的時間是8us。.net

硬件鏈接

交叉鏈接

image

設置引腳功能的本質:就是將引腳與相應的功能相鏈接,如鏈接到GPIO,或鏈接到UART

UART寄存器配置

(1)設置發送引腳和接收引腳

(2)設置UART幀格式

(3)設置UART發送發送和接收模式

(4)設置UART的波特率

發送數據

(1)等待發送寄存器爲空

(2)將發送的數據寫入發送寄存器

接收數據

(1)判斷接收寄存器是否接收到了數據

(2)若是接收到,則讀取到寄存器

通常在開發中不多直接用串口進行編程,由於它存在不少問題,在實際應用中,一般用優化的UART:RS23二、RS485

UART存在的問題

一、電氣接口不統一

UART只是對信號的時序進行了定義,而未定義接口的電氣特性

(1)UART沒有規定不一樣器件鏈接時鏈接器的標準,因此不一樣器件之間經過UART通訊時鏈接很不方便

(2)UART通訊時通常直接使用處理器使用的電平,即TTL電平,但不一樣的處理器使用的電平存在差別,因此不一樣的處理器使用UART通訊時通常不能直接相連。

二、抗干擾能力差

通常直接使用TTL(+5V等價於邏輯「1」,0V等價於邏輯「0」)信號表示0和1,可是TTL信號抗干擾能力較差,數據在傳輸過程當中很容易出錯。

三、通訊距離極短

因爲TTL信號的抗干擾能力差,因此其通訊舉例也很短,通常只能用於一個電路板上的兩個不一樣芯片之間的通訊。

2、RS23二、RS485總線

簡介:這兩個協議只是單純的電氣層面的協議,是依賴於串口UART的。

一、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)

二、RS485協議

特色:

(1)也是對串口在電氣層面的改良,相比於RS232,RS485提升了抗干擾能力,而且極大加強了通訊的距離(1500m)

(2)具備多站能力,這樣能夠利用單一的RS485接口方便的創建起一個設備網絡。不在是點對點的通訊,而是相似於IIC同樣能夠掛不少芯片設備,從而組成一個網絡。

採用雙絞線,用兩根線的差分電壓值高低表示邏輯電平,並消除共模干擾。

因爲兩根線傳輸差分信號,因此發送和接收不能同時進行,故只能採用半雙工的方式工做。

電平轉換:

因爲處理器產生的信號通常都是TTL信號並非符合RS485標準的信號,因此通常還須要再處理器外部去添加電路將TTL信號轉換成差分信號。

RS485的優點

(1)接口信號電平值較低,不易損壞接口電路的芯片,且與TTL電平兼容,可方便地與TTL電路鏈接。

(2)通訊速度快

(3)抗噪聲干擾強

(4)傳輸距離較遠(1500m)

(5)可實現多節點組網

3、IIC總線

簡介

IIC(Inter-Integrated Circuit)實際上是IICBus簡稱,因此中文應該叫集成電路總線。由飛利浦公司推出。

特色

串行、半雙工、硬件結構簡單、成本低、應用普遍、非點對點通訊。

應用場合

近距離、低速芯片之間的通訊(抗干擾差,不能用於長距離)

數據線SDA:用於收發數據

時鐘線SCL:用於通訊雙方的時鐘同步

接線

把芯片的SCL接到總線SCL上,把芯片的SDA接到總線SDA上。

IIC總線是一種多主機總線,鏈接在總線的器件分爲主機和從機,主機有權發起和結束一次通訊,而從機智能被呼叫。

當由多個主機同時啓用總線時,IIC也具備衝突檢測和仲裁的功能來防止錯誤的產生。

每一個器件均可以做爲主機或者從機,可是同一時刻只能由一個主機。總線上增長和刪除器件,不影響其餘器件正常工做。

每個鏈接到IIC總線上的器件都有一個惟一的地址(7bit)。

一個器件,當它接收數據的時候是做爲接收器,發送數據的時候做爲發送器。

通訊過程

(1)主機發送起始信號啓用總線【其餘主機接收到信號,知道總線被佔用,則待機,從機接收到信號,準備好接收信號】

(2)主機發送第一個字節數據指明從機地址和後續字節的傳送方向【高7bit指明從機地址,而最後第零位,用於肯定是主機給從機發送數據(0表示主機到從機)仍是從機給主機發送數據(1表示從機到主機)】

image

(3)被尋址的從機發送應答信號迴應主機【其餘從機閉嘴了】

(4)發送器發送一個字節的數據【發送器是誰,要看最後一位是0仍是1】

(5)接收器發送應答信號迴應發送器

(...)循環步驟四、5【這兩步和二、3兩步本質上同樣】【這兩步的前提是主從機都已經肯定好了,即通訊過程當中改變不了方向】

(n)通訊完成後主機發送中止信號釋放總線

第一個數據必須是主機給從機發,用於肯定地址和方向,後續的方向由字節的第一位決定。通訊過程當中能夠連續發送無數個字節的數據,方向不容許改變。

整個過程就包含了四種信號:起始信號、發送一個字節、應答信號...、中止信號

起始信號:SCL爲高電平時,SDA由高變低表示起始信號

中止信號:SCL爲高電平時,SDA由低變高表示中止信號

起始信號和中止信號都是由主機發出,起始信號產生後總線處於佔用狀態,中止信號產生後總線處於空閒狀態。

在起始信號和中止信號之間,用於已經作好應答的主從機之間的通訊,其餘主機是不能啓用總線的。

字節傳輸與應答

IIC總線通訊時每一個字節爲8位長度,數據傳輸時先發高位、再發低位。

發送器每發完一個字節數據,接收器必須發送1位應答位來回應發送器,即一幀共有9位。

IIC總線協議:

image

4、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總線網絡結構

image

CAN總線網絡主要掛在CAN_H和CAN_L,各個節點經過這兩條線實現信號的串行差分傳輸,爲了不信號的反射和干擾,還須要在CAN_H和CAN_L之間接上120歐姆的終端電阻爲何是120Ω,由於電纜的特性阻抗爲120Ω,爲了模擬無限遠的傳輸線。

CAN收發器

CAN收發器做用是負責邏輯電平和信號電平之間的轉換

image

TXD:發送數據輸入

RXD:接收數據輸入

CANL:低電平CAN總線

CANH:高電平CAN總線

S:選擇進入高速模式仍是靜音模式

CAN總線信號表示

CAN總線採用不歸零碼位填充技術,也就是說CAN總線上的信號有兩種不一樣的信號狀態,分別是顯性的(Dominant)邏輯0和隱形的(recessive)邏輯1,信號每一次傳輸完後不須要返回到邏輯0(顯性)的電平。

image

顯性與隱性電平的解釋:

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總線上。

image

接收過程: CAN接收器將CAN_H 和 CAN_L 線上傳來的差分電平轉換爲邏輯電平輸出到CAN控制器,CAN控制器再把該邏輯電平轉化爲相應的信號發送到CPU上。

image

CAN數據傳輸

CAN總線傳輸的是CAN幀,CAN的通訊幀分紅五種,分別爲數據幀、遠程幀、錯誤幀、過載幀和幀間隔。

其中數據幀根據仲裁段長度不一樣分爲標準幀(2.0A)和擴展幀(2.0B)

如下是數據幀的兩種幀格式:

image

數據幀格式

幀起始

由一個顯性(低電平)組成

幀結束

由七個隱形位(高電平)組成

image

仲裁段

只要總線空閒,總線上任何節點均可以發送報文,若是有兩個或兩個以上的節點開始傳送報文,那麼就會存在總線訪問衝突的可能。可是CAN使用了標識符的逐位仲裁方法能夠解決這個問題。

CAN總線控制器在發送數據的同時監控總線電平,若是電平不一樣,則中止發送並作其餘處理。若是該位位於仲裁段,則退出總線競爭;若是位於其餘段,則產生錯誤事件。

image

幀ID越小,優先級越高。因爲數據幀的RTR位爲顯性電平,遠程幀爲隱性電平,因此幀格式和幀ID相同的狀況下,數據幀優先於遠程幀;因爲標準幀的IDE位爲顯性電平,擴展幀的IDE位爲隱形電平,對於前11位ID相同的標準幀和擴展幀,標準幀優先級比擴展幀高。

image

控制段

控制段共6位,標準幀的控制段由擴展幀標誌位IDE、保留位r0和數據長度代碼DLC組成;擴展幀控制段則由IDE、r一、r0和DLC組成

image

數據段

一個數據幀傳輸的數據量爲0~8個字節,這種短幀結構使得CAN-bus實時性很高,很是適合汽車和工控應用場合

image

數據量小,發送和接收時間短,實時性高,被幹擾的機率小,抗干擾能力強。

CRC段

CAN-bus使用CRC校驗進行數據檢錯,CRC校驗值存放於CRC段。 CRC校驗段由15位CRC值和1位CRC界定符構成

image

ACK段

當一個接收節點接收的幀起始到CRC段之間的內容沒發生錯誤時,它將在ACK段發送一個顯性電平

image

遠程幀格式

與數據幀相比,遠程幀結構上無數據段,由6個段組成,同理分爲標準格式和擴展格式,且RTR位爲1(隱性電平)

image

以下圖所示因爲數據幀的RTR位爲顯性電平,遠程幀的RTR位爲隱性電平。

因此幀格式和幀ID都相同狀況下,數據幀的優先級比遠程幀優先級高

image

數據幀與遠程幀的區別

image

錯誤幀

儘管CAN-bus是可靠性很高的總線,但依然可能出現錯誤;CAN-bus的錯誤類型共有5種

image

當出現5種錯誤類型之一時,發送或接收節點將發送錯誤幀。錯誤幀的結構以下,其中錯誤標識分爲主動錯誤標識和被動錯誤標識

image

爲防止自身因爲某些緣由致使沒法正常接收的節點一直髮送錯誤幀,干擾其餘節點通訊,CAN-bus規定了節點的3種狀態及其行爲

image

(注:這些錯誤處理的機制是由硬件自主完成的這樣作的目的就是隻要CAN在收到數據確定是正確的數據)。

過載幀

當某個接收節點沒有作好接收下一幀數據的準備時,將發送過載幀以通知發送節點;過載幀由過載標誌和過載幀界定符組成

image

因爲存在多個節點同時過載且過載幀發送有時間差問題,可能出現過載標誌疊加後超過6個位的現象

image

幀間隔

幀間隔用於將數據幀或遠程幀和他們以前的幀分離開,但過載幀和錯誤幀前面不會插入幀間隔。

image

幀間隔事後,若是無節點發送幀,則總線進入空閒。

image

幀間隔事後,若是被動錯誤節點要發送幀,則先發送8個隱性電平的傳輸延遲,再發送幀。

image

CAN總線發送總流程

CAN-bus整個鏈路層處理數據的流程

image

5、SPI總線

來自SPI通訊協議

簡介

SPI是串行外設接口(Serial Peripheral Interface)的縮寫。是 Motorola 公司推出的一
種同步串行接口技術,是一種高速的,全雙工,同步的通訊總線。

特色

高速、同步、串行、全雙工、非差分、總線式、主從機通訊模式、通訊簡單、數據傳輸率快。

缺點

沒有應答機制肯定是否收到數據,可靠性較IIC差。

接口

(1)SDO/MOSI:主設備數據輸出,從設備數據輸入

(2)SDI/MISO:主設備數據輸入,從設備數據輸出

(3)SCLK:時鐘信號,由主設備產生

(4)CS/SS:從設備使能信號,由主設備控制

當有多個從設備的時候,由於每一個從設備上都有一個片選引腳接入到主設備機中,當咱們的主設備和某個從設備通訊時將須要將從設備對應的片選引腳電平拉低或者是拉高。

SPI總線結構

image

SPI四種模式

SPI通訊有4種不一樣的模式,不一樣的從設備可能在出廠是就是配
置爲某種模式,這是不能改變的;但咱們的通訊雙方必須是工做在同一模式下,因此咱們
能夠對咱們的主設備的SPI模式進行配置,經過CPOL(時鐘極性)和CPHA(時鐘相位)來

控制咱們主設備的通訊模式,具體以下:
image

時鐘極性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由高電平到低電平的跳變,因此數據採集是在上升沿,數據發送是在降低沿。

6、USART協議

簡介

USART(Universal Synchronous/Asynchronous Receiver/Transmitter)通用同步/異步串行接收/發送器。USART通訊線路簡單,可勝任較長距離的可靠通訊(RS-232爲例,最大通訊距離可達15米)。被廣發應用於工業控制、醫療設備、POS系統等。

同步和異步通訊的區別

USART的同步通訊幀格式

image

所謂同步通訊,是指數據傳送是以數據塊(一組字符)爲單位,字符於字符之間、字符內部的位與位之間都同步。

同步串行通訊特色

(1)以數據塊位單位傳送信息

(2)在一個數據塊(信息幀)內,字符與字符間無間隔

(3)接收時鐘與發送時鐘嚴格同步

簡言之:由時鐘同步

USART異步通訊幀格式

image

所謂異步通訊,是指數據傳送以字符位單位,字符與字符之間的傳送是徹底異步的,位於位之間的傳送基本上是同步的。

異步串行通訊的特色

(1)以字符爲單位傳送信息

(2)相鄰兩個字符間的間隔是任意長

(3)接收時鐘和發送時鐘只要相近就能夠

異步方式特色簡單說就是:字符間異步,字符內部各位同步

因爲異步通訊不須要同步時鐘,使用簡單,所以通常傳統通訊都採用異步模式。

一幀數據由4個部分組成

(1)1位起始位,規定位低電平0

(2)5~8位爲數據位,即要傳送的有效信息

(3)1位奇偶校驗位

(4)1~2位中止位,規定高電平1

7、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)。

傳輸

傳輸分爲四種類型:批量傳輸、等時(同步)傳輸、中斷傳輸、控制傳輸。

一、批量(大容量數據)傳輸(Bulk Transfers): 非週期性,突發

大容量數據的通訊,數據能夠佔用任意帶寬,並容忍延遲 。如USB打印機、掃描儀、大容量儲存設備等。

批量輸出事務:
(1)主機先發出一個OUT令牌包(包含設備地址,端點號)。
(2)而後再發送一個DATA包,這時地址和端點匹配的設備就會收下這個數據包,主機切換到接收模式,等待設備返回握手包。
(3)設備解碼令牌包,數據包都準確無誤,而且有足夠的緩衝區來保存數據後就會使用ACK/NYET握手包來應答主機(只有高速模式纔有NYET握手包,他表示本次數據成功接收,可是沒有能力接收下一次傳輸),若是沒有足夠的緩衝區來保存數據,就返回NAC,告訴主機目前沒有緩衝區可用,主機會在稍後時間從新該批量傳輸事務。若是設備檢查到數據正確,但端點處於掛起狀態,返回STALL。若是檢測到有錯誤(如校驗錯誤,位填充錯誤),則不作任何響應,讓主機等待超時。
批量輸入事務:
(1)主機首先發送一個IN令牌包(包含設備地址,端點號)。
(2)主機切換到接收數據狀態等待設備返回數據。若是設備檢測到錯誤,不作任何響應,主機等待超時。若是此時有地址和端點匹配的設備,而且沒有檢測到錯誤,則該設備做出反應:設備有數據須要返回,就將一個數據包放在總線上;若是沒有數據須要返回,設備返回NAK響應主機;若是該端點處於掛起狀態,設備返回STALL。若是主機收到設備發送的數據包並解碼正確後,使用ACK握手包應答設備。若是主機檢測到錯誤,則不作任何響應,設備會檢測到超時。注意:USB協議規定,不容許主機使用NAK來拒絕接收數據包。主機收到NAK,知道設備暫時沒有數據返回,主機會在稍後時間從新該批量輸入事務。

image

image

二、中斷傳輸(Interrupt Transfers): 週期性,低頻率。

容許有限延遲的通訊 如人機接口設備(HID)中的鼠標、鍵盤、軌跡球等。
中斷傳輸是一種保證查詢頻率的傳輸。中斷端點在端點描述符中要報告它的查詢間隔,主機會保證在小於這個時間間隔的範圍內安排一次傳輸。

image

三、等時(同步)傳輸(Isochronous Transfers): 週期性 。

持續性的傳輸,用於傳輸與時效相關的信息,而且在數據中保存時間戳的信息 ,如音頻視頻設備。

等時(同步)傳輸用在數據量大、對實時性要求高的場合,如音頻設備,視頻設備等,這些設備對數據的延遲很敏感。對於音頻或視頻設備數據的100%正確性要求不高,少許的數據錯誤是能夠容忍的,主要是保證數據不能停頓,因此等時傳輸是不保證數據100%正確的。當數據錯誤時,再也不重傳操做。所以等時傳輸沒有應答包,數據是否正確,由數據的CRC校驗來確認。

image

四、控制傳輸(Control Transfers): 非週期性,突發。

用於命令和狀態的傳輸

控制傳輸可分爲三個過程:(1)創建過程 (2)數據過程(可選) (3)狀態過程
特性:
每一個USB設備都必須有控制端點,支持控制傳輸來進行命令和狀態的傳輸。USB主機驅動將經過控制傳輸與USB設備的控制端點通訊,完成USB設備的枚舉和配置 。
方向:
控制傳輸是雙向的傳輸,必須有IN和OUT兩個方向上的特定端點號的控制端點來完成兩個方向上的控制傳輸 。

USB事物

image

USB包

包的組成:

image

包的內容:

image

一、PID:

image

這裏只用(PID04),PID47是PID0~4的取反,用來校驗PID
PID1~0:01 令牌包、11 數據包、10 握手包、00 特殊包

image

二、地址:

image

三、幀號:

image

四、數據:

image

五、CRC:

image

Packet分四大類:

命令 (Token) 、Packet 幀首 (Start of Frame) 、Packet 數據 (Data) 、Packet 握手 (Handshake) Packet

不一樣類型包,以上的組成部件有所不一樣

一、四種Packet類型之令牌包(Token Packet):

令牌包用來啓動一次USB傳輸。
輸出(OUT)令牌包:用來通知設備將要輸出一個數據包
輸入(IN)令牌包:用來通知設備返回一個數據包
創建(SETUP)令牌包:只用在控制傳輸中,和輸出令牌包做用同樣,也是通知設備將要輸出一個數據包,二者區別在於:
SETUP令牌包後只使用DATA0數據包,且只能發送到設備的控制端點,而且設備必需要接收,而OUT令牌包沒有這些限制
image
例子:

image

二、四種Packet類型之SOF Packet

幀起始包:在每幀(或微幀)開始時發送,以廣播的形式發送,全部USB全速設備和高速設備均可以接收到SOF包。

image

例子:

image

0xA5:1010 0101:對應上面PID表可知是幀起始包

三、四種Packet類型之Data Packet

image

例子:

image

四、四種Packet類型之Handshake Packet

image

例子:

image

USB 設備枚舉及描述符介紹

當一個USB設備插入主機後,會有如下活動:
image

在USB設備的邏輯組織中,包含設備、配置、接口和端點4個層次。設備一般有一個或多個配置,配置一般有一個或多個接口,接口一般有零個或多個端點。 ![img]image

image

image

image

image

例程分析

咱們插上鼠標後後出現以下的信息,咱們先來分析第一個傳輸:

image

咱們看到第一個是控制傳輸,它包含了4個事物,分別是:1個setup事務,3個in事務,1個out事務,咱們先打開setup事務:

image

咱們看到這個事務裏包含了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事務

image

咱們看到這個事務裏也有三個包

第一個是in包:由主機發送給設備,表示要設備向主機發送上面請求的設備描述符

第二個是數據包:由設備發送給主機,固然是發送設備描述符,咱們來分析一下:

12:表示接下來要求主機向設備發送信息

01:CLEAR_FEATURE、

第三個是應答包,由主機發送給設備

接着咱們來看第二個in事務

image

這個事務裏依舊是3個包

第一個是in包:由主機發送給設備,表示須要輸入

第二個是數據包:由設備發送給主機,咱們來解析一下:

6D:表示要求主機發給設備數據

04:Reserved for future use

第三個是主機給設備的應答包

最後來看out事務

image

第一個是out包:由主機發給設備

第二個是數據包:由主機發給設備,無數據

第三個包是設備給主機的應答包

相關文章
相關標籤/搜索