當你將微控制器連接到傳感器、顯示器或其他模塊時,你有沒有想過這兩個設備是如何相互通信的?它們到底在說什么?它們是如何相互理解的?
電子設備之間的通信就像人與人之間的通信。雙方需要使用相同的語言。在電子領域,這些語言被稱為通信協議 。幸運的是,在構建大多數 DIY 電子項目時,我們只需要了解少數幾種通信協議。在本系列文章中,我們將討論三種最常見協議的基礎知識:串行外設接口 (SPI)、 集成電路間通信 (I2C) 和通用異步收發器 (UART) 驅動的通信 。
首先,我們將介紹一些電子通信的基本概念,然后詳細解釋 SPI 的工作原理。在下一篇文章中,我們將討論 UART 驅動的通信,在第三篇文章中,我們將深入探討 I2C 通信。
SPI、I2C 和 UART 比 USB、以太網、藍牙和 WiFi 等協議慢得多,但它們更簡單,占用的硬件和系統資源更少。SPI、I2C 和 UART 非常適合微控制器之間以及微控制器與傳感器之間的通信,因為這些通信不需要傳輸大量高速數據。
串行與并行通信
電子設備通過物理連接的線路發送數據位來實現相互通信。比特就像單詞中的一個字母 ,只不過它不是英文字母表中的 26 個字母,而是二進制的,并且只能是 1 或 0。比特通過電壓的快速變化從一個設備傳輸到另一個設備。在一個工作電壓為 5 V 的系統中,0 比特通過 0 V 的短脈沖傳輸,而 1 比特通過 5 V 的短脈沖傳輸。
數據位可以并行或串行傳輸。在并行通信中,所有數據位同時發送,每個位通過單獨的線路。下圖顯示了二進制字母“C”(01000011)的并行傳輸:

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

SPI 通信簡介
SPI 是許多不同設備使用的常見通信協議。例如,SD 卡讀卡器模塊 、 RFID 卡讀卡器模塊和 2.4 GHz 無線發射器/接收器都使用 SPI 與微控制器通信。
SPI 的一個獨特優勢是數據傳輸不間斷。它可以連續地發送或接收任意數量的比特。而 I2C 和 UART 則以數據包的形式發送,每個數據包的比特數有限。起始和停止條件定義了每個數據包的開始和結束,因此數據在傳輸過程中會被中斷。
通過 SPI 通信的設備屬于主從關系。主設備是控制設備(通常是微控制器),而從設備(通常是傳感器、顯示器或存儲芯片)則接受主設備的指令。SPI 最簡單的配置是單主單從系統,但一個主設備可以控制多個從設備(下文將詳細介紹)。

MOSI(主輸出/從屬輸入) ——主機向從屬機發送數據的線路。
MISO(主輸入/從輸出) ——從機向主機發送數據的線路。
SS/CS(從機選擇/片選) ——主機選擇向哪個從機發送數據的線路。

*實際上,從機的數量受到系統負載電容的限制,這降低了主機在電壓水平之間準確切換的能力。
SPI 的工作原理
時鐘
時鐘信號將主機的數據位輸出與從機的位采樣同步。每個時鐘周期傳輸一位數據,因此數據傳輸速度取決于時鐘信號的頻率。SPI 通信始終由主機發起,因為主機負責配置和生成時鐘信號。
任何設備共享時鐘信號的通信協議都稱為同步通信協議。SPI 就是一種同步通信協議。此外,還有一些異步通信方法不使用時鐘信號。例如,在 UART 通信中,兩端都設置為預配置的波特率,該波特率決定了數據傳輸的速度和時序。
SPI 中的時鐘信號可以使用時鐘極性和時鐘相位的屬性進行修改。這兩個屬性共同定義位輸出和采樣的時間。主設備可以設置時鐘極性,以允許在時鐘周期的上升沿或下降沿輸出和采樣位。可以設置時鐘相位,使輸出和采樣發生在時鐘周期的第一個邊沿或第二個邊沿,無論是上升沿還是下降沿。
從屬選擇
主機可以通過將從機的 CS/SS 線設置為低電平來選擇要與哪個從機通信。在空閑、非傳輸狀態下,從機選擇線保持高電平。主機上可能有多個 CS/SS 引腳,這樣就可以并行連接多個從機。如果只有一個 CS/SS 引腳,則可以通過菊花鏈方式將多個從機連接到主機。
多個從屬
SPI 可以設置為單主機單從機模式,也可以設置為單主機控制多從機模式。將多從機連接到主機有兩種方法。如果主機有多個從機選擇引腳,則可以像這樣并聯連接多從機:

如果只有一個從機選擇引腳可用,則可以像這樣以菊花鏈形式連接從機:

MOSI 和 MISO
主機通過 MOSI 線以串行方式逐位向從機發送數據。從機通過 MOSI 引腳接收主機發送的數據。主機向從機發送數據時,通常先發送最高有效位。
從機也可以通過串行 MISO 線將數據發送回主機。從機發送回主機的數據通常以最低有效位優先的方式發送。
SPI 數據傳輸步驟
1、主機輸出時鐘信號:

2、主機將 SS/CS 引腳切換至低電壓狀態,從而激活從機:
3、主機通過 MOSI 線將數據逐位發送給從機。從機接收到數據后,讀取這些位:
4、如果需要響應,從設備會通過 MISO 線一次一位地向主設備返回數據。主設備在接收到數據后會讀取這些位:
SPI 的優點和缺點
使用 SPI 有一些優點和缺點,如果要在不同的通信協議之間進行選擇,您應該根據項目要求知道何時使用 SPI:
優勢
沒有起始位和停止位,因此數據可以連續傳輸而不會中斷
沒有像 I2C 那樣復雜的從屬尋址系統
數據傳輸速率比 I2C 更高(幾乎快兩倍)
分離 MISO 和 MOSI 線路,以便可以同時發送和接收數據
缺點
使用四根線(I2C 和 UART 使用兩根)
沒有確認數據已成功接收(I2C 有此情況)
沒有像 UART 中的奇偶校驗位那樣的錯誤檢查形式
僅允許單個主機
希望本文能幫助您更好地理解 SPI。
-
微控制器
+關注
關注
48文章
8381瀏覽量
164575 -
SPI
+關注
關注
17文章
1885瀏覽量
101241 -
I2C
+關注
關注
28文章
1556瀏覽量
131235
發布評論請先 登錄
淺談I2C總線,I2C接口和SPI接口的作用相同
詳細介紹GPIO、I2C、SPI通訊原理以及物理層原理
詳細介紹GPIO、I2C、SPI通訊原理以及物理層原理
硬件I2C與模擬I2C
SPI 為什么比 I2C 更快?
評論