談談SPI (Serial Peripheral Interface,串行外設接口)

什麼是SPI

SPI (Serial Peripheral Interface,串行外設接口)是Motorola 公司推出的一

種同步串行接口技術,是一種高速的,全雙工,同步的通信總線;

它以主從方式工作,這種模式通常有一個主設備和一個或多個從設備,需要至少4根線,事實上3根也可以(單向傳輸時)。

(1)SDI – SerialData In,串行數據輸入;

(2)SDO – SerialDataOut,串行數據輸出;

(3)SCLK – Serial Clock,時鐘信號,由主設備產生;

(4)CS – Chip Select,從設備使能信號,由主設備控制。

談談SPI (Serial Peripheral Interface,串行外設接口)

兩種模式的圖示

在點對點的通信中,SPI接口不需要進行尋址操作,且為全雙工通信,顯得簡單高效。

在多個從器件的系統中,每個從器件需要獨立的使能信號,硬件上比I2C系統要稍微複雜一些。

談談SPI (Serial Peripheral Interface,串行外設接口)

使用指南和簡單應用

使用到了SPI的4根信號線和電源便可

談談SPI (Serial Peripheral Interface,串行外設接口)

這裡寫圖片描述

SPI有四種操作模式——模式0、模式1、模式2和模式3,它們的區別是定義了在時鐘脈衝的哪條邊沿轉換(toggles)輸出信號,哪條邊沿採樣輸入信號,還有時鐘脈衝的穩定電平值(就是時鐘信號無效時是高還是低)。每種模式由一對參數刻畫,它們稱為時鐘極(clock polarity)CPOL與時鐘期(clock phase)CPHA。

Mode0:CPOL=0,CPHA=0

Mode1:CPOL=0,CPHA=1

Mode2:CPOL=1,CPHA=0

Mode3:CPOL=1,CPHA=1

談談SPI (Serial Peripheral Interface,串行外設接口)

這裡寫圖片描述

時鐘極性CPOL是用來配置SCLK的電平出於哪種狀態時是空閒態或者有效態,時鐘相位CPHA是用來配置數據採樣是在第幾個邊沿:

CPOL=0,表示當SCLK=0時處於空閒態,所以有效狀態就是SCLK處於高電平時

CPOL=1,表示當SCLK=1時處於空閒態,所以有效狀態就是SCLK處於低電平時

CPHA=0,表示數據採樣是在第1個邊沿,數據發送在第2個邊沿

CPHA=1,表示數據採樣是在第2個邊沿,數據發送在第1個邊沿

談談SPI (Serial Peripheral Interface,串行外設接口)

這裡寫圖片描述


談談SPI (Serial Peripheral Interface,串行外設接口)

這裡寫圖片描述

例如:

CPOL=0,CPHA=0:此時空閒態時,SCLK處於低電平,數據採樣是在第1個邊沿,也就是SCLK由低電平到高電平的跳變,所以數據採樣是在上升沿,數據發送是在下降沿。

CPOL=0,CPHA=1:此時空閒態時,SCLK處於低電平,數據發送是在第1個邊沿,也就是SCLK由低電平到高電平的跳變,所以數據採樣是在下降沿,數據發送是在上升沿。

CPOL=1,CPHA=0:此時空閒態時,SCLK處於高電平,數據採集是在第1個邊沿,也就是SCLK由高電平到低電平的跳變,所以數據採集是在下降沿,數據發送是在上升沿。

CPOL=1,CPHA=1:此時空閒態時,SCLK處於高電平,數據發送是在第1個邊沿,也就是SCLK由高電平到低電平的跳變,所以數據採集是在上升沿,數據發送是在下降沿。

需要注意的是:我們的主設備能夠控制時鐘,因為我們的SPI通信並不像UART或者IIC通信那樣有專門的通信週期,有專門的通信起始信號,有專門的通信結束信號;所以我們的SPI協議能夠通過控制時鐘信號線,當沒有數據交流的時候我們的時鐘線要麼是保持高電平要麼是保持低電平。

————————————————

原文鏈接:https://blog.csdn.net/weixin_42124889/java/article/details/80230487


分享到:


相關文章: