一、 spi的概述
SPI是串行外設接口(Serial Peripheral Interface)的縮寫,是一種高速的,全雙工,同步的通信總線,它是由Motorola公司推出,用來在微控制器和外圍設備芯片之間實現數據交換的低成本、易使用的接口。SPI總線為同步串行數據傳輸總線,用於單片機的外圍拓展。spi利用時鍾線對數據位進行同步,時鍾的上升沿或下降沿鎖存數據,來自主機或從機的數據在時鍾上升沿或下降沿同步,主機和從機可以同時傳輸數據。
二、 spi的配置
spi可以是三線式的也可以是四線式的
1、三線制半雙工SPI可以分時收發
SCLK串行時鍾
CS或SS外設片選或從機選擇
DIO數據線,輸入與輸出共用
2、四線制全雙工SPI可同時收發
MISO主機輸入/從機輸出
MOSI主機輸出/從機輸入
SCLK串行時鍾
CS/SS外設片選或從機選擇
來自主機的片選信號CS是從芯片是否被主芯片選中的控制信號,這通常式一個低電平有效,拉高時從機與SPI總線斷開連接,當使用多個從機時,主機需要為每個從機提供單獨的片選信號,產生時鍾信號的器件稱為主機
三、 spi的數據傳輸
通訊是通過數據交換完成的,這里先要知道SPI是串行通訊協議,也就是說數據是一位一位的傳輸的。這就是SCLK時鍾線存在的原因,由SCLK提供時鍾脈沖,SDI,SDO則基於此脈沖完成數據傳輸。數據輸出通過 SDO線,數據在時鍾上升沿或下降沿時改變,在緊接着的下降沿或上升沿被讀取。完成一位數據傳輸,輸入也使用同樣原理。因此,至少需要8次時鍾信號的改變(上沿和下沿為一次),才能完成8位數據的傳輸。(源自百度百科)
四、 時鍾極性和時鍾相位
在spi的概述中我們講spi利用時鍾線對數據位進行同步,時鍾的上升沿或下降沿鎖存數據,那么主機就需要根據從機的要求去選擇時鍾極性和時鍾相位。根據CPOL和CPHA位的選擇,有四種SPI模式可用。
CKPOL (Clock Polarity) (時鍾)極性:SPI空閑時的時鍾信號電平(1高電平,0低電平)
CKPHA (Clock Phase) (時鍾)相位:SPI在時鍾的第幾個邊沿采樣(1第二個邊沿開始,0第一個邊沿開始)


參考:SPI(SPI協議)_百度百科 (baidu.com)
