套用
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,對應的四種組合就是:
四種工作模式現如下: