一、介紹
SPI總線(Serial Peripheral Interface,串行外設接口)是一種高速全雙工同步串行通信總線,核心通過“主從架構+同步時鐘”實現設備間數據傳輸,因結構簡單、速率高,廣泛用于MCU與傳感器、存儲芯片、顯示模塊等外設的短距通信。
?
二、核心架構:
主從控制,4線基礎
SPI總線采用“一主多從”模式,所有設備共享時鐘和數據線,通過片選信號區分不同從設備,基礎通信需4根信號線(部分場景可簡化),各線功能如下:
- SCLK(Serial Clock,串行時鐘):由主設備(Master) 產生,用于同步主從設備的數據傳輸節奏,是“同步通信”的核心;
- MOSI(Master Out, Slave In,主出從入):主設備向從設備發送數據的單向信號線;
- MISO(Master In, Slave Out,主入從出):從設備向主設備返回數據的單向信號線;
- SS/CS(Slave Select/Chip Select,從設備選擇):主設備通過拉低某一從設備的SS引腳,單獨選中該設備(未被選中的從設備SS引腳為高電平,不響應總線通信),是“多從設備區分”的關鍵。
?
三、通信原理:同步時鐘下的“位同步傳輸”
SPI的核心是“時鐘同步數據”,主設備通過SCLK控制每一位數據的傳輸時機,主從設備在時鐘的特定邊沿(上升沿/下降沿)采樣或發送數據,整個過程可分為3個關鍵步驟:
?
1. 選中從設備:主設備拉低目標從設備的SS引腳
主設備要與某一從設備通信時,首先將該從設備的SS引腳拉低(低電平有效,部分設備支持高電平有效,需硬件定義),此時其他從設備的SS引腳保持高電平,處于“休眠狀態”,不接收總線上的SCLK和MOSI信號。
?
2. 同步傳輸:時鐘邊沿觸發數據讀寫
主設備產生SCLK時鐘信號,主從設備在時鐘的預設邊沿(由“時鐘極性(CPOL)”和“時鐘相位(CPHA)”定義)同步完成數據傳輸:
?
- 主設備在SCLK的某一邊沿(如上升沿)將MOSI線的“1位數據”輸出,從設備在同一邊沿讀取該數據;
- 同時,從設備在SCLK的另一邊沿(如下降沿)將MISO線的“1位數據”輸出,主設備在同一邊沿讀取該數據;
- 每一個SCLK周期傳輸1位數據,8個SCLK周期即可完成1字節(8位)數據的“全雙工傳輸”(主→從、從→主同時進行)。
?
3. 結束通信:主設備拉高SS引腳
數據傳輸完成后,主設備將該從設備的SS引腳拉高,從設備退出通信狀態,總線釋放,可準備與下一個從設備通信。
?
四、關鍵參數:
CPOL與CPHA決定通信時序
SPI的通信時序由“時鐘極性(CPOL)”和“時鐘相位(CPHA)”兩個參數定義,共4種組合(即4種“SPI模式”),主從設備必須使用相同的模式才能正常通信:
?
- CPOL(時鐘極性):定義SCLK在“空閑狀態”(無數據傳輸時)的電平:
- CPOL=0:空閑時SCLK為低電平;
- CPOL=1:空閑時SCLK為高電平。
- CPHA(時鐘相位):定義“數據采樣”發生在SCLK的第幾個邊沿:
- CPHA=0:數據在SCLK的“第一個邊沿”(CPOL=0時為上升沿,CPOL=1時為下降沿)采樣;
- CPHA=1:數據在SCLK的“第二個邊沿”(CPOL=0時為下降沿,CPOL=1時為上升沿)采樣。
?
五、核心特性:優勢與局限
?
1. 優勢:高速、靈活、全雙工
- 高速傳輸:無起始位/停止位(區別于UART),僅需時鐘同步,速率可達幾Mbps到幾十Mbps(取決于硬件支持);
- 全雙工:MOSI和MISO獨立,主從可同時收發數據,適合需要雙向高速通信的場景(如SD卡、SPI Flash);
- 多從擴展:通過增加SS引腳,主設備可連接多個從設備,硬件結構簡單(無需地址線,僅需1根SS對應1個從設備)。
?
2. 局限:短距、無硬件校驗
- 傳輸距離短:因采用單端信號(無差分抗干擾設計),抗干擾能力弱,通常傳輸距離不超過10米,僅適合板內或板間短距通信;
- 無硬件校驗:總線本身不自帶奇偶校驗或CRC校驗,數據可靠性需通過軟件協議(如添加校驗位)保障;
- 主從依賴:從設備無法主動發起通信,必須由主設備控制,不適合需要從設備主動上報數據的場景(如傳感器實時報警)。
?
六、總結
SPI總線的本質是“主設備主導的同步串行通信”,通過SCLK實現數據同步,用SS區分從設備,憑借高速全雙工的優勢成為短距外設通信的主流選擇。實際應用中,需重點匹配主從設備的SS電平極性和SPI模式(CPOL/CPHA),同時通過軟件校驗彌補硬件無校驗的不足,確保數據傳輸可靠。