1. 簡介
SPI, Serial Peripheral Interface, 串行外設接口, 是一種高速的、全雙工、同步的通信總線
SPI在芯片的管腳上只占用四根線
SPI接口主要用於MCU與各種外圍設備以串行方式進行通信以交換信息
外圍設備包括EEPROM、FLASH、實時時鍾、AD轉換器、數字信號處理器和數字信號解碼器中
它以主從方式工作, 通常有一個主設備和一個或多個從設備
下圖是SPI常用的兩種場景
2. 引腳
SPI通常有四組信號線
- SCLK : Serial Clock(自master輸出) - MOSI/SIMO : Master Output, Slave Input(自master輸出) - MISO/SOMI : Master Input, Slave Output(自slave輸出) - SS : Slave Select(低電平有效;自master輸出)
另一種稱呼亦廣泛被使用
- SCK : Serial Clock(自master輸出) - SDI/DI/SI : Serial Data In - SDO/DO/SO : Serial Data Out - nCS/CS/nSS/STE : Chip Select, Slave Transmit Enable(低電平有效;自master輸出)
3. 原理
在SPI中,數據是同步進行發送和接收的, 數據傳輸的時鍾基於來自Master的時鍾脈沖
最常用的時鍾設置基於時鍾極性(CPOL)和時鍾相位(CPHA), 它們決定了數據取樣的時鍾沿
- 時鍾極性(CPOL): 定義SPI串行時鍾的活動狀態; CPOL=0表示時鍾開始值是低電平, 所以第一階段(前沿)的時候會處在上升沿,第二階段(后沿)是下降沿; CPOL=1表示時鍾開始是高電平, 所以第一階段(前沿)就是下降沿; - 時鍾相位(CPHA): 定義相對於數據位的時鍾相位, 用於采樣數據; CPHA=0表明在前沿期間進行采樣; CPHA=1表明在后沿進行采樣
tip: 關於CPOL和CPHA, 請參考<詳解SPI中的極性CPOL和相位CPHA>
基於CPOL和CPHA的組合SPI有四種工作模式