SPI(Serial Peripheral Interface--串行外設接口)總線系統是一種同步串行外設接口,它可以使MCU與各種外圍設備以串行方式進行通信以交換信息。SPI總線可直接與各個廠家生產的多種標准外圍器件相連,包括FLASHRAM、網絡控制器、LCD顯示驅動器、A/D轉換器和MCU等。
SPI接口是在CPU和外圍低速器件之間進行同步串行數據傳輸,在主器件的移位脈沖下,數據按位傳輸,高位在前,低位在后,為全雙工通信,數據傳輸速度總體來說比I2C總線要快,速度可達到幾Mbps。
1.接口信號
該接口一般使用4條線:串行時鍾線(SCLK)、主機輸入/從機輸出數據線MISO、主機輸出/從機輸入數據線MOSI和低電平有效的從機選擇線NS。
圖1:主從機結構
2.工作模式
SPI在SCLK控制下通過移位寄存器,每個sclk時鍾周期傳輸1bit的數據,其具體數據傳輸模式可查看SPI總線協議及SPI時序圖詳解這篇文章。
有四種工作模式,各個工作模式的不同在於SCLK不同, 具體工作由時鍾極性CPOL(Clock Polarity),時鍾相位CPHA(Clock Phase)決定
CPOL:決定時鍾空閑時的電平為高或低;
1 = 時鍾低電平時有效,空閑時為高
0 = 時鍾高電平時有效,空閑時為低
CPHA:定義SPI數據傳輸的兩種基本模式
0=時鍾周期的上升沿采集數據,時鍾周期的下降沿輸出數據;
1=時鍾周期的下降沿采集數據,時鍾周期的上升沿輸出數據;
時序圖:
