UART、I2C、SPI串行總線通信原理,你知道嗎?
I2C、SPI、UART是嵌入式物聯(lián)網終端備最常用的三種串口通信協(xié)議
本篇博文簡要介紹UART、I2C、SPI串行總線通信原理。更詳細的說明請看以下三篇文章。
一文搞懂I2C總線通信
一文搞懂SPI通信協(xié)議
一文搞懂UART通信協(xié)議
I2C 通信協(xié)議
I2C (Inter-Integrated Circuit) 通信協(xié)議是一種多主從架構的串行通信總線,有兩根雙向的信號線:一根數(shù)據(jù)線SDA用于收發(fā)數(shù)據(jù),一根時鐘線SCL用于通信雙方時鐘的同步。I2C 通信協(xié)議通常用于連接低速設備,如傳感器、存儲器和其他外設。連接在I2C總線上的器件分為主機和從機。主機有權發(fā)起和結束一次通信,從機只能被動呼叫。
I2C 通信協(xié)議規(guī)范的規(guī)定的數(shù)據(jù)傳輸速率如下:
標準模式下,數(shù)據(jù)傳輸速率為 100kb/s
快速模式下,數(shù)據(jù)傳輸速率為 400Kb/s
高速模式下,數(shù)據(jù)傳輸速率為 3.4 Mb/s
I2C 通信協(xié)議的優(yōu)點:
多設備支持:I2C支持多個設備連接到同一總線上,每個設備都有唯一的地址。
簡單:I2C協(xié)議相對簡單,易于實現(xiàn)和調試。
低功耗:在空閑狀態(tài)時,I2C總線上的器件可以進入低功耗模式,節(jié)省能量。
I2C 通信協(xié)議的缺點:
速度較慢:I2C通信速度較低,適用于低速設備。
受限制:I2C的總線長度和設備數(shù)量受到限制,過長的總線可能導致通信問題。
沖突:當多個設備嘗試同時發(fā)送數(shù)據(jù)時,可能會發(fā)生沖突,需要額外的沖突檢測和處理機制。
I2C 通信協(xié)議在緊湊電路中的效率高成本低,因此在小型傳感器、LCD 屏幕控制器和 RTC模塊、溫度控制設備、電池管理系統(tǒng)中很常見。
SPI 通信協(xié)議
SPI(Serial Peripheral Interface)是一種同步串行通信接口,主要應用于短距離、低數(shù)據(jù)速率的通信,常用于嵌入式系統(tǒng)。
SPI通信協(xié)議的四個重要元素:
主機(Master):初始化通信并控制時鐘信號的設備。
從機(Slave):被主機通信的設備。
時鐘信號(SCK):主機生成的同步時鐘信號,用于同步數(shù)據(jù)傳輸。
數(shù)據(jù)輸出(MOSI)和數(shù)據(jù)輸入(MISO):用于主機和從機之間的數(shù)據(jù)傳輸。
SPI通信協(xié)議分為四種模式:
模式0:時鐘信號的第一個跳變沿對應數(shù)據(jù)的首位。
模式1:時鐘信號的第一個跳變沿對應數(shù)據(jù)的末位。
模式2:時鐘信號的第一個跳變沿對應數(shù)據(jù)的首位,相對模式0,SS信號延遲。
模式3:時鐘信號的第一個跳變沿對應數(shù)據(jù)的末位,相對模式0,SS信號延遲。
SPI通信協(xié)議的基本步驟:
初始化主機和從機,設置SPI模式和時鐘速率。
主機發(fā)起通信,拉低從機的片選信號(SS)。
主機發(fā)送第一個字節(jié)的數(shù)據(jù),同時從機回應第一個字節(jié)的數(shù)據(jù)。
主機接收數(shù)據(jù)并發(fā)送下一個數(shù)據(jù)字節(jié),以此類推,直至完成通信。
通信結束后,主機釋放片選信號,結束SPI通信。
SPI通信協(xié)議的優(yōu)點:
高速:SPI通信速度較快,適用于對速度要求較高的應用。
全雙工:SPI支持全雙工通信,可以同時進行數(shù)據(jù)發(fā)送和接收。
簡單:SPI的通信協(xié)議相對簡單,適用于快速開發(fā)和實現(xiàn)。
SPI通信協(xié)議的缺點:
連線復雜:SPI需要多根線進行連接,可能會增加硬件設計的復雜性。
長距離傳輸受限:SPI的傳輸距離受到限制,過長的線路可能導致信號衰減和干擾。
主從模式限制:SPI通常采用主從模式,主設備數(shù)量受限,不適用于多主設備場景。
SPI 非常適合需要快速可靠的數(shù)據(jù)傳輸?shù)那闆r,例如 TFT 顯示器、SD 存儲卡和無線通信模塊。然而,在具有許多從站的復雜系統(tǒng)中,其有效性會降低。
UART 通信協(xié)議
UART(Universal Asynchronous Receiver/Transmitter)是一種全雙工的通信協(xié)議,常用于各種嵌入式系統(tǒng)之間的通信。UART 通信只需要兩條線即可運行:TX(發(fā)送)和 RX(接收)。該協(xié)議允許異步通信,也就是說發(fā)送器和接收器之間無需共享時鐘。數(shù)據(jù)被組織成數(shù)據(jù)包,每個數(shù)據(jù)包包含一個起始位、5 到 9 個數(shù)據(jù)位、一個可選的奇偶校驗位和一個或兩個停止位。
以下是UART通信協(xié)議的基本原理:
起始位:通信開始時,數(shù)據(jù)線被拉低。
數(shù)據(jù)位:接著起始位,數(shù)據(jù)位逐位傳輸。通常為5位、6位、7位、8位,由雙方約定。
奇偶校驗位:可選,用于檢測數(shù)據(jù)傳輸過程中的錯誤。
停止位:數(shù)據(jù)傳輸結束時,數(shù)據(jù)線被高電平持續(xù)。停止位可以是1位、1.5位、2位,由雙方約定。
波特率:數(shù)據(jù)的傳輸速率,如9600bps、115200bps等。
UART通信協(xié)議的優(yōu)點:
簡單:UART通信協(xié)議相對簡單,易于實現(xiàn)和調試。
適用性廣泛:UART被廣泛應用于各種設備之間的通信,具有較好的兼容性。
距離:UART通信距離較遠,適用于需要長距離傳輸?shù)膱鼍啊?/p>
UART通信協(xié)議的缺點:
速度較低:UART通信速度相對較低,不適用于對速度要求較高的應用。
雙工:UART通信是雙工的,可以進行低速雙工傳輸數(shù)據(jù),進行數(shù)據(jù)的發(fā)送和接收。
不可靠:由于UART是異步通信,可能會受到噪聲和干擾的影響,導致數(shù)據(jù)傳輸不可靠。
我們該如何選擇通信協(xié)議
當我們?yōu)槲锫?lián)網硬件選擇合適串口通信協(xié)議需要考慮以下幾個方面:
通信速度:SPI 提供高速度,UART 提供高靈活性,I2C 適用于速度要求較低接線簡單的配置。
電路設計:I2C 可實現(xiàn)多個設備的高效空間管理,SPI 可實現(xiàn)大型設計中的性能,而 UART 可實現(xiàn)簡單性和多功能性。
距離和通信環(huán)境:UART 在長距離上具有穩(wěn)定性,而 I2C 更適合短距離。
雙工要求:SPI 和 UART 提供全雙工功能,而 I2C 僅限于半雙工。
I2C 通信協(xié)議因其簡單性和用最少的引腳管理多個從設備的能力而脫穎而出,使其成為短距離通信的理想選擇。
SPI 通信協(xié)議具有高速和全雙工模式,非常適合在空間不是主要問題的系統(tǒng)中進行快速高效的數(shù)據(jù)傳輸。
UART 通信協(xié)議在長距離通信和速度要求較低的場景中表現(xiàn)出色。
*博客內容為網友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯(lián)系工作人員刪除。