SPI接口

SPI接口

SPI(Serial Peripheral Interface--串列外設接口)匯流排系統是一種同步串列外設接口,它可以使MCU與各種外圍設備以串列方式進行通信以交換信息。SPI匯流排可直接與各個廠家生產的多種標準外圍器件相連,包括FLASHRAM、網路控制器、LCD顯示驅動器、A/D轉換器和MCU等。該接口一般使用4條線:串列時鐘線(SCLK)、主機輸入/從機輸出數據線MISO、主機輸出/從機輸入數據線MOSI和低電平有效的從機選擇線NSS。

套用

SPI接口 SPI接口

SPI接口的全稱是"Serial Peripheral Interface",意為串列外圍接口,是Motorola首先在其MC68HCXX系列處理器上定義的。SPI接口主要套用在EEPROM、FLASH、實時時鐘、AD轉換器,還有數位訊號處理器和數位訊號解碼器之間。

SPI接口是在CPU和外圍低速器件之間進行同步串列數據傳輸,在主器件的移位脈衝下,數據按位傳輸,高位在前,低位在後,為全雙工通信,數據傳輸速度總體來說比I2C匯流排要快,速度可達到幾Mbps。

特點

信號線少,協定簡單,相對數據速率高。

接口信號

多個從器件硬體連線示意圖 多個從器件硬體連線示意圖

(1)MOSI – 主器件數據輸出,從器件數據輸入

(2)MISO – 主器件數據輸入,從器件數據輸出

(3)SCLK –時鐘信號,由主器件產生,最大為fPCLK/2,從模式頻率最大為fCPU/2

(4)NSS – 從器件使能信號,由主器件控制,有的IC會標註為CS(Chip select)

在點對點的通信中,SPI接口不需要進行定址操作,且為全雙工通信,顯得簡單高效。在多個從器件的系統中,每個從器件需要獨立的使能信號,硬體上比I2C系統要稍微複雜一些。

SPI接口在內部硬體實際上是兩個簡單的移位暫存器,傳輸的數據為8位,在主器件產生的從器件使能信號和移位脈衝下,按位傳輸,高位在前,低位在後。如下圖所示,在SCLK的上升沿上數據改變,同時一位數據被存入移位暫存器。

原理圖

最後,SPI接口的一個缺點:沒有指定的流控制,沒有應答機制確認是否接收到數據。

接口內部硬體連線圖 接口內部硬體連線圖

工作模式

通訊時序圖 通訊時序圖

SPI有四種工作模式,各個工作模式的不同在於SCLK不同, 具體工作由CPOL,CPHA決定

CPOL: (Clock Polarity),時鐘極性

當CPOL為0時,時鐘空閒時電平為低;

當CPOL為1時,時鐘空閒時電平為高;

CPHA:(Clock Phase),時鐘相位

當CPHA為0時,時鐘周期的上升沿採集數據,時鐘周期的下降沿輸出數據;

當CPHA為1時,時鐘周期的下降沿採集數據,時鐘周期的上升沿輸出數據;

CPOL和CPHA,分別都可以是0或時1,對應的四種組合就是:

四種工作模式現如下:

四種工作模式 四種工作模式

熱門詞條

聯絡我們