C6748_SPI(1) - SPI工作方式簡介


1.SPI模塊通用知識(Serial Peripheal interface)

  SPI(setial peripheral interface)串行外圍接口設備,是一種高速的同步串行輸入輸出接口,其總線占用的接口線少,通信效率高,並且支持大部分處理器芯片。若要擴展EEPROM,LCD顯示器,網絡控制器,DAC等,則會用到SPI。與SCI(setial communication interface)串行通信接口不同,SCI、是一種異步通信接口UART。

  SCI主要用於串行通信,如RS422,RS485,RS232;SPI主要用於擴展外設,如AD、DA、FRAM、DSP等。

  SPI是利用4根信號線進行通信的串行接口協議,包括主/從兩種模式。4個接口信號為:串行數據輸入(MISO,主設備輸入、從設備輸出)、串行數據輸出(MOSI,主設備輸出、從設備輸入)、移位時鍾(SCK)、低電平有效的從設備使能信號(cs)。SPI最大的特點是由主設備時鍾信號的出現與否來確定主/從設備間的通信。一旦檢測到主設備的時鍾信號,數據開始傳輸

  SPI接口通信以主從模式進行,通過CS片選信號控制從機芯片是否被選中。當CS低電平選中從機,主從機開始通信,采用串行通信協議,如主機M1給從機S1發送數據時,數據在時鍾脈沖的上升沿或者下降沿通過M1的MISO引腳發送,在緊接着的下降沿上升沿S1的MOSI引腳接收。

  SCK只能由主設備控制,從設備不能控制時鍾信號線,在點對點的通信中,SPI接口不需要尋址操作,且為全雙工通信,因此,更加簡單高效。

  其內部工作機制如下圖:

 

2.基本原理與結構

  SPI是一個同步協議接口,全雙工通信,所有的傳輸都參照一個共同的時鍾,這個同步時鍾信號由主機產生。接收數據的外設使用時鍾對串行比特流的接收進行同步化。其傳輸速度可達幾Mb/s。

  SPI主要使用4個信號:MISO(主機輸入/從機輸出)、MOSI(主機輸出/從機輸入)、 SCLK(串行時鍾)、(外設片選或從機選擇)。

  MISO信號由從機在主機的控制下產生。信號用於禁止或使能外設的收發功能。為高電平時,禁止外設接收和發送數據;為低電平時,允許外設接收和發送數據。圖1所示是微處理器通過SPI與外設連接的示意圖。

  主機和從機都有一個串行移位寄存器,主機通過向它的SPI串行寄存器寫入一個字節來發起一次傳輸。寄存器通過MOSI信號線將字節傳送給從機,從機也將自己的移位寄存器中的內容通過MISO信號線返回給主機(如圖2所示)。這樣,兩個移位寄存器中的內容就被交換。外設的寫操作和讀操作是同步完成的。

 

圖2 SPI的數據傳輸

  如果只進行寫操作,主機只需忽略接收到的字節;反之,若主機要讀取從機的一個字節,就必須發送一個空字節來引發從機的傳輸

  當主機發送一個連續的數據流時,有些外設能夠進行多字節傳輸。多數具有SPI接口的存儲芯片就以這種方式工作。在這種傳輸方式下,從機的片選端必須在整個傳輸過程中保持低電平。此時,一次傳輸可能會涉及到成千上萬字節的信息,而不必在每個字節的數據發送的前后都去檢測其起始位和結束位,這正是同步傳輸方式優於異步傳輸方式的原因所在

  雖然SPI有以上優點,然而在圖像傳輸中卻很少用到,原因主要是其抗干擾能力差。SPI采用的是單端非平衡的傳輸方式,即傳輸的數據位的電壓電平是以公共地作為參考的。在這種傳輸方式中,對於已進入信號中的干擾是無法消除和減弱的。而信號在傳輸過程中總會受到干擾,而且距離越長干擾越嚴重,以致於信號傳輸產生錯誤。在這種條件下,信號傳輸就變得毫無意義了。另外,由於單端非平衡傳輸方式以公共地作為參考點,地線作為信號回流線,因此也存在信號電流。當傳輸線兩端的系統之間存在交流電位差時,這個電位差將直接竄到信號中,形成噪聲干擾。所以,為了解決抗干擾問題,通常采用平衡傳輸(balanced transmission)方式,這里采用比較常見的RS-422。

  圖1所示是由一個主機對接一個從機進行全雙工通信的系統構成的方式。在該系統中,由於主機和從機的角色是固定不變的,並且只有一個從機,因此,可以將主機的SS端接高電平,將從機的SS端固定接地。

圖1 全雙工主機/從機連接方法

3.數據傳輸

  SPI主設各負責產生系統時鍾,並決定整個SPI網絡的通信速率。所有的SPI設各都采用相同的接口方式,可以通過調整處理器內部寄存器改變時鍾的極性和相位。由於SPI器件並不一定遵循同一標准,比如EEPROM、DAC、ADC、實時時鍾及溫度傳感器等器件的SPI接口的時序都有所不同,為了能夠滿足不同的接口需要,采用時鍾的極性和相位可配就能夠調整SPi的通信時序。

  SPI設各傳輸數據過程中總是先發送接收字節數據,每個時鍾周期接收器收發器左移1位數據。對於小於16位的數據在發送之前必須左對齊,如果接收的數據小於16位則采用軟件將無效的數據位屏蔽,如圖1所示。當主從機進行全雙工通信時,即兩個SPI接口通過接收或發送數據,8個時鍾脈沖完成一次SPI時序(每個時鍾移一位)。

  SPI接口有主和從兩種操作模式,通過MASTER/SLAVE位(SPICTL.2)選擇操作模式以及SPICLK信號的來源,如圖2所示。

 

圖1 SPI通信數據格式

圖2 SPI主控制器/從控制器的連接

4.SPI應用方式

  若干個具備SPI接口的單片機和若干片兼容SPI接口的外圍芯片,可以在軟件的控制下,構成多種簡單或者復雜的應用系統,例如以下3種。

(1)一個主機和多個從器件的通信系統。

  如圖2所示,各個從器件是單片機的外圍擴展芯片,它們的片選端SS分別獨占單片機的一條通用I/O引腳,由單片機分時選通它們建立通信。這樣省去了單片機在通信線路上發送地址碼的麻煩,但是占用了單片機的引腳資源。當外設器件只有一個時,可以不必選通而直接將SS端接地即可。

圖2 一個主機擴展多個外圍器件

(2)幾個單片機互相連接構成多主機通信系統。

  圖3所示為3個既可以當做主機也可以當做從機的單片機組成的系統。

圖3 多主機通信系統連接方法

(3)主機、從機和從器件共同組成的應用系統。

   圖4所示為一個主機、一個從機和多片外設芯片組成的應用系統。這些外設芯片有的只接收來自單片機信息,有的只向單片機提供信息,還有的既接收也發送信息。

圖4主機、從機和從器件互連

 5.SPI通信模式

  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處於電平,數據發送是在第1個邊沿,也就是 SCLK由低電平到高電平的跳變,所以數據采樣是在下降沿,數據發送是在上升沿。

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

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

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM