chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

3天內不再提示

通信協(xié)議SPI、UART、I2C的區(qū)別與應用

ARM與嵌入式 ? 來源:ARM與嵌入式 ? 2023-01-04 09:21 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

電子設備之間的通信就像人類之間的交流,雙方都需要說相同的語言。在電子產品中,這些語言稱為通信協(xié)議。

之前有單獨地分享了SPI、UART、I2C通信的文章,這篇對它們做一些對比。

串行 VS 并行

電子設備通過發(fā)送數(shù)據(jù)位從而實現(xiàn)相互交談。位是二進制的,只能是1或0。通過電壓的快速變化,位從一個設備傳輸?shù)搅硪粋€設備。在以5V工作的系統(tǒng)中,“0”通過0V的短脈沖進行通信,而“1”通過5V的短脈沖進行通信。

數(shù)據(jù)位可以通過并行或串行的形式進行傳輸。在并行通信中,數(shù)據(jù)位在導線上同時傳輸。下圖顯示了二進制(01000011)中字母“C”的并行傳輸:

4fcd3762-8ba1-11ed-bfe3-dac502259ad0.png

在串行通信中,位通過單根線一一發(fā)送。下圖顯示了二進制(01000011)中字母“C”的串行傳輸:

4ffee708-8ba1-11ed-bfe3-dac502259ad0.png

SPI通信

SPI是一種常見的設備通用通信協(xié)議。它有一個獨特優(yōu)勢就是可以無中斷傳輸數(shù)據(jù),可以連續(xù)地發(fā)送或接收任意數(shù)量的位。而在I2C和UART中,數(shù)據(jù)以數(shù)據(jù)包的形式發(fā)送,有著限定位數(shù)。

在SPI設備中,設備分為主機與從機系統(tǒng)。主機是控制設備(通常是微控制器),而從機(通常是傳感器,顯示器或存儲芯片)從主機那獲取指令。

一套SPI通訊共包含四種信號線:MOSI(Master Output/Slave Input)– 信號線,主機輸出,從機輸入。MISO(Master Input/Slave Output)– 信號線,主機輸入,從機輸出。SCLK(Clock)– 時鐘信號。SS/CS(Slave Select/Chip Select)– 片選信號。

502353e0-8ba1-11ed-bfe3-dac502259ad0.png

SPI協(xié)議特點

實際上,從機的數(shù)量受系統(tǒng)負載電容的限制,它會降低主機在電壓電平之間準確切換的能力。

工作原理

時鐘信號

每個時鐘周期傳輸一位數(shù)據(jù),因此數(shù)據(jù)傳輸?shù)乃俣热Q于時鐘信號的頻率。時鐘信號由于是主機配置生成的,因此SPI通信始終由主機啟動。

設備共享時鐘信號的任何通信協(xié)議都稱為同步。SPI是一種同步通信協(xié)議,還有一些異步通信不使用時鐘信號。例如在UART通信中,雙方都設置為預先配置的波特率,該波特率決定了數(shù)據(jù)傳輸?shù)乃俣群蜁r序。

片選信號

主機通過拉低從機的CS/SS來使能通信。在空閑/非傳輸狀態(tài)下,片選線保持高電平。在主機上可以存在多個CS/SS引腳,允許主機與多個不同的從機進行通訊。

507e81b6-8ba1-11ed-bfe3-dac502259ad0.png

如果主機只有一個片選引腳可用,則可以通過以下方式連接這些從器件:

509218ac-8ba1-11ed-bfe3-dac502259ad0.png

MOSI和MISO

主機通過MOSI以串行方式將數(shù)據(jù)發(fā)送給從機,從機也可以通過MISO將數(shù)據(jù)發(fā)送給主機,兩者可以同時進行。所以理論上,SPI是一種全雙工的通訊協(xié)議。

傳輸步驟

1.主機輸出時鐘信號

50ba8c4c-8ba1-11ed-bfe3-dac502259ad0.png

2. 主機拉低SS / CS引腳,激活從機

50e0509e-8ba1-11ed-bfe3-dac502259ad0.png

3. 主機通過MOSI將數(shù)據(jù)發(fā)送給從機

50f8aa90-8ba1-11ed-bfe3-dac502259ad0.png

4. 如果需要響應,則從機通過MISO將數(shù)據(jù)返回給主機

512044b0-8ba1-11ed-bfe3-dac502259ad0.png

使用SPI有一些優(yōu)點和缺點,如果在不同的通信協(xié)議之間進行選擇,則應根據(jù)項目要求進行充分考量。

優(yōu)劣

優(yōu)點

SPI通訊無起始位和停止位,因此數(shù)據(jù)可以連續(xù)流傳輸而不會中斷;沒有像I2C這樣的復雜的從站尋址系統(tǒng),數(shù)據(jù)傳輸速率比I2C更高(幾乎快兩倍)。獨立的MISO和MOSI線路,可以同時發(fā)送和接收數(shù)據(jù)。

缺點

SPI使用四根線(I2C和UART使用兩根線),沒有信號接收成功的確認(I2C擁有此功能),沒有任何形式的錯誤檢查(如UART中的奇偶校驗位等)。

51586f52-8ba1-11ed-bfe3-dac502259ad0.png

UART代表通用異步接收器/發(fā)送器也稱為串口通訊,它不像SPI和I2C這樣的通信協(xié)議,而是微控制器中的物理電路或獨立的IC。


UART的主要目的是發(fā)送和接收串行數(shù)據(jù),其最好的優(yōu)點是它僅使用兩條線在設備之間傳輸數(shù)據(jù)。UART的原理很容易理解,但是如果您還沒有閱讀SPI 通訊協(xié)議,那可能是一個不錯的起點。

UART通信

在UART通信中,兩個UART直接相互通信。發(fā)送UART將控制設備(如CPU)的并行數(shù)據(jù)轉換為串行形式,以串行方式將其發(fā)送到接收UART。只需要兩條線即可在兩個UART之間傳輸數(shù)據(jù),數(shù)據(jù)從發(fā)送UART的Tx引腳流到接收UART的Rx引腳:

516eb834-8ba1-11ed-bfe3-dac502259ad0.png

UART屬于異步通訊,這意味著沒有時鐘信號,取而代之的是在數(shù)據(jù)包中添加開始和停止位。這些位定義了數(shù)據(jù)包的開始和結束,因此接收UART知道何時讀取這些數(shù)據(jù)。 當接收UART檢測到起始位時,它將以特定波特率的頻率讀取。波特率是數(shù)據(jù)傳輸速度的度量,以每秒比特數(shù)(bps)表示。兩個UART必須以大約相同的波特率工作,發(fā)送和接收UART之間的波特率只能相差約10%。

5188c90e-8ba1-11ed-bfe3-dac502259ad0.png

工作原理

發(fā)送UART從數(shù)據(jù)總線獲取并行數(shù)據(jù)后,它會添加一個起始位,一個奇偶校驗位和一個停止位來組成數(shù)據(jù)包并從Tx引腳上逐位串行輸出,接收UART在其Rx引腳上逐位讀取數(shù)據(jù)包。

51a6cb5c-8ba1-11ed-bfe3-dac502259ad0.png

UART數(shù)據(jù)包含有1個起始位,5至9個數(shù)據(jù)位(取決于UART),一個可選的奇偶校驗位以及1個或2個停止位:

51d2c3f6-8ba1-11ed-bfe3-dac502259ad0.png

起始位:

UART數(shù)據(jù)傳輸線通常在不傳輸數(shù)據(jù)時保持在高電壓電平。開始傳輸時發(fā)送UART在一個時鐘周期內將傳輸線從高電平拉低到低電平,當接收UART檢測到高電壓到低電壓轉換時,它開始以波特率的頻率讀取數(shù)據(jù)幀中的位。

數(shù)據(jù)幀:

數(shù)據(jù)幀內包含正在傳輸?shù)膶嶋H數(shù)據(jù)。如果使用奇偶校驗位,則可以是5位,最多8位。如果不使用奇偶校驗位,則數(shù)據(jù)幀的長度可以為9位。

校驗位:

奇偶校驗位是接收UART判斷傳輸期間是否有任何數(shù)據(jù)更改的方式。接收UART讀取數(shù)據(jù)幀后,它將對值為1的位數(shù)進行計數(shù),并檢查總數(shù)是偶數(shù)還是奇數(shù),是否與數(shù)據(jù)相匹配。

停止位:

為了向數(shù)據(jù)包的結尾發(fā)出信號,發(fā)送UART將數(shù)據(jù)傳輸線從低電壓驅動到高電壓至少持續(xù)兩位時間。

傳輸步驟

發(fā)送UART從數(shù)據(jù)總線并行接收數(shù)據(jù):

51e290ec-8ba1-11ed-bfe3-dac502259ad0.png

2.發(fā)送UART將起始位,奇偶校驗位和停止位添加到數(shù)據(jù)幀:

5208d810-8ba1-11ed-bfe3-dac502259ad0.png

3.整個數(shù)據(jù)包從發(fā)送UART串行發(fā)送到接收UART。接收UART以預先配置的波特率對數(shù)據(jù)線進行采樣:

521a45aa-8ba1-11ed-bfe3-dac502259ad0.png

4.接收UART丟棄數(shù)據(jù)幀中的起始位,奇偶校驗位和停止位:

52455fec-8ba1-11ed-bfe3-dac502259ad0.png

5.接收UART將串行數(shù)據(jù)轉換回并行數(shù)據(jù),并將其傳輸?shù)浇邮斩说臄?shù)據(jù)總線:

525c8906-8ba1-11ed-bfe3-dac502259ad0.png

優(yōu)劣

沒有任何通信協(xié)議是完美的,但是UART非常擅長于其工作。以下是一些利弊,可幫助您確定它們是否適合您的項目需求:

優(yōu)點

僅使用兩根電線

無需時鐘信號

具有奇偶校驗位以允許進行錯誤檢查

只要雙方都設置好數(shù)據(jù)包的結構

有據(jù)可查并得到廣泛使用的方法

缺點

數(shù)據(jù)幀的大小最大為9位

不支持多個從屬系統(tǒng)或多個主系統(tǒng)

每個UART的波特率必須在彼此的10%之內

I2C通信

I2C總線是由Philips公司開發(fā)的一種簡單、雙向二線制同步串行總線。它只需要兩根線即可傳送信息。它結合了 SPI 和 UART 的優(yōu)點,您可以將多個從機連接到單個主機(如SPI那樣),也可以使用多個主機控制一個或多個從機。當您想讓多個微控制器將數(shù)據(jù)記錄到單個存儲卡或將文本顯示到單個LCD時,這將非常有用。

526fe5b4-8ba1-11ed-bfe3-dac502259ad0.png

SDA (Serial Data)– 數(shù)據(jù)線。

SCL (Serial Clock)– 時鐘線。

I2C是串行通信協(xié)議,因此數(shù)據(jù)沿著SDA一點一點地傳輸。與SPI一樣,I2C也需要時鐘同步信號且時鐘始終由主機控制。

5282fe1a-8ba1-11ed-bfe3-dac502259ad0.png

工作原理

I2C的數(shù)據(jù)傳輸是以多個msg的形式進行,每個msg都包含從機的二進制地址幀,以及一個或多個數(shù)據(jù)幀,還包括開始條件和停止條件,讀/寫位和數(shù)據(jù)幀之間的ACK / NACK位:

52a22e20-8ba1-11ed-bfe3-dac502259ad0.png

啟動條件:當SCL是高電平時,SDA從高電平向低電平切換。

停止條件:當SCL是高電平時,SDA由低電平向高電平切換。

52c029b6-8ba1-11ed-bfe3-dac502259ad0.png

地址幀:每個從屬設備唯一的7位或10位序列,用于主從設備之間的地址識別。

讀/寫位:一位,如果主機是向從機發(fā)送數(shù)據(jù)則為低電平,請求數(shù)據(jù)則為高電平。

ACK/NACK:消息中的每個幀后均帶有一個ACK/NACK位。如果成功接收到地址幀或數(shù)據(jù)幀,接收設備會返回一個ACK位用于表示確認。

尋址

由于I2C沒有像SPI那樣的片選線,因此它需要使用另一種方式來確認某一個從設備,而這個方式就是 ——尋址。

主機將要通信的從機地址發(fā)送給每個從機,然后每個從機將其與自己的地址進行比較。如果地址匹配,它將向主機發(fā)送一個低電平ACK位。如果不匹配,則不執(zhí)行任何操作,SDA線保持高電平。

讀/寫位

地址幀的末尾包含一個讀/寫位。如果主機要向從機發(fā)送數(shù)據(jù),則為低電平。如果是主機向從機請求數(shù)據(jù),則為高電平。

數(shù)據(jù)幀

當主機檢測到從機的ACK位后,就可以發(fā)送第一個數(shù)據(jù)幀了。數(shù)據(jù)幀始終為8位,每個數(shù)據(jù)幀后緊跟一個ACK / NACK位,來驗證接收狀態(tài)。當發(fā)送完所有數(shù)據(jù)幀后,主機可以向從機發(fā)送停止條件來終止通信。

傳輸步驟

1. 在SCL線為高電平時,主機通過將SDA線從高電平切換到低電平來啟動總線通信。

2. 主機向總線發(fā)送要與之通信的從機的7位或10位地址,以及讀/寫位:

52d643d6-8ba1-11ed-bfe3-dac502259ad0.png

3. 每個從機將主機發(fā)送的地址與其自己的地址進行比較。如果地址匹配,則從機通過將SDA線拉低一位返回一個ACK位。如果主機的地址與從機的地址不匹配,則從機將SDA線拉高。

52ed80be-8ba1-11ed-bfe3-dac502259ad0.png

4. 主機發(fā)送或接收數(shù)據(jù)幀:

530181cc-8ba1-11ed-bfe3-dac502259ad0.png

5. 傳輸完每個數(shù)據(jù)幀后,接收設備將另一個ACK位返回給發(fā)送方,以確認已成功接收到該幀:

53242b00-8ba1-11ed-bfe3-dac502259ad0.png

6. 隨后主機將SCL切換為高電平,然后再將SDA切換為高電平,從而向從機發(fā)送停止條件。

單個主機VS多個從機

由于I2C使用尋址功能,可以通過一個主機控制多個從機。使用7位地址時,最多可以使用128(27)個唯一地址。使用10位地址并不常見,但可以提供1,024(210)個唯一地址。如果要將多個從機連接到單個主機時,請使用4.7K歐的上拉電阻將它們連接,例如將SDA和SCL線連接到Vcc:

5338883e-8ba1-11ed-bfe3-dac502259ad0.png

多個主機VS多個從機

I2C支持多個主機同時與多個從機相連,當兩個主機試圖通過SDA線路同時發(fā)送或接收數(shù)據(jù)時,就會出現(xiàn)問題。因此每個主機都需要在發(fā)送消息之前檢測SDA線是低電平還是高電平。如果SDA線為低電平,則意味著另一個主機正在控制總線。如果SDA線高,則可以安全地發(fā)送數(shù)據(jù)。如果要將多個主機連接到多個從機,請使用4.7K歐的上拉電阻將SDA和SCL線連接到Vcc:

534bb760-8ba1-11ed-bfe3-dac502259ad0.png

優(yōu)劣

與其他協(xié)議相比,I2C可能聽起來很復雜。以下是一些利弊,可幫助您確定它們是否適合您的項目需求:

優(yōu)點

僅使用兩根電線

支持多個主機和多個從機

每個UART的波特率必須在彼此的10%之內

硬件比UART更簡單

眾所周知且被廣泛使用的協(xié)議

缺點

數(shù)據(jù)傳輸速率比SPI慢

數(shù)據(jù)幀的大小限制為8位

審核編輯:郭婷

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

    關注

    28

    文章

    1065

    瀏覽量

    41680
  • SPI
    SPI
    +關注

    關注

    17

    文章

    1836

    瀏覽量

    98667
  • uart
    +關注

    關注

    22

    文章

    1287

    瀏覽量

    105528

原文標題:帶你快速對比SPI、UART、I2C通信的區(qū)別與應用!

文章出處:【微信號:ARM與嵌入式,微信公眾號:ARM與嵌入式】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    串行通信相關的基礎知識

    串行通信是電子設備中數(shù)據(jù)交換的基石。最常見的串行通信協(xié)議UART,SPI,I2C等。
    的頭像 發(fā)表于 10-15 10:53 ?990次閱讀
    串行<b class='flag-5'>通信</b>相關的基礎知識

    深入剖析I2C協(xié)議

    I2C是由Philips開發(fā)的簡單的雙向兩線總線,在深入淺出理解SPI協(xié)議中,我們區(qū)分了單工,半雙工,全雙工協(xié)議數(shù)據(jù)流向的區(qū)別,根據(jù)特征,
    的頭像 發(fā)表于 08-21 15:10 ?2746次閱讀
    深入剖析<b class='flag-5'>I2C</b><b class='flag-5'>協(xié)議</b>

    第十八章 I2C通信測試

    本章介紹了I2C協(xié)議,其物理層用SDA和SCL雙線,支持多設備:協(xié)議層含起始/停止信號、應答機制等。還講解W55MH32的I2C外設及初始化,并進行了
    的頭像 發(fā)表于 06-19 17:07 ?865次閱讀
    第十八章 <b class='flag-5'>I2C</b><b class='flag-5'>通信</b>測試

    iic協(xié)議spi協(xié)議區(qū)別

    I2C協(xié)議SPI協(xié)議區(qū)別 1. 通信方式 I2C
    的頭像 發(fā)表于 02-05 11:28 ?4191次閱讀

    I2C總線通信原理 如何設計I2C總線電路

    I2C總線通信原理 I2C(Inter-Integrated Circuit)總線是一種用于集成電路之間進行通信的串行通信協(xié)議。它最早由飛利
    的頭像 發(fā)表于 01-31 15:01 ?1608次閱讀

    基于I2C總線的智能家居應用

    隨著科技的飛速發(fā)展,智能家居系統(tǒng)已經成為現(xiàn)代生活的一個重要組成部分。I2C(Inter-Integrated Circuit)總線是一種串行通信協(xié)議,廣泛應用于微控制器和各種傳感器之間,因其簡單
    的頭像 發(fā)表于 01-17 16:21 ?889次閱讀

    I2C總線的優(yōu)缺點分析

    I2C總線作為一種廣泛使用的串行通信協(xié)議,以其簡單性和高效性在嵌入式系統(tǒng)中占據(jù)著重要地位。 I2C總線的優(yōu)點 1. 簡單性和低成本 I2C總線只需要兩條線(數(shù)據(jù)線SDA和時鐘線SCL)
    的頭像 發(fā)表于 01-17 15:50 ?1561次閱讀

    I2C總線的工作模式介紹

    在現(xiàn)代電子系統(tǒng)中,I2C總線作為一種多主機、多從機的串行通信協(xié)議,扮演著至關重要的角色。它允許多個設備共享同一總線,進行數(shù)據(jù)傳輸,從而簡化了系統(tǒng)設計并降低了成本。 I2C總線的基本特性 I2C
    的頭像 發(fā)表于 01-17 15:32 ?1437次閱讀

    I2C總線故障排除技巧

    I2C總線是一種廣泛使用的串行通信協(xié)議,它允許多個設備在兩條線上(數(shù)據(jù)線SDA和時鐘線SCL)進行通信。由于其簡單性和靈活性,I2C總線在嵌入式系統(tǒng)中非常流行。然而,當
    的頭像 發(fā)表于 01-17 15:20 ?3369次閱讀

    I2C總線與單片機的連接

    在現(xiàn)代電子系統(tǒng)中,單片機(MCU)是核心控制單元,而I2C總線作為一種多主機、多從機的串行通信協(xié)議,因其簡單、高效和節(jié)省引腳的特性而被廣泛應用于各種電子設備中。 I2C總線概述 I2C
    的頭像 發(fā)表于 01-17 15:18 ?1722次閱讀

    I2C總線與SPI總線的比較

    在現(xiàn)代電子系統(tǒng)中,微控制器與各種外設之間的通信是必不可少的。I2CSPI是兩種流行的串行通信協(xié)議,它們各自具有獨特的特點和應用場景。 I2C
    的頭像 發(fā)表于 01-17 15:08 ?1447次閱讀

    為什么嵌入式調試經常用UART,卻很少用SPI、I2C或USRT?

    在嵌入式調試中經常使用 UART(通用異步收發(fā)傳輸器)而較少使用 SPI(串行外設接口)、I2C(集成電路總線)或 USRT(通用同步 / 異步收發(fā)傳輸器)主要有以下原因
    的頭像 發(fā)表于 12-18 09:58 ?1054次閱讀
    為什么嵌入式調試經常用<b class='flag-5'>UART</b>,卻很少用<b class='flag-5'>SPI</b>、<b class='flag-5'>I2C</b>或USRT?

    通信協(xié)議SPI總線硬件篇

    , 即同步傳輸)。 1、支持半雙工、全雙工通信模式。 2、沒有流控制和應答機制來確認是否接收到數(shù)據(jù)(UART有校驗或流控制)。 3、沒有一個固定的傳輸速率規(guī)定,已有器件SPI
    的頭像 發(fā)表于 11-25 17:56 ?2800次閱讀
    <b class='flag-5'>通信協(xié)議</b>之<b class='flag-5'>SPI</b>總線硬件篇

    CAN總線與其他串行通信協(xié)議比較

    CAN總線與其他串行通信協(xié)議相比,具有其獨特的特點和優(yōu)勢。以下是對CAN總線與UART、I2CSPI等常見串行通信協(xié)議的比較: 一、基本特
    的頭像 發(fā)表于 11-12 09:56 ?2709次閱讀

    I2C協(xié)議的基礎知識

    本文從I2C協(xié)議的概述開始,描述協(xié)議的歷史、不同速度模式、物理層和數(shù)據(jù)幀結構,最后介紹I2C混合電壓系統(tǒng)中電平兼容性以及上拉電阻大小計算。
    的頭像 發(fā)表于 10-22 15:51 ?3686次閱讀
    <b class='flag-5'>I2C</b><b class='flag-5'>協(xié)議</b>的基礎知識