800彩票网

工業路由器
您當前位置: 首頁 >> 服務與支持 >> 產品百科 >> 工業路由器

SPI 接口配置

發布時間:2021-03-23瀏覽:1781

SPI(Serial Peripheral Interface,串行外設接口)是Motorola公司提出的一種同步串行數據傳輸標準是一種高速的,全雙工,同步的通信總線,在很多器件中被廣泛應用。


SPI相關縮寫

 

SS: Slave Select,選中從設備,片選。

CKPOL (Clock Polarity) = CPOL = POL = Polarity = (時鐘)極性 

CKPHA (Clock Phase)   = CPHA = PHA = Phase = (時鐘)相位

SCK = SCLK = SCL = SPI的時鐘(Serial Clock)

Edge = 邊沿,即時鐘電平變化的時刻,即上升沿(rising edge)或者下降沿(falling edge)。


對于一個時鐘周期內,有兩個edge,分別稱為:

Leading edge = 前一個邊沿 = 第一個邊沿,對于開始電壓是1,那么就是1變成0的時候,對于開始電壓是0,那么就是0變成1的時候;

Trailing edge = 后一個邊沿 = 第二個邊沿,對于開始電壓是1,那么就是0變成1的時候(即在第一次1變成0之后,才可能有后面的0變成1),對于開始電壓是0,那么就是1變成0的時候;

 

接口

SPI接口經常被稱為4線串行總線,以主/從方式工作,數據傳輸過程由主機初始化

如圖1所示,其使用的4條信號線分別為:

1) SCLK:串行時鐘,用來同步數據傳輸,由主機輸出;

2) MOSI:主機輸出從機輸入(Master Output Slaver Input)數據線;

3) MISO:主機輸入從機輸出數據線;

4) SS:片選線,低電平有效,由主機輸出

在SPI總線上,某一時刻可以出現多個從機,但只能存在一個主機,主機通過片選線來確定要通信的從機。這就要求從機的MISO口具有三態特性,使得該口線在器件未被選通時表現為高阻抗。

 

SPI由于接口相對簡單(只需要4根線),用途算是比較廣泛,主要應用在 EEPROM,FLASH,實時時鐘,AD轉換器,還有數字信號處理器和數字信號解碼器之間。

即一個SPI的Master通過SPI與一個從設備,即上述的那些Flash,ADC等的Slaver SPI進行通訊。而主從設備之間通過SPI進行通訊,首先要保證兩者之間時鐘SCLK要一致,互相要商量好了,要匹配,否則,就沒法正常通訊了,即保證時序上的一致才可正常訊。而這里的SPI中的時鐘和相位,指的就是SCLk時鐘的特性,即保證主從設備兩者的時鐘的特性一致了,以保證兩者可以正常實現SPI通訊。


數據傳輸

在一個SPI時鐘周期內,會完成如下操作:

1) 主機通過MOSI線發送1位數據,從機通過該線讀取這1位數據;

2) 從機通過MISO線發送1位數據,主機通過該線讀取這1位數據。

這是通過移位來寄存器實現的。如圖2所示,主機和從機各有一個移位寄存器,且二者連接成環。隨著時鐘脈沖,數據按照從高位到低位的方式依次移出主機寄存器和從機寄存器,并且依次移入從機寄存器和主機寄存器。當寄存器中的內容全部移出時,相當于完成了兩個寄存器內容的交換。


時鐘極性和時鐘相位

在SPI操作中,最重要的兩項設置就是時鐘極性(CPOL或UCCKPL)和時鐘相位(CPHA或UCCKPH)。時鐘極性設置時鐘空閑時的電平,時鐘相位設置讀取數據和發送數據的時鐘沿。

主機和從機的發送數據是同時完成的,兩者的接收數據也是同時完成的。所以為了保證主從機正確通信,應使得它們的SPI具有相同的時鐘極性和時鐘相位。

 

CPOL極性

 

先說什么是SCLK時鐘的空閑時刻,其就是當SCLK在發送8個bit比特數據之前和之后的狀態,與此對應的,SCLK在發送數據的時候,就是正常的工作的時候,有效active的時刻了。

先說英文,其精簡解釋為:Clock Polarity = IDLE state of SCK。

再用中文詳解:

SPI的CPOL,表示當SCLK空閑idle的時候,其電平的值是低電平0還是高電平1:

CPOL=0,時鐘空閑idle時候的電平是低電平,所以當SCLK有效的時候,就是高電平,就是所謂的active-high;

CPOL=1,時鐘空閑idle時候的電平是高電平,所以當SCLK有效的時候,就是低電平,就是所謂的active-low;

CPHA相位

首先說明一點,capture strobe = latch = read = sample,都是表示數據采樣,數據有效的時刻。

相位,對應著數據采樣是在第幾個邊沿(edge),是第一個邊沿還是第二個邊沿,0對應著第一個邊沿,1對應著第二個邊沿。

CPOL=0:

對于CPHA=0,idle時候的是低電平,第一個邊沿就是從低變到高,所以是上升沿;

對于CPHA=1,idle時候的是低電平,第二個邊沿就是從高變到低,所以是下降沿;

CPOL=1:

對于CPHA=0,idle時候的是高電平,第一個邊沿就是從高變到低,所以是下降沿;

對于CPHA=1,idle時候的是高電平,第二個邊沿就是從低變到高,所以是上升沿;

用圖文形式表示,更加容易看懂:

 

CKP和CKE

CKP和CKE是Microchip的PIC系列芯片中的說法。

(1)CKP是Clock Polarity Select,就是極性=CPOL:

CKP,雖然名字和CPOL不一樣,但是都是指時鐘極性的選擇,定義也一樣

CKP: Clock Polarity Select bit

1 = Idle state for clock (CK) is a high level

0 = Idle state for clock (CK) is a low level

所以不多解釋。

(2)CKE是Clock Edge Select,就是相位=CPHA:

CKE: SPI Clock Edge Select bit

1 = Transmit occurs on transition from active to Idle clock state

0 = Transmit occurs on transition from Idle to active clock state

意思是:

1 =(數據)傳輸發生在時鐘從有效狀態轉到空閑狀態的那一時刻

0 =(數據)傳輸發生在時鐘從空閑狀態轉到有效狀態的那一時刻

 

其中,數據傳輸的時刻,即上圖中標出的“數據transmit傳輸的時刻”。

CKE的定義也跟CPHA相同。

所以,CKP和CKE所對應的取值的含義為:

When CKP = 0:

CKE=0 => Data transmitted on rising edge of SCK(idle時候是低電平,從空閑到有效,就是從低電平到高電平,所以是上升沿)

CKE=1 => Data transmitted on falling edge of SCK(idle時候是低電平,從有效到空閑,就是從高電平到低電平,所以是下降沿)

When CKP = 1:

CKE=0 => Data transmitted on falling edge of SCK(idle時候是高電平,從空閑到有效,就是從高電平到低電平,所以是下降沿)

CKE=1 => Data transmitted on rising edge of SCK(idle時候是高電平,從有效到空閑,就是從低電平到高電平,所以是上升沿)


舉例來說,分別選取MSP430控制器和OLED驅動SH1101A為主從機,圖3和圖4為它們的SPI時序。由圖4可知,SH1101A的SPI時鐘空閑時為高電平,并且在后時鐘沿接收數據(后時鐘沿在數據的中間部位)則MSP430控制器SPI的設置應與此保持一致。從圖3中可以看出,要使得時鐘在空閑時為高電平,應將UCCKPL置1;要使得在后時鐘沿接收數據,應將UCCKPH清零。

下面再列出其他一些地方找到的,常見的SPI的四種模式的時序圖,供參考:

 

 

 

 

 

如何看懂和記憶CPOL和CPHA

 

所以,關于在其他地方介紹的,看似多么復雜難懂難記憶的CPOL和CPHA,其實經過上面解釋,就肯容易看懂了:

去看時序圖,如果時鐘SCLK的起始電平是0,那么CPOL=0,如果是1,那么CPOL=1。

然后看數據采樣時刻,即時序圖數據線上的數據矩形區域的中間所對應的位置,對應到上面SCLK時鐘的位置,對應著是第一個邊沿或是第二個邊沿,即CPHA是0或1。(對應的是上升沿還是下降沿,要根據對應的CPOL的值,才能確定)。

即:

(1)如何判斷CPOL:SCLK的空閑時候電壓是0還是1,決定了CPOL是0還是1;

(2)如何判斷CPHA:而數據采樣時刻對應著的SCLK的電平,是第一個邊沿還是第二個邊沿,對應著CPHA為0還是1。

 

軟件中如何設置SPI的極性和相位


SPI分主設備和從設備,兩者通過SPI協議通訊。

設置SPI的模式,是從設備的模式,決定了主設備的模式。

所以要先去搞懂從設備的SPI是何種模式,然后再將主設備的SPI的模式,設置和從設備相同的模式,即可正常通訊。

對于從設備的SPI是什么模式,有兩種:

(1)固定的,設備硬件決定的。

SPI從設備,具體是什么模式,相關的datasheet中會有描述,需要自己去datasheet中找到相關的描述,即:

關于SPI從設備,在空閑的時候,是高電平還是低電平,即決定了CPOL是0還是1;

然后再找到關于設備是在上升沿還是下降沿去采樣數據,這樣就是,在定了CPOL的值的前提下,對應著可以推算出CPHA是0還是1了。

舉例1:

CC2500 - Low-Cost Low-Power 2.4 GHz RF Transceiver的datasheet中SPI的時序圖是:

從圖中可以看到,最開始的SCLK和結束時候的SCLK,即空閑時刻的SCLK,是低電平,推導出CPOL=0,然后可以看到數據采樣的時候,即數據最中間的那一點,對應的是SCLK的第一個邊沿,所以CPHA=0(此時對應的是上升沿)。


舉例2:

SSD1289 - 240 RGB x 320 TFT LCD Controller Driver的datasheet中提到:

“SDI is shifted into 8-bit shift register on everyrising edge of SCK in the order of data bit 7, data bit 6 …… data bit 0.”

意思是,數據是在上升沿采樣,所以可以斷定是CPOL=0,CPHA=0,或者CPOL=1,CPHA=1的模式,但是至于是哪種模式。

按理來說,接下來應該再去確定SCLK空閑時候是高電平還是低電平,用以確定CPOL是0還是1,但是datasheet中沒有提到這點。

所以,此處,目前不太確定,是兩種模式都支持,還是需要額外找證據卻確定CPOL是0還是1.


 

(2)可配置的,由軟件自己設定

從設備也是一個SPI控制器,4種模式都支持,此時只要自己設置為某種模式即可。

然后知道了從設備的模式后,再去將SPI主設備的模式,設置為和從設備模式一樣,即可。


 

對于如何配置SPI的CPOL和CPHA的話,不多細說,多數都是直接去寫對應的SPI控制器中對應寄存器中的CPOL和CPHA那兩位,寫0或寫1即可。

舉例:

此處遇到的C8051F347中的SPI就是一個SPI的controller控制器,即支持軟件配置CPOL和CPHA的值,四種模式都支持,此處C8051F347作為SPI從設備,設置了CPOL=1,CPHA=0的模式,因此,此處對應主芯片Blackfin F537中的SPI控制器,作為Master主設備,其SPI的模式也要設置為CPOL=1,CPHA=0。


優缺點

SPI接口具有如下優點:

1) 支持全雙工操作;

2) 操作簡單;

3) 數據傳輸速率較高。

同時,它也具有如下缺點:

1) 需要占用主機較多的口線(每個從機都需要一根片選線);

2) 只支持單個主機。

上一篇:SPI協議詳解 下一篇:GRE協議介紹
免費樣機申請 樣機免費試用,提前溝通確保愛陸通產品深度契合貴司業務需求
  • *您的姓名:
  • *手機號碼:
  • *公司名稱:
  • 您的職位:
  • 您的郵箱:
  • 您的QQ:
相關產品
產品百科
隱私政策網站地圖 Copyright ? 2015-2022 廈門愛陸通通信科技有限公司 All Rights Reserved.  
撥打電話