SPI怎麼玩?搞懂時序,運用自如

1、什麼是SPI?

SPI是序列外設介面(Serial Peripheral Interface)的縮寫,是Motorola公司推出的一種同步序列介面技術,是一種

高速

全雙工

同步

的通訊匯流排。

2、SPI優點

支援全雙工通訊

通訊簡單

資料傳輸速率塊

SPI怎麼玩?搞懂時序,運用自如

3、缺點

沒有指定的流控制,沒有應答機制確認是否接收到資料,所以跟IIC匯流排協議比較在資料可靠性上有一定的缺陷。

4、特點

(1):高速、同步、全雙工、非差分、匯流排式

(2):主從機通訊模式

5、SPI電路連線

(1):SPI的通訊原理很簡單,它以主從方式工作,這種模式通常有一個主裝置和一個或多個從裝置,有

三線制

四線制

之分。訊號線包括

SDI

(序列資料輸入 Serial Digital IN)、

SDO

(序列資料輸出 Serial Digital OUT)、SCLK(時鐘)、

CS

(片選)。

(2):

SDO/MOSI

– 主裝置資料輸出,從裝置資料輸入

(3):

SDI/MISO

– 主裝置資料輸入,從裝置資料輸出

(4):

SCLK

– 時鐘訊號,由主裝置產生;

(5):

CS/SS

– 從裝置使能訊號,由主裝置控制。當有多個從裝置的時候,因為每個從裝置上都有一個片選引腳接入到主裝置機中,當主裝置和某個從裝置通訊時將需要將從裝置對應的片選引腳電平拉低(一般低有效)。

SPI怎麼玩?搞懂時序,運用自如

6、SPI通訊模式分析

SPI通訊有4種不同的模式,不同的從裝置在出廠時配置模式已經固定, 這是不能改變的,但通訊雙方裝置必須工作在同一模式下,所以可以對主裝置的SPI模式進行配置,透過

CPOL

(時鐘極性)和

CPHA

(時鐘相位)來控制主裝置的通訊模式。

具體模式具體如下:

:CPOL=0,CPHA=0

Mode1:CPOL=0,CPHA=1

Mode2:CPOL=1,CPHA=0

Mode3:CPOL=1,CPHA=1

模式

CPOL

CPHA

Mode0

0

0

Mode1

0

1

Mode2

1

0

Mode3

1

1

時鐘極性

CPOL

是用來配置SCLK電平的有效態的;

時鐘相位

CPHA

是用來配置資料取樣是發生在第幾個邊沿的。

CPOL=0

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

CPOL=1

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

CPHA=0

表示資料取樣是在第1個邊沿,資料傳送在第2個邊沿;

CPHA=1

表示資料取樣是在第2個邊沿,資料傳送在第1個邊沿;

SPI主模組和與之通訊的外設通訊時,兩者的時鐘相位和極性應該保持一致。

7、SPI 時序詳解

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怎麼玩?搞懂時序,運用自如

注意:SPI主裝置能夠控制時鐘訊號,因為SPI通訊並不像UART或者IIC通訊那樣有專門的通訊週期、通訊起始訊號、通訊結束訊號;所以SPI協議只能透過控制時鐘訊號線,在沒有資料交流的時候,時鐘線要麼是保持高電平,要麼是保持低電平。

例如:工作在模式0這種時序(CPOL=0,CPHA=0),如下:

SPI怎麼玩?搞懂時序,運用自如

我們來關注SCK的第一個時鐘週期,在時鐘的前沿取樣資料(上升沿,第一個時鐘沿),在時鐘的後沿輸出資料(下降沿,第二個時鐘沿)。首先來看主器件,主器件的輸出口(MOSI)輸出的資料bit1,在時鐘的前沿被從器件取樣,那主器件是在何時刻輸出bit1的呢?bit1的輸出時刻實際上在SCK訊號有效以前,比SCK的上升沿還要早半個時鐘週期。bit1的輸出時刻與SSEL訊號沒有關係。再來看從器件,主器件的輸入口MISO同樣是在時鐘的前沿取樣從器件輸出的bit1的,那從器件又是在何時刻輸出bit1的呢。從器件是在SSEL訊號有效後,立即輸出bit1,儘管此時SCK訊號還沒有起效。

從這張圖就可以很清楚的看出主從器件的bit1是怎樣輸出的。

SPI怎麼玩?搞懂時序,運用自如

END

版權歸原作者所有,如有侵權,請聯絡刪除。