SPI及其介面介紹

2021-08-10 15:30:05 字數 4651 閱讀 8871

一、spi介面簡介

spi(serial peripheral inte***ce--序列外設介面)匯流排系統是一種同步序列外設介面,它可以使mcu與各種外圍裝置以序列方式進行通訊以交換資訊。spi有三個暫存器分別為:控制暫存器spcr,狀態暫存器spsr,資料暫存器spdr。

外圍裝置flashram、網路控制器、lcd顯示驅動器、a/d轉換器(如圖一所示)和mcu等。

圖一、adc中的spi

二、spi介面

乙個典型的spi模組的核心部件是乙個8位的移位暫存器和乙個8位的資料暫存器spidr。通過spi進行資料傳送的裝置有主spi和從spi之分,即spi傳送在乙個主spi和乙個從spi之間進行。圖二給出了兩個spi模組相互連線、進行spi傳送的示意圖,圖左邊是乙個主spi,圖右邊為乙個從spi。

圖二、典型spi示意圖

在an-877應用筆記中,對spi的介面定義與典型spi介面有所不同,an-877使用一根線sdio代替了典型spi的miso和mosi,ss介面用csb代替。圖三和圖四分別是雙線模式下單器件控制(主從一對一)和雙線模式下多器件控制(主從一對多)。

圖三:主從一對一控制

圖四:主從一對多控制

不管是典型spi還是三引腳spi,其基本原理都是一樣的,都是主spi通過sdio(或miso與mosi)將資料傳遞到從spi中,通過從spi控制功能模組。一般來說adc中的spi指的是模組中的從spi極其介面,主spi可以使用mcu或者微控制器實現。主spi不屬於器件的部分,可以不用考慮,操作起來比較簡單。

從spi由指令移位暫存器、指令資料快取器、暫存器控制邏輯、暫存器構成,如圖五所示。

主spi傳送過來的序列資料先依次進入指令移位暫存器,指令移位暫存器再依次將資料傳送到指令快取器。暫存器控制邏輯根據msb優先或lsb優先控制指令移位暫存器的移位以及控制指令快取器的輸出,將其傳送到相應位址的暫存器當中。暫存器包括三種型別:

配置暫存器、傳送暫存器和程式設計暫存器。暫存器存入相應資料之後,先根據配置暫存器配置序列介面,程式設計暫存器再根據暫存器功能表中的定義輸出相對應的控制訊號,最後根據傳送暫存器指令統一輸出控制訊號。

圖五: spi介面的功能模組

三、spi協議(根據an-877應用筆記)

spi介面有主機跟從機之分,主從機可以是一對一,也可以是一對多,但是原理都一樣。主從機之間一般由3個引腳組成:序列時鐘引腳(sclk)、序列資料輸入/輸出引腳(sdio)、片選引腳(csb)。

1、引腳

資料輸入/輸出(sdio):該引腳用作資料的輸入/輸出,用作輸入還是用作輸出具體取決於所傳送的指令(讀或寫)以及時序幀中的相對位置(指令週期或資料週期)。在讀或寫的第乙個階段,該引腳用作輸入,將資訊傳遞到內部狀態機。

如果該命令為讀命令,狀態機把該引腳(sdio)變為輸出,然後該引腳將資料回傳給外部控制器。如果該命令為寫命令,該引腳始終用作輸入。

序列時鐘(sclk):sclk由外部控制器提供,時鐘頻率最高為25mhz。所有資料的輸入輸出都是與sclk同步的。

輸入資料在sclk的上公升沿有效,輸出資料在sclk的下降沿有效。

片選訊號(csb):csb是低電平有效的控制訊號,用於選通讀寫週期。當csb為低電平時,spi才會處理sdio上的資料資訊。

當csb為高電平時,spi忽略sdio上的資料資訊。此外,csb還有一種特殊作用。csb可以在位元組邊界處停止在高電平,為外部的時序處理提供更多的時間。

(見圖2)

圖六:帶有停止時間的msb優先指令和資料

2、格式

當內部狀態機處在空閒狀態且第一次在sclk的上公升沿檢測到csb為低電平時,確認為幀的開始。傳輸的第乙個階段為指令階段,指令由16位組成,之後是資料階段,資料由乙個或多個8位組成,長度不定。

(1)指令週期

指令週期為傳輸的前16位,如下圖所示,指令週期劃分為若干位段。

a、讀/寫

在msb優先(參見「位序」部分)時,資料流中的第一位是讀/寫指示位。

若該位為高電平,則表示指令為讀取指令。當指令週期(前16位)完成時,內部狀態機使用所提供的資訊解碼要讀取的內部位址。隨後sdio由輸入變為輸出,由字長定義的適當數量的字從器件移位出來(參見「字長」部分)。

一旦字長所要求的所有資料均已移位輸出,狀態機便返回空閒模式,等待下乙個指令週期。此時應拉高csb,表示一次處理結束。

若資料流中的第一位為低電平,則表示指令為寫入指令。指令週期完成時,內部狀態機使用所提供的資訊解碼要寫入的內部位址。指令之後的所有資料均將移入sdio引腳並送往目標位址(當需要寫入的資料為多個時,位址將自動遞增或遞減)。

一旦傳輸完所有資料,狀態機便返回空閒模式,等待下乙個指令週期。此時應拉高csb,表示一次結束。

無論是讀取模式還是寫入模式,處理過程都會持續到字長要求時或csb線路拉高(在非流處理模式的位元組邊界處(參見「字長」部分)除外)時為止。如果到達儲存器的末端(0x00或0xff),則會發生翻轉,下乙個處理的位址為0x00(位址遞增時)或0xff(位址遞減時)。

b、字長

w1和w0表示要讀取或者寫入的資料位元組數。具體設定和操作如下表:

表1:w1、w0的設定和操作

((w1:w0)+1)所表示的值是要傳輸的位元組數。如果要傳輸的位元組數小於等於三個(00,01,10),則csb可以在位元組邊界停止在高電平,而停止在非位元組邊界會終止通訊週期。

如果這兩位為11,則為流處理模式。在此模式下,只要拉高csb就會終止通訊週期,任何未完成的位元組均會丟失,已完成的位元組會得到正確的處理。

c、位址位

其餘13位為所傳送資料或要讀取資料的起始位址位。如果需要處理的資料不止乙個位元組,則會使用順序定址,從指定的位址開始,按照設定的模式遞增或遞減。

(2)資料週期

指令週期之後是資料週期。要處理的資料量由字長(w1、w0)指定。所有的資料都是8位的,若狀態機檢測到資料不完整,就會復位到空閒狀態,等待下乙個幀的開始。

(3)位序

傳送和接收資料有兩種模式:msb優先和lsb優先(參見控制暫存器0x00)。上電時預設為msb優先。

可以通過對控制暫存器程式設計改變位序模式。在msb優先模式下,位序為從最高位到最低位。在lsb優先模式下,位序為從最低位到最高位。

四、spi中暫存器的設計

spi埠是一種由外部輸入訊號來配置暫存器的機制,因此需要指令移位暫存器和指令快取器對輸入進來的資料進行暫存。此外對器件進行程式設計,需要定義乙個結構化的暫存器空間,此結構可細分為多個位址,資料傳輸的指令階段中的位址即指向這些位址。每個位址可定址乙個8位的位元組,每一位均有其特定的含義和作用,

具體暫存器定義見an-877的表14或ad9254的表15。

1、配置暫存器(位址00)

配置暫存器位於位址00,該暫存器用來配置序列介面,包含有2個有效位,位於高半位元組當中,低半位元組未連線,留做備用。其功能是使晶元軟復位並配置在已知狀態,而與當前的資料移位方向無關,這將確保在發生故障時器件能夠給予積極處理。

2、傳送暫存器(位址ff)

傳送暫存器即提供軟體傳輸訊號。

一般暫存器都需要採用主從觸發器進行緩衝,緩衝可以增強系統的多器件同步能力,並有助於寫入對儲存器其他部分寫入的值可能有依賴關係的配置。根據需要的不同,有些暫存器需要這樣的緩衝,例如程式設計暫存器。有些暫存器則永遠不會進行緩衝,例如配置暫存器和傳送暫存器,因為出於程式和控制目的,這些暫存器要求及時獲得響應。

無論緩衝與否,spi埠都要負責將資訊放入暫存器中,不過對於採用緩衝的暫存器,必須啟動傳輸以將資料移出。

3、程式設計暫存器

本報告中所用到的程式設計暫存器的位址包括(08、09、10、14、16、18)。當程式設計暫存器按照表3-3輸入相對應的值後,應產生一系列的控制訊號,如表3-4所示。這些控制訊號產生後被鎖存,並在軟體傳輸的命令下達後,才會被一起傳輸到後面的模組。

4、控制暫存器

控制暫存器由兩個暫存器組組成:主暫存器和從暫存器。主暫存器暫存輸入資料,當乙個傳輸訊號(0xff暫存器的第0位)為高電平時,主暫存器的內容將全部傳到相應的從暫存器,隨後內部電路會自動把該位置為0。

從暫存器直接用來控制晶元內部其他電路的工作特性。但也有一些暫存器不採用這種主從模式,當需要向這些暫存器寫入資料時,資料不經過主暫存器,而直接寫入從暫存器,如0x00,0xff,0x04,0x05。其中0x00的bit4和bit3應該始終為1。

本報告保留的控制暫存器有(0x00、0x18、0x2a、0x2c、0xff)一共29個暫存器。(細節請參考ad9254和an-877),其中控制暫存器0x00的高四位和低四位應該是映象關係(寫入資料時要保證此映象關係),位7和位0恒為0,位4和位3恒為1。

總之,反向來看,例如要實現軟復位功能,從ad9254表15所示的功能來看(如圖七所示),位址為0x00的暫存器的第5位為1時便可以實現軟復位的功能。所以要實現軟復位功能,只需要通過主spi向位址為0x00的暫存器,輸入***的資料即可。

圖七:暫存器功能設定

五、綜述-spi心得

1、spi是通過配置暫存器來控制電路

2、spi的核心是暫存器,通過spi控制電路的實質就是通過暫存器控制電路

3、電路中的spi是主從spi的一部分(一般是從spi及其介面),主spi一般可以由微控制器或者是mcu構建,其作用是向從spi寫資料。

4、要實現電路的某乙個功能,首先定義暫存器,然後通過主spi向該暫存器寫入要達到某功能的資料即可。

六、報告不足與後期計畫

1、對spi進行簡單應用的設計。

2、對spi進行時序分析

3、對已出電路進行模組分析,以及實際電路分析

4、對暫存器、指令如何控制電路功能進行簡單了解

1、an-877應用筆記:

2、ad9254使用說明書:

3、spi及其介面設計:

SPI介面實驗

一 完成內容 使用硬體spi介面與74hc595進行連線,控制74hc595驅動8個led流水燈顯示。關鍵 解釋 s0pccr 0x52 設定spi時鐘分頻 s0pcr 0x30 設定spi介面模式,mstr 1,cpol 1,cpha 0,lsbf 0 while 0 s0psr 0x80 等待s...

SPI介面H 265編碼方案

spi介面h.265編碼設計方案 1.設計要求 一般編碼器採用乙太網輸出,由於乙太網的網路傳輸特性不恆定,碼流傳輸不均勻。北京網視雲通科技 根據客戶下面要求 1 輸入為外置行場同步的逐行數字 資料8位,ycbycr排列,類似bt656格式 2 碼流輸出使用spi和串列埠,輸入影象大小可通過串列埠配置...

SPI 4介面的時鐘方案

面對當今複雜的 fpga 設計,時鐘是至關重要的,工程的成敗往往取決 於它。而對於 spi 0 介面設計來說,由於輸入時鐘高於 311 mhz,並且是雙沿 取樣的,所以時鐘設計顯得更加重要。對於 xilinx virtex 5 器件來說,內部提 供了全域性時鐘和區域時鐘兩大時鐘網路,我們分別利用這兩...