SPI通訊協議介面概述
一、 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第一個邊沿開始)