物理層
串行全雙工總線
需要四根線:SCLK(時鐘線),CS(片選線)、MOSI(主設備輸出、從設備輸入),MISO(主設備輸入,從設備輸出)。
片選信號
片選信號CS是用來選擇主機與哪一個從機進行通信的信號線。當從機的片選信號為1使能時,主機和誰通信,那根CS線就是高電平,其余CS線為低電平。這樣SPI至少需要四根線。
通信過程
先發高位,后發低位(與IIC相同),串口則是先發低位,后發高位。
在時鐘線上升沿或者下降沿的時候發送器向數據線發送數據,緊接著的下一個上升沿或者下降沿,接收器從數據線上接收數據(取決于四種模式)
四種模式
SPI總線有四種不同的工作模式,取決于極性(CPOL)和相位(CPHL)這兩個因素
CPOL表示SCLK空閑時的狀態
CPOL=0,空閑時SCLK為低電平
CPOL=1,空閑時SCLK為高電平
CPHA表示采樣時刻
CPHA=0,即表示輸出(out)端在上一個時鐘周期的后沿改變數據,而輸入(in)端在時鐘周期的前沿(或不久之后)捕獲數據。輸出端保持數據有效直到當前時鐘周期的尾部邊緣。對于第一個時鐘周期來說,第一位的數據必須在時鐘前沿之前出現在MOSI線上。也就是一個CPHA=0的周期包括半個時鐘空閑和半個時鐘置位的周期。
CPHA=1,即表示輸出(out)端在當前時鐘周期的前沿改變數據,而輸入(in)端在時鐘周期的后沿(或不久之后)捕獲數據。輸出端保持數據有效直到下一個時鐘周期的前沿。對于最后一個時鐘周期來說,從機設備在片選信號消失之前保持MISO信號線有效。也就是一個CHPA=1的周期包括半個時鐘置位和半個時鐘空閑的周期。