色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

SPI、UART、I2C通信的區別

h1654155149.6853 ? 來源:電子工程世界 ? 作者:電子工程世界 ? 2022-03-14 14:01 ? 次閱讀

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

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

串行 VS 并行

電子設備通過發送數據位從而實現相互交談。位是二進制的,只能是1或0。通過電壓的快速變化,位從一個設備傳輸到另一個設備。在以5V工作的系統中,“0”通過0V的短脈沖進行通信,而“1”通過5V的短脈沖進行通信。 數據位可以通過并行或串行的形式進行傳輸。在并行通信中,數據位在導線上同時傳輸。下圖顯示了二進制(01000011)中字母“C”的并行傳輸:

1c5236f2-a345-11ec-952b-dac502259ad0.png

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

1c6979a2-a345-11ec-952b-dac502259ad0.png

SPI通信

SPI是一種常見的設備通用通信協議。它有一個獨特優勢就是可以無中斷傳輸數據,可以連續地發送或接收任意數量的位。而在I2C和UART中,數據以數據包的形式發送,有著限定位數。 在SPI設備中,設備分為主機與從機系統。主機是控制設備(通常是微控制器),而從機(通常是傳感器,顯示器或存儲芯片)從主機那獲取指令。 一套SPI通訊共包含四種信號線:MOSI(Master Output/Slave Input)– 信號線,主機輸出,從機輸入。MISO(Master Input/Slave Output)– 信號線,主機輸入,從機輸出。SCLK(Clock)– 時鐘信號。SS/CS(Slave Select/Chip Select)– 片選信號。

1c76643c-a345-11ec-952b-dac502259ad0.png

SPI協議特點 實際上,從機的數量受系統負載電容的限制,它會降低主機在電壓電平之間準確切換的能力。 工作原理

時鐘信號

每個時鐘周期傳輸一位數據,因此數據傳輸的速度取決于時鐘信號的頻率。時鐘信號由于是主機配置生成的,因此SPI通信始終由主機啟動。 設備共享時鐘信號的任何通信協議都稱為同步。SPI是一種同步通信協議,還有一些異步通信不使用時鐘信號。例如在UART通信中,雙方都設置為預先配置的波特率,該波特率決定了數據傳輸的速度和時序。

片選信號

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

1c893bde-a345-11ec-952b-dac502259ad0.png

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

1ca3b658-a345-11ec-952b-dac502259ad0.png

MOSI和MISO

主機通過MOSI以串行方式將數據發送給從機,從機也可以通過MISO將數據發送給主機,兩者可以同時進行。所以理論上,SPI是一種全雙工的通訊協議。 傳輸步驟 1.主機輸出時鐘信號 2. 主機拉低SS / CS引腳,激活從機

1ccfcd9c-a345-11ec-952b-dac502259ad0.png

3. 主機通過MOSI將數據發送給從機

1cea282c-a345-11ec-952b-dac502259ad0.png

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

1d064200-a345-11ec-952b-dac502259ad0.png

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

優點

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

缺點

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

1d271fac-a345-11ec-952b-dac502259ad0.png

UART代表通用異步接收器/發送器也稱為串口通訊,它不像SPI和I2C這樣的通信協議,而是微控制器中的物理電路或獨立的IC。 UART的主要目的是發送和接收串行數據,其最好的優點是它僅使用兩條線在設備之間傳輸數據。UART的原理很容易理解,但是如果您還沒有閱讀SPI 通訊協議,那可能是一個不錯的起點。

UART通信

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

1d39a2b2-a345-11ec-952b-dac502259ad0.png

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

1d47925a-a345-11ec-952b-dac502259ad0.png

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

1d5dfbee-a345-11ec-952b-dac502259ad0.png

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

1d6f3ea4-a345-11ec-952b-dac502259ad0.png

起始位:

UART數據傳輸線通常在不傳輸數據時保持在高電壓電平。開始傳輸時發送UART在一個時鐘周期內將傳輸線從高電平拉低到低電平,當接收UART檢測到高電壓到低電壓轉換時,它開始以波特率的頻率讀取數據幀中的位。 數據幀: 數據幀內包含正在傳輸的實際數據。如果使用奇偶校驗位,則可以是5位,最多8位。如果不使用奇偶校驗位,則數據幀的長度可以為9位。 校驗位: 奇偶校驗位是接收UART判斷傳輸期間是否有任何數據更改的方式。接收UART讀取數據幀后,它將對值為1的位數進行計數,并檢查總數是偶數還是奇數,是否與數據相匹配。 停止位: 為了向數據包的結尾發出信號,發送UART將數據傳輸線從低電壓驅動到高電壓至少持續兩位時間。 傳輸步驟 1.發送UART從數據總線并行接收數據:

1d843534-a345-11ec-952b-dac502259ad0.png

2.發送UART將起始位,奇偶校驗位和停止位添加到數據幀:

1da13440-a345-11ec-952b-dac502259ad0.png

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

1db59a16-a345-11ec-952b-dac502259ad0.png

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

1dce40c0-a345-11ec-952b-dac502259ad0.png

5.接收UART將串行數據轉換回并行數據,并將其傳輸到接收端的數據總線:

1de2290a-a345-11ec-952b-dac502259ad0.png

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

優點

僅使用兩根電線

無需時鐘信號

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

只要雙方都設置好數據包的結構

有據可查并得到廣泛使用的方法

缺點

數據幀的大小最大為9位

不支持多個從屬系統或多個主系統

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

I2C通信

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

1df4f864-a345-11ec-952b-dac502259ad0.png

SDA (Serial Data)– 數據線。 SCL (Serial Clock)– 時鐘線。 I2C是串行通信協議,因此數據沿著SDA一點一點地傳輸。與SPI一樣,I2C也需要時鐘同步信號且時鐘始終由主機控制。

1e06fd02-a345-11ec-952b-dac502259ad0.png

工作原理

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

1e23ab46-a345-11ec-952b-dac502259ad0.png

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

1e359bc6-a345-11ec-952b-dac502259ad0.png

地址幀:每個從屬設備唯一的7位或10位序列,用于主從設備之間的地址識別。 讀/寫位:一位,如果主機是向從機發送數據則為低電平,請求數據則為高電平。 ACK/NACK:消息中的每個幀后均帶有一個ACK/NACK位。如果成功接收到地址幀或數據幀,接收設備會返回一個ACK位用于表示確認。

尋址

由于I2C沒有像SPI那樣的片選線,因此它需要使用另一種方式來確認某一個從設備,而這個方式就是 ——尋址。 主機將要通信的從機地址發送給每個從機,然后每個從機將其與自己的地址進行比較。如果地址匹配,它將向主機發送一個低電平ACK位。如果不匹配,則不執行任何操作,SDA線保持高電平。

讀/寫位

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

數據幀

當主機檢測到從機的ACK位后,就可以發送第一個數據幀了。數據幀始終為8位,每個數據幀后緊跟一個ACK / NACK位,來驗證接收狀態。當發送完所有數據幀后,主機可以向從機發送停止條件來終止通信。 傳輸步驟1. 在SCL線為高電平時,主機通過將SDA線從高電平切換到低電平來啟動總線通信。2. 主機向總線發送要與之通信的從機的7位或10位地址,以及讀/寫位:

1e4cf0e6-a345-11ec-952b-dac502259ad0.png

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

1e682e10-a345-11ec-952b-dac502259ad0.png

4. 主機發送或接收數據幀:

1e808fc8-a345-11ec-952b-dac502259ad0.png

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

1e9d2af2-a345-11ec-952b-dac502259ad0.png

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

單個主機VS多個從機

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

1eb3a700-a345-11ec-952b-dac502259ad0.png

多個主機VS多個從機

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

1ec822fc-a345-11ec-952b-dac502259ad0.png

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

優點

僅使用兩根電線

支持多個主機和多個從機

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

硬件比UART更簡單

眾所周知且被廣泛使用的協議

缺點

數據傳輸速率比SPI慢

數據幀的大小限制為8位

審核編輯 :李倩

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

    關注

    28

    文章

    899

    瀏覽量

    40339
  • 電壓
    +關注

    關注

    45

    文章

    5617

    瀏覽量

    115964

原文標題:干貨 | SPI、UART、I2C通信的區別與應用

文章出處:【微信號:電子工程世界,微信公眾號:電子工程世界】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    SPI,UART,I2C區別與特點

    本內容詳細介紹了SPI,UART,I2C區別與特點,SPI:高速同步串行口。3~4線接口,收發獨立、可同步進行,
    發表于 02-02 16:15 ?6647次閱讀

    逼真動畫展示I2CSPIUART通信過程

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

    終于搞清了:SPIUARTI2C通信區別與應用

    電子設備之間的通信就像人類之間的交流,雙方都需要說相同的語言。在電子產品中,這些語言稱為通信協議。之前有單獨地分享了SPIUARTI2C
    發表于 02-14 13:46

    終于搞清了:SPIUARTI2C通信區別與應用!

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

    SPII2CUART串行總線協議

    串口通訊通信協議UART,以及常用外設通信協議 SPII2C的介紹與他們之間的區別
    發表于 11-30 11:28 ?95次下載

    SPI、SCI、I2CUART之間的異同

    詳細介紹了SPI、SCI、I2CUART幾種通信方式的異同便于讀者整體了解通信的意義.
    發表于 12-15 14:32 ?0次下載

    SPII2CUART三種串行總線協議的區別

    SPII2CUART三種串行總線協議的區別
    發表于 07-17 17:23 ?0次下載

    I2C,UART,SPI之間的區別是什么

    第一個區別當然是名字: SPI(Serial Peripheral Interface:串行外設接口); I2C(INTER IC BUS:意為IC之間總線) UART(Univers
    的頭像 發表于 10-30 13:28 ?5318次閱讀

    簡述UARTSPII2C協議區別

    I2CSPIUART都是常見的低速板級通信協議 ,目前主流的SoC都內置了這些通訊協議的控制器,同樣,各種傳感器、Touch控制器、指紋模塊、藍牙模塊、WIFI模塊也都兼容這三種
    的頭像 發表于 02-17 10:50 ?2563次閱讀
    簡述<b class='flag-5'>UART</b>、<b class='flag-5'>SPI</b>、<b class='flag-5'>I2C</b>協議<b class='flag-5'>區別</b>

    SPIUARTI2C通信區別與應用

    研發銷售6軸、9軸電子羅盤(陀螺儀|加速計|磁力計)、傾角傳感器、姿態傳感器,慣導、數據采集盒、IoT遠程智慧監測等 產品廣泛應用于:無人機、無人船、巡檢/引導/送餐/水下機器人、AGV、云臺裝置、望遠鏡、Qiang支瞄準鏡、雷達定位、聚光太陽能、工礦/隧道無人設備等! 核心研發人員十年技術積累,專業研發團隊,軍工級品質,替代進口。
    的頭像 發表于 12-16 17:05 ?695次閱讀
    <b class='flag-5'>SPI</b>、<b class='flag-5'>UART</b>、<b class='flag-5'>I2C</b><b class='flag-5'>通信</b>的<b class='flag-5'>區別</b>與應用

    I2CSPIUART:如何布局這些通用總線

    UART等協議與下游MCU或可編程IC進行接口。I2C總線,SPI總線和UART總線之間的區別很簡單,任何使用MCU的設計人員都應該知道如
    的頭像 發表于 11-08 17:33 ?1174次閱讀
    <b class='flag-5'>I2C</b>與<b class='flag-5'>SPI</b>與<b class='flag-5'>UART</b>:如何布局這些通用總線

    UARTSPII2C比較 串口通信介紹

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

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

    嵌入式工程師在做串口通信調試工作的時候,會經常用到I2CSPIUART這3條總線,I2CSPI
    的頭像 發表于 01-22 09:41 ?1709次閱讀
    藍牙串口通訊總線——<b class='flag-5'>I2C</b>/<b class='flag-5'>SPI</b>/<b class='flag-5'>UART</b>

    總結usart、uarti2cspi區別及相關知識

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

    SPII2C通信協議:應用與區別

    本文深入解析了SPII2C這兩種通信協議的特點、工作原理和應用場景。SPI適用于高速數據傳輸,常用于存儲器芯片和顯示器驅動等領域;I2C
    的頭像 發表于 04-22 16:45 ?1884次閱讀
    主站蜘蛛池模板: 处女座历史名人| 国产亚洲欧美在线观看三区| 久久免费特黄毛片| 正能量不良WWW免费窗口| 三级黄色视屏| 97色伦在色在线播放| 国精产品999一区二区三区有限| 亚洲国产精品高清在线| 久章草一区二区| 在线不卡日本v二区到六区| 果冻传媒MV免费播放在线观看| 亚洲国产精品无码2019| 国产精品久久久亚洲偷窥女厕| 亚洲视频区| 女神被调教成了精盆| 97视频在线观看免费播放| 色拍拍噜噜噜久久蜜桃| 国产成人a视频在线观看| 亚洲欧美一区二区三区四区 | 99久久久精品| 免费在线观看a视频| 37pao成人国产永久免费视频| 久青草影院| 国产成人免费观看在线视频| 野花社区视频WWW高清| 久久精品无码人妻无码AV蜜臀| 扒开 浓密 毛| 日本护士性生活| 成人在免费视频手机观看网站| 亚洲黄色网页| 欧美群交XXXCOM| 第一次处破女高清电影| 伊人成综合网伊人222| 色婷婷五月综合久久中文字幕| 久久日本片精品AAAAA国产| 抽插内射高潮呻吟V杜V| 永久免费在线视频| 晓雪老师我要进你里面好爽| 九九热国产视频| 97无码欧美熟妇人妻蜜桃天美| 亚洲高清在线精品一区|