SPI匯流排(一) 基本原理篇

2021-08-21 08:04:58 字數 2649 閱讀 7457

本文**

1、什麼是spi?

spi是序列外設介面(serial peripheral inte***ce)的縮寫。是 motorola 公司推出的一 

種同步序列接**術,是一種高速的,全雙工,同步的通訊匯流排。

2、spi優點

支援全雙工通訊

通訊簡單

資料傳輸速率塊

3、缺點

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

4、特點

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

2):主從機通訊模式

5、協議通訊時序詳解

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

個從裝置,需要至少4根線,事實上3根也可以(單向傳輸時)。也是所有基於spi的裝置共 

有的,它們是sdi(資料輸入)、sdo(資料輸出)、sclk(時鐘)、cs(片選)。

(1)sdo/mosi – 主裝置資料輸出,從裝置資料輸入;

(2)sdi/miso – 主裝置資料輸入,從裝置資料輸出;

(3)sclk – 時鐘訊號,由主裝置產生;

(4)cs/ss – 其中cs是控制晶元是否被選中的,也就是說只有片選訊號為預先規定的使能訊號時(高電位或低電位),對此晶元的操作才有效,這就允許在同一匯流排上連線多個spi裝置成為可能。需要注意的是,在具體的應用中,當一條spi匯流排上連線有多個裝置時,spi本身的cs有可能被其他的gpio腳代替,即每個裝置的cs腳被連線到處理器端不同的gpio,通過操作不同的gpio口來控制具體的需要操作的spi裝置,減少各個spi裝置間的干擾。

spi是序列通訊協議,也就是說資料是一位一位從msb或者lsb開始傳輸的,這就是sck時鐘線存在的原因,由sck提供時鐘脈衝,miso、mosi則基於此脈衝完成資料傳輸。 spi支援4-32bits的序列資料傳輸,支援msb和lsb,每次資料傳輸時當從裝置的大小端發生變化時需要重新設定spi master的大小端。

2):需要說明的是,我們spi通訊有4種不同的模式,不同的從裝置可能在出廠是就是配 

置為某種模式,這是不能改變的;但我們的通訊雙方必須是工作在同一模式下,所以我們 

可以對我們的主裝置的spi模式進行配置,通過cpol(時鐘極性)和cpha(時鐘相位)來 

控制我們主裝置的通訊模式,具體如下:

mode0:cpol=0,cpha=0

mode1:cpol=0,cpha=1

mode2:cpol=1,cpha=0

mode3:cpol=1,cpha=1

時鐘極性cpol是用來配置sclk的電平出於哪種狀態時是空閒態或者有效態,時鐘相位cpha 

是用來配置資料取樣是在第幾個邊沿:

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

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

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

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

例如:cpol=0,cpha=0:此時空閒態時,sclk處於低電平,資料取樣是在第1個邊沿,也就是 

sclk由低電平到高電平的跳變,所以資料取樣是在上公升沿,資料傳送是在下降沿。

cpol=0,cpha=1:此時空閒態時,sclk處於低電平,資料傳送是在第2個邊沿,也就是 

sclk由低電平到高電平的跳變,所以資料取樣是在下降沿,資料傳送是在上公升沿。

cpol=1,cpha=0:此時空閒態時,sclk處於高電平,資料採集是在第1個邊沿,也就是 

sclk由高電平到低電平的跳變,所以資料採集是在下降沿,資料傳送是在上公升沿。

cpol=1,cpha=1:此時空閒態時,sclk處於高電平,資料傳送是在第2個邊沿,也就是 

sclk由高電平到低電平的跳變,所以資料採集是在上公升沿,資料傳送是在下降沿。

需要注意的是:我們的主裝置能夠控制時鐘,因為我們的spi通訊並不像uart或者iic通訊 

那樣有專門的通訊週期,有專門的通訊起始訊號,有專門的通訊結束訊號;所以我們的 

spi協議能夠通過控制時鐘訊號線,當沒有資料交流的時候我們的時鐘線要麼是

保持高電平要麼是保持低電平。

6、內部工作機制

 sspsr 是 spi 裝置內部的移位暫存器(shift register). 它的主要作用是根據 spi 

時鐘訊號狀態, 往 sspbuf 裡移入或者移出資料, 每次移動的資料大小由 bus-width 以 

及 channel-width 所決定.

android 電池(一) 鋰電池基本原理篇

電池充電最重要的就是這三步 第一步 判斷電壓 3v 要先進行預充電,0.05c 電流 第二步 判斷 3v 電壓 4.2v 恆流充電 0.2c 1c 電流 第三步 判斷電壓 4.2v,恆壓充電 電壓為 4.20v,電流隨電壓的增加而減少,直到充滿。一 鋰電池 簡述鋰電池以及工作原理 鋰離子電池自199...

android 電池(一) 鋰電池基本原理篇

android 電池關機充電 androidboot.mode charger 平台資訊 核心 linux2.6 linux3.0 系統 android android4.0 平台 s5pv310 samsungexynos 4210 歡迎指正錯誤,共同學習 共同進步!電池在電子產品中所佔的地位就不...

android 電池(一) 鋰電池基本原理篇

android 電池關機充電 androidboot.mode charger 平台資訊 核心 linux2.6 linux3.0 系統 android android4.0 平台 s5pv310 samsungexynos 4210 電池在電子產品中所佔的地位就不用說了。不過電池在物理介面上比較簡...