應用
SPI接口的全稱是"SerialPeripheralInterface",意為串行外圍接口,是Motorola首先在其MC68HCXX系列處理器上定義的。SPI接口主要應用在EEPROM、FLASH、實時時鐘、AD轉換器,還有數字信号處理器和數字信号解碼器之間。
SPI接口是在CPU和外圍低速器件之間進行同步串行數據傳輸,在主器件的移位脈沖下,數據按位傳輸,高位在前,低位在後,為全雙工通信,數據傳輸速度總體來說比I2C總線要快,速度可達到幾Mbps。
特點
SPI一共有11位有用信号,每位信号差分成兩個信号用來提高傳輸抗幹擾性,在物理連接上用标準25芯D型插頭座(DB25)傳輸,因此連線多且複雜,傳輸距離短,容易出現故障。而ASI(異步串行接口)用串行傳輸,隻需要一根同軸電纜線,連線簡單,傳輸距離長。
接口信号
(1)MOSI–主器件數據輸出,從器件數據輸入
(2)MISO–主器件數據輸入,從器件數據輸出
(3)SCLK–時鐘信号,由主器件産生,最大為fPCLK/2,從模式頻率最大為fCPU/2
(4)NSS–從器件使能信号,由主器件控制,有的IC會标注為CS(Chipselect)
在點對點的通信中,SPI接口不需要進行尋址操作,且為全雙工通信,顯得簡單高效。在多個從器件的系統中,每個從器件需要獨立的使能信号,硬件上比I2C系統要稍微複雜一些。
SPI接口在内部硬件實際上是兩個簡單的移位寄存器,傳輸的數據為8位,在主器件産生的從器件使能信号和移位脈沖下,按位傳輸,高位在前,低位在後。如下圖所示,在SCLK的上升沿上數據改變,同時一位數據被存入移位寄存器。
原理圖
最後,SPI接口的一個缺點:沒有指定的流控制,沒有應答機制确認是否接收到數據。
工作模式
SPI有四種工作模式,各個工作模式的不同在與SCLK不同,具體工作由CPOL,CPHA決定
CPOL:(ClockPolarity),時鐘極性
當CPOL為0時,時鐘空閑idle時候的電平是低電平;
當CPOL為1時,時鐘空閑idle時候的電平是高電平;
CPHA:(ClockPhase),時鐘相位
當CPHA為0時,時鐘周期的前一邊緣采集數據;
當CPHA為1時,時鐘周期的後一邊緣采集數據;
CPOL和CPHA,分别都可以是0或時1,對應的四種組合就是:
四種工作模式下的SCLK表現如下:
紅線表示采集數據,下面的一個例子是S3C2440上面SPI控制器的總線範例: