精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

通信協議比較:USART、I2C、SPI

機智云 ? 2022-08-28 15:12 ? 次閱讀

61bc0fd2-24a1-11ed-9ade-dac502259ad0.png通信協議的基本概念

通信協議不難理解,就是兩個(或多個)設備之間進行通信,必須要遵循的一種協議。通信協議是指雙方實體完成通信或服務所必須遵循的規則和約定。通過通信信道和設備互連起來的多個不同地理位置的數據通信系統,要使其能協同工作實現信息交換和資源共享,它們之間必須具有共同的語言。交流什么、怎樣交流及何時交流,都必須遵循某種互相都能接受的規則。這個規則就是通信協議。

61bc0fd2-24a1-11ed-9ade-dac502259ad0.png通訊方式分類

1、按照數據的傳送方式劃分

串行通訊與并行通訊

串行通訊:指設備之間通過少量數據信號線(一般是 8 根以下),地線以及控制信號線,按數據位形式一位一位地傳輸數據的通訊方式。

并行通訊:指使用 8、16、32 及 64 根或更多的數據線進行傳輸的通訊方式,同時傳輸多個數據位的數據。

兩者比較:在數據傳輸速率相同時,并行效率更高,可以傳輸更多數據量;而串行通訊節省成本。并行傳輸對同步要求較高,且隨著通訊速率的提高,信號干擾的問題會顯著影響通訊性能。比較如下:

61d51ce8-24a1-11ed-9ade-dac502259ad0.png

2、按數據通訊方向劃分

全雙工、半雙工、單工通訊

61eaa8ba-24a1-11ed-9ade-dac502259ad0.png

62105416-24a1-11ed-9ade-dac502259ad0.png

3、按照數據通訊的同步方式/是否使用時鐘信號進行劃分

同步通訊和異步通訊

同步通訊:收發設備雙方會使用一根信號線表示時鐘信號,在時鐘信號的驅動下雙方進行協調,同步數據。通訊中通常雙方會統一規定在時鐘信號的上升沿或下降沿對數據線進行采樣

623d55d8-24a1-11ed-9ade-dac502259ad0.png

異步通訊:不使用時鐘信號進行數據同步,直接在數據信號中穿插一些同步用的信號位,或者把主體數據進行打包,以數據幀的格式傳輸數據,某些通訊中還需要雙方約定數據的傳輸速率,以便更好地同步。

6254793e-24a1-11ed-9ade-dac502259ad0.png

兩者比較:在同步通訊中,數據信號所傳輸的內容絕大部分就是有效數據,而異步通訊中會包含有幀的各種標識符,所以同步通訊的效率更高,但是同步通訊雙方的時鐘允許誤差較小,而異步通訊雙方的時鐘允許誤差較大。

4、按照通訊速率

比特率和波特率

比特率(Bitrate):每秒鐘傳輸的二進制位數,單位為比特每秒(bit/s)。

波特率(Baudrate):表示每秒鐘傳輸了多少個碼元

61bc0fd2-24a1-11ed-9ade-dac502259ad0.png三、串口協議

USART——串口通訊

包括RS232RS499、RS423、RS422RS485接口規范和標準規范

627d2c3a-24a1-11ed-9ade-dac502259ad0.png

串口通訊協議的物理層及協議層:

1、物理層:串口通訊的物理層有很多標準及變種,主要有RS-232標準,一般只使用 RXD、TXD 以及 GND 三條信號線,直接傳輸數據信號。

2、協議層:串口通訊的數據包由發送設備通過自身的 TXD 接口傳輸到接收設備的 RXD 接口。在串口通訊的協議層中,規定了數據包的內容,它由啟始位、主體數據、校驗位以及停止位組成,通訊雙方的數據包格式要約定一致才能正常收發數據

數據校驗

奇校驗:有效數據和校驗位中“1”的個數為奇數;

偶校驗:有效數據和校驗位中“1”的個數為偶數;

3、USART——通用同步異步收發器(Universal Synchronous Asynchronous Receiver and Transmitter)

RX、TX

串行通信:以幀格式傳輸數據,即是一幀一幀的傳輸,每幀包含有起始信號、數據信息、停止信息,可能還有校驗信息。

字符幀:一個字符幀發送需要三個部分:起始位+數據幀+停止位。起始位是一個位周期的低電平,位周期就是每一位占用的時間;數據幀就是我們要發送的 8 位或 9 位數據,數據是從最低位開始傳輸的;停止位是一定時間周期的高電平。

I2C通訊協議

I2C通訊協議(Inter-Integrated Circuit):由 Phiilps 公司開發的,由于它引腳少,硬件實現簡單,可擴展性強,不需要 USART、CAN 等通訊協議的外部收發設備,現在被廣泛地使用在系統內多個集成電路(IC)間的通訊。

1、物理層:雙向串行數據線(SDA),串行時鐘線(SCL)

62a27148-24a1-11ed-9ade-dac502259ad0.png

(1) 它是一個支持設備的總線。“總線”指多個設備共用的信號線。在一個 I2C 通訊總線中,可連接多個 I2C 通訊設備,支持多個通訊主機及多個通訊從機。

(2) 一個 I2C 總線只使用兩條總線線路,一條雙向串行數據線(SDA) ,一條串行時鐘線(SCL)。數據線即用來表示數據,時鐘線用于數據收發同步。

(3) 每個連接到總線的設備都有一個獨立的地址,主機可以利用這個地址進行不同設備之間的訪問。

(4) 總線通過上拉電阻接到電源。當 I2C 設備空閑時,會輸出高阻態,而當所有設備都空閑,都輸出高阻態時,由上拉電阻把總線拉成高電平。

(5) 多個主機同時使用總線時,為了防止數據沖突,會利用仲裁方式決定由哪個設備占用總線。

2、協議層:定義了通訊的起始和停止信號、數據有效性、響應、仲裁時鐘同步和地址廣播等環節

62c24ea0-24a1-11ed-9ade-dac502259ad0.png

S:傳輸開始信號;SLAVE_ADDRESS:從機地址;R/W:傳輸方向選擇位,1為讀,0為寫

A/A:應答(ACK)或非應答(NACK)信號;P:停止傳輸信號

通訊過程:起始信號產生后,所有從機就開始等待主機緊接下來廣播 的從機地址信號(SLAVE_ADDRESS)。在 I2C 總線上,每個設備的地址都是唯一的,當主機廣播的地址與某個設備地址相同時,這個設備就被選中了,沒被選中的設備將會忽略之后的數據信號。根據 I2C協議,這個從機地址可以是 7位或 10位。在地址位之后,是傳輸方向的選擇位,該位為 0 時,表示后面的數據傳輸方向是由主機傳輸至從機,即主機向從機寫數據。該位為 1時,則相反,即主機由從機讀數據。從機接收到匹配的地址后,主機或從機會返回一個應答(ACK)或非應答(NACK)信號,只有接收到應答信號后,主機才能繼續發送或接收數據。

讀和寫數據:I2C通訊更常用的是復合格式,該傳輸過程有兩次起始信號(S)。一般在第一次傳輸中,主機通過 SLAVE_ADDRESS 尋找到從設備后,發送一段“數據”,這段數據通常用于表示從設備內部的寄存器或存儲器地址(注意區分它與 SLAVE_ADDRESS 的區別);在第二次的傳輸中,對該地址的內容進行讀或寫。第一次通訊是告訴從機讀寫地址,第二次則是讀寫的實際內容。

(2)通訊的起始和停止信號:起始和停止信號一般由主機產生

起始信號:SCL為高,SDA 高 —>低;

停止信號:SCL為高,SDA 低 —>高;

62f675c2-24a1-11ed-9ade-dac502259ad0.png

數據有效性:傳輸時,SCL 為高電平的時候 SDA 表示的數據有效,即此時的 SDA 為高電平時表示數據“1”,為低電平時表示數據“0”。當 SCL為低電平時,SDA 的數據無效,一般在這個時候 SDA 進行電平切換,為下一次表示數據做好準備。

3、I2C特性及架構

軟件模擬協議:直接控制芯片的兩個 GPIO 引腳,分別用作 SCL 及 SDA,按照上述信號的時序要求,直接控制引腳的輸出(若是接收數據時則讀取 SDA 電平),就可以實現 I2C 通訊。由直接控制 GPIO 引腳電平產生通訊時序時,需要由 CPU 控制每個時刻的引腳狀態。

硬件協議:STM32 的 I2C 片上外設專門負責實現 I2C 通訊協議,只要配置好該外設,它就會自動根據協議要求產生通訊信號,收發數據并緩存起來,CPU只要檢測該外設的狀態和訪問數據寄存器,就能完成數據收發。

SPI通訊協議

SPI(Serial Peripheral Interface):串行外圍設備接口,是一種高速全雙工的通信總線。

1、SPI物理層:3條總線及片選線(SCK、MOSI、MISO、片選線共4根)

631e9a8e-24a1-11ed-9ade-dac502259ad0.png

(1)片選線:從設備選擇信號線,當有多個 SPI 從設備與 SPI 主機相連時,設備的其它信號線 SCK、MOSI及 MISO同時并聯到相同的 SPI總線上,即無論有多少個從設備,都共同只使用這 3 條總線;而每個從設備都有獨立的這一條 NSS 信號線,本信號線獨占主機的一個引腳,即有多少個從設備,就有多少條片選信號線。I2C 協議中通過設備地址來尋址、選中總線上的某個設備并與其進行通訊;而 SPI 協議中沒有設備地址,它使用 NSS 信號線來尋址,當主機要選擇從設備時,把該從設備的 NSS 信號線設置為低電平,該從設備即被選中片選有效,接著主機開始與被選中的從設備進行 SPI 通訊。所以SPI通訊以 NSS 線置低電平為開始信號,以 NSS 線被拉高作為結束信號。

(3) MOSI(Master Output,Slave Input):主設備輸出/從設備輸入引腳。主機的數據從這條信號線輸出,從機由這條信號線讀入主機發送的數據,即這條線上數據的方向為主機到從機。

(4) MISO(Master Input,Slave Output):主設備輸入/從設備輸出引腳。主機從這條信號線讀入數據,從機的數據由這條信號線輸出到主機,即在這條線上數據的方向為從機到主機。

2、協議層:SPI 協議定義了通訊的起始和停止信號、數據有效性、時鐘同步等環節。

SPI通訊時序:

6340e8aa-24a1-11ed-9ade-dac502259ad0.png

(1)通訊的起始和停止信號:

起始信號:NSS 信號線由高變低,是 SPI 通訊的起始信號。NSS 是每個從機各自獨占的信號線,當從機在自己的 NSS 線檢測到起始信號后,就知道自己被主機選中了,開始準備與主機通訊。

停止信號:NSS 信號由低變高,是 SPI 通訊的停止信號,表示本次通訊結束,從機的選中狀態被取消。

(2)數據有效性:SPI 使用 MOSI 及 MISO 信號線來傳輸數據,使用 SCK 信號線進行數據同步。MOSI及 MISO 數據線在 SCK 的每個時鐘周期傳輸一位數據,且數據輸入輸出是同時進行的。MOSI 及 MISO 的數據在 SCK 的上升沿期間變化輸出,在 SCK的下降沿時被采樣。即在 SCK的下降沿時刻,MOSI及 MISO 的數據有效,高電平時表示數據“1”,為低電平時表示數據“0”。在其它時刻,數據無效,MOSI 及 MISO為下一次表示數據做準備。SPI每次數據傳輸可以 8 位或 16 位為單位,每次傳輸的單位數不受限制。

DMA——直接存儲器存取

DMA(Direct Memory Access):是單片機的一個外設,它的主要功能是用來搬數據,但是不需要占用 CPU,即在傳輸數據的時候,CPU 可以干其他的事情,好像是多線程一樣。數據傳輸支持從外設到存儲器或者存儲器到存儲器

1、DMA請求:如果外設要想通過 DMA 來傳輸數據,必須先給 DMA 控制器發送 DMA 請求,DMA收到請求信號之后,控制器會給外設一個應答信號,當外設應答后且 DMA 控制器收到應答信號之后,就會啟動 DMA的傳輸,直到傳輸完畢。

2、通道:DMA 具有 12 個獨立可編程的通道,其中 DMA1 有 7 個通道,DMA2 有 5 個通道,每個通道對應不同的外設的 DMA 請求。雖然每個通道可以接收多個外設的請求,但是同一

時間只能接收一個,不能同時接收多個。

3、仲裁器:當發生多個 DMA 通道請求時,就意味著有先后響應處理的順序問題,這個就由仲裁器理。

4、DMA 數據配置:DMA 傳輸數據的方向有三個——從外設到存儲器,從存儲器到外設,從存儲器到存儲器。

USART/I2C/SPI比較

1、通信速率比較:

SPI > I2C > UART

(1)同步通信>異步通信;

(2)同步通信時必須有一根時鐘線連接傳輸的兩端;

(3)都是串行通信方式,并行通信用于內部存儲間的通信,如flash;

(4)適合傳輸的距離和通信速率成反比關系;

2、連線方式:

SPI:2數據線、1時鐘線、1CS(設備片選線),串行同步通信全雙工;

I2C:1數據線、1時鐘線,串行同步通信半雙工,傳輸距離比UART短;

UART:2數據線、1地線,串行異步通信全雙工,傳輸距離比I2C長些;

(I2C接口是“器件間”接口,是在一塊板子之內傳輸數據)

(UART是 “設備間”接口,更多的是用于兩臺設備之間傳輸數據)

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 通信
    +關注

    關注

    18

    文章

    5880

    瀏覽量

    135328
收藏 人收藏

    評論

    相關推薦

    DHT11用的是SPI還是I2C

    DHT11并不使用SPII2C通信協議,而是采用單總線(1-Wire)協議進行通信 。單總線協議
    的頭像 發表于 09-04 09:11 ?277次閱讀

    簡單認識I2C通信協議

    I2C(Inter-Integrated Circuit)通信協議是由飛利浦公司(現為恩智浦半導體)開發的一種簡單、雙向二線制同步串行總線協議。自1982年發布以來,I2C
    的頭像 發表于 07-25 18:06 ?930次閱讀

    如何使用Dave 3.1.10在XMC4400微控制器上實現I2c通信協議 軟件?

    我一直在嘗試使用 Dave 3.1.10 與 XMC4400 執行 I2c 通信協議,以實現傳感器接口。 軟件但我做不到。 Dave 3.1.10 的語法有所不同。 我無法使用 Dave
    發表于 06-03 07:21

    I2CSPI、UART的通信過程還可以這樣理解

    到目前為止,I2CSPI和UART等仍然是電子嵌入式設備中最常用的通信協議,本文,我們將剖析這三種協議,讓大家清楚、直觀的了解它們的功能、優點和局限性,并輔以GIF動圖展示。一、II
    的頭像 發表于 05-23 08:10 ?4222次閱讀
    <b class='flag-5'>I2C</b>、<b class='flag-5'>SPI</b>、UART的<b class='flag-5'>通信</b>過程還可以這樣理解

    SPII2C通信協議:應用與區別

    本文深入解析了SPII2C這兩種通信協議的特點、工作原理和應用場景。SPI適用于高速數據傳輸,常用于存儲器芯片和顯示器驅動等領域;I2C
    的頭像 發表于 04-22 16:45 ?935次閱讀

    逼真動畫展示I2CSPI、UART的通信過程

    到目前為止,I2CSPI和UART等仍然是電子嵌入式設備中最常用的通信協議,本文,我們將剖析這三種協議,讓大家清楚、直觀的了解它們的功能、優點和局限性,并輔以GIF動圖展示。
    的頭像 發表于 04-12 08:27 ?746次閱讀
    逼真動畫展示<b class='flag-5'>I2C</b>、<b class='flag-5'>SPI</b>、UART的<b class='flag-5'>通信</b>過程

    總結usart、uart、i2cspi區別及相關知識

    USART、UART、I2CSPI是四種不同的串行通信協議,它們各自具有獨特的特點和應用領域
    的頭像 發表于 04-10 09:47 ?1135次閱讀
    總結<b class='flag-5'>usart</b>、uart、<b class='flag-5'>i2c</b>、<b class='flag-5'>spi</b>區別及相關知識

    用STM32F103普通IO模擬通信協議I2C,SPI,串口,怎么精準的控制通訊的速率?

    用STM32F103普通IO模擬通信協議I2C,SPI,串口等。 怎么精準的控制通訊的速率,我看到STLINK也是用的STM32的芯片,為何通訊速度能達到10M那么高? 怎么操作的,有例程指導一下嗎?
    發表于 03-28 08:24

    什么是I2C協議 I2C總線的控制邏輯

    在實際使用過程中,I2C比較容易出現的一個問題就是死鎖 ,死鎖在I2C中主要表現為:I2C死鎖時表現為SCL為高,SDA一直為低。
    發表于 03-12 09:17 ?654次閱讀
    什么是<b class='flag-5'>I2C</b><b class='flag-5'>協議</b> <b class='flag-5'>I2C</b>總線的控制邏輯

    藍牙串口通訊總線——I2C/SPI/UART

    Sensor、Touch、藍牙模塊、WIFI模塊等也都兼容這三種通信協議的1種以上。那么這三條通信總線有什么區別呢?工業物聯網無線通信專業廠商為您一一細說—— I2C:半雙工、同步、串
    的頭像 發表于 01-22 09:41 ?1024次閱讀
    藍牙串口通訊總線——<b class='flag-5'>I2C</b>/<b class='flag-5'>SPI</b>/UART

    i2c接口和spi接口區別

    重要的區別。 I2C接口和SPI接口都屬于串行通信接口標準,廣泛應用在嵌入式系統和電子設備中。它們之間的主要區別在于通信協議、電氣特性、速度和適用場景等方面。
    的頭像 發表于 12-25 15:02 ?2852次閱讀

    SPII2C的異同及優缺點

    SPII2C的異同及優缺點? SPI(Serial Peripheral Interface)和I2C(Inter-Integrated Circuit)是兩種常見的串行
    的頭像 發表于 12-07 10:46 ?2429次閱讀

    UART、SPII2C比較 串口通信介紹

    UART、SPII2C比較 I2C線更少,比UART、SPI更為強大,但是技術上也更加麻煩些,因為I2
    的頭像 發表于 11-09 18:06 ?1076次閱讀
    UART、<b class='flag-5'>SPI</b>、<b class='flag-5'>I2C</b><b class='flag-5'>比較</b> 串口<b class='flag-5'>通信</b>介紹

    I2CSPI與UART:如何布局這些通用總線

    如果您要為項目構建開發板或使用通用MCU,則會發現許多用于通信其他活動組件的協議。USB和以太網之類的標準已內置在大多數控制器中,用于與計算機外圍設備一起使用。盡管如此,仍使用I2CSPI
    的頭像 發表于 11-08 17:33 ?796次閱讀
    <b class='flag-5'>I2C</b>與<b class='flag-5'>SPI</b>與UART:如何布局這些通用總線

    終于搞清了:SPI、UART、I2C通信的區別與應用!

    電子設備之間的通信就像人類之間的交流,雙方都需要說相同的語言。在電子產品中,這些語言稱為通信協議。 之前有單獨地分享了SPI、UART、I2C通信
    發表于 10-07 17:01