愛伊米

關於SPI,你想知道的都在這兒!

失效分析實驗室 半導體工程師 2022-01-12 09:45

SPI在嵌入式系統中非常普遍,無論是晶片上的系統處理器(如ARM、MIC或Power PC等高階32位處理器),還是微控制器(如AVR、PIC等),通常包括能夠以主從模式執行的SPI控制器。

系統內可程式設計AVR控制器,可以使用SPI介面程式設計;基於晶片或FPGA的設計,有時使用SPI進行通訊。當我們想要與外圍裝置快速傳輸資料,並對實時性有要求時,SPI是目前常用的一種技術。

除SPI外,有許多序列介面,如Morse電報、RS232、 USB、火線、乙太網等,對於許多設計來說,每個序列介面都有其優缺點,如何選擇取決於所需的資料速率、空間可用性和噪聲考慮等因素。

SPI即序列外圍介面,用來取代並行介面,這樣設計時就不必繞著PCB佈線並行匯流排了。它提供裝置之間的高速資料傳輸,摩托羅拉是第一家將SPI命名為電路技術的公司。該技術應用於上世紀70年代末的首個基於68000的MCU,用於連線周邊裝置,後來被業內其他公司採用。介面的簡單性和速度,使通訊或傳輸資料變得容易,並使其成為流行的通訊協議。

SPI是一個簡單的4線序列通訊介面,使控制器和外設之間能夠相互通訊。在SPI中,資料每個時鐘週期1 bit速率輸入/輸出,資料在主裝置和一個或多個從裝置之間短距離、高速傳輸。它基於一個8位移位暫存器將資料移出到一個輸出引腳,並從另一個輸入引腳將資料移入。

SPI的另一個特性是,它沒有傳輸匯流排所有權的概念,即改變主節點,也沒有從節點地址。SPI是一種更簡單的協議,因此工作頻率可以高於10MHz(比TWI的頻率高)。

SPI得到廣泛使用的一些特性是:

全雙工通訊;

吞吐量高於TWI;

傳輸時不限於8位字;

簡單的硬體介面;

可隨意選擇訊息大小、內容和目的;

通常符合低功耗要求;

從機使用主機產生的時鐘,不需要精確的振盪器;

由於電路較少,功耗要求比TWI低。

然而,將TWI序列介面與SPI進行比較是不公平的。它們有各自的應用領域,這取決於系統的需求。

TWI有如下特性:

IC封裝上的引腳數比SPI少;

存在硬體流控制;

它有一個正式的標準,不像SPI;

它在通訊之前給出從機地址。

為什麼SPI在PCB下應用最多?

關於SPI,你想知道的都在這兒!

儘管SPI主要是為主機處理器和外設之間的通訊而開發的,但是透過SPI連線兩個處理器也是可能的。SPI匯流排通常只用在PCB上;在PCB領域之外使用SPI有很多阻礙。

首先,SPI被設計用來在不同的IC晶片之間以非常高的速度傳輸資料;由於高速要求,匯流排的長度不能太長,否則會因為電抗增加而無法使用。

當然,在PCB外使用低速SPI是有可能的,但這不是很實際。外圍裝置可以是實時時鐘、轉換器(如ADC和DAC)、記憶體模組(如EEPROM和FLASH)、感測器(如溫度感測器和壓力感測器)或其他裝置(如訊號混頻器、電位器、LCD控制器、UART、can控制器、USB控制器和放大器)。

SPI協議

SPI協議包括以下4條訊號線:

MOSI (Master Out Slave In)

MOSI訊號由Master產生,接收端是Slave;

MISO(Master In Slave Out)

Slave產生MISO訊號,接收方為Master;

SCLK/SCK

SCLK由master產生,用於在master和slave之間同步資料傳輸;

SS/CS

SS訊號由master產生,用於選擇單個slave。

有時序列資料輸入[SDI]被用於MOSI,序列資料輸出[SDO]用於MISO。

關於SPI,你想知道的都在這兒!

一個主控制器可以與多個SPI外設通訊,一般有兩種設定方法:

級聯slave配置;

並行slave配置。

級聯slave配置

級聯slave是將所有的時鐘線(SCLK)和片選(CS)連線在一起。資料透過微控制器傳輸到每個外設,最後再返回到微控制器。前一個slave的資料輸出連線到下一個slave的資料輸入,從而形成一個更寬的移位暫存器。因此,級聯slave被視為一個更大的裝置,他們連線相同的晶片選擇訊號。

這意味著,master只需要產生一條SS線,而不用為每個slave都產生一條單獨的SS線。

關於SPI,你想知道的都在這兒!

並行slave配置

這是典型的SPI匯流排配置,包含一個master和多個slave。在這個獨立或並行的從屬配置中:

所有時鐘線(SCLK)都連線在一起;

所有MISO資料線都連線在一起;

所有MOSI資料線都連線在一起。

關於SPI,你想知道的都在這兒!

SPI通訊

SPI通訊一直是由master發起的。首先master產生時鐘,時鐘頻率小於或等於slave支援的最大頻率;隨後master透過產生時鐘訊號(SCLK)來控制資料傳輸,並透過將特定slave的晶片選擇(SS)線拉低來進行通訊。總線上的slave如果沒有被master選中,將會忽略來自主機的輸入時鐘和MOSI訊號,並且絕對不能驅動MISO;這意味著master每次只選擇一個slave。

關於SPI,你想知道的都在這兒!

四個引腳的使用取決於裝置。例如,某些裝置不需要輸入(例如ADC), SDI引腳可能不存在,或者有些裝置不需要輸出(例如LCD控制器),SDO引腳可能不存在。如果一個微控制器只需要與1個SPI外設通訊,那麼該slave上的CS引腳可以接地(CS低電平有效)。對於多個從裝置,每個從裝置都需要一個獨立的CS訊號。

SPI中三態輸出的意義是什麼?

在數位電子學中,三態邏輯允許輸出埠除了0和1邏輯電平外,還採用高阻抗狀態。這允許多個電路共享一個輸出線,大多數外設都有三態輸出,當裝置未被選中時,輸出會進入高阻抗狀態(斷開)。沒有三態輸出的裝置不能與其他裝置共享SPI匯流排。

SPI裝置有時使用另一條訊號線向主機CPU傳送中斷訊號。使用中斷訊號例子有溫度感測器的溫度警報,實時時鐘晶片發出的警報,以及手機聲音編解碼器監測到的耳機插孔插入等。

鍾極性和相位

另一對引數稱為時鐘極性(CPOL)和時鐘相位(CPHA)決定了資料驅動和取樣的時鐘訊號的邊緣。除了設定時鐘頻率,master還必須配置時鐘極性(CPOL)和相位(CPHA)。由於時鐘作為資料通訊的同步,在這個CPOL和CPHA的基礎上,有四種可能的模式可以在SPI協議中使用。

關於SPI,你想知道的都在這兒!

SPI應用

全雙工能力使得SPI對於主/從應用場景下十分高效,透過全雙工模式可以為數字音訊、數字訊號處理等應用實現高效、快速的資料流。

SPI用於與各種外設通訊,例如:

感測器

溫度,壓力,ADC,觸控式螢幕,影片遊戲控制器;

控制裝置

音訊編解碼、數字電位器、DAC;

相機鏡頭

佳能EF鏡頭支架;

通訊

乙太網,USB, USART,CAN手持影片遊戲;

儲存器

Flash和EEPROM;

實時時鐘;

LCD,有時甚至用於管理影象資料;

任何MMC或SD卡(包括SDIO變體);

對於高效能系統,FPGA有時使用SPI作為主機的從機介面,使用SPI作為感測器的主機介面,或者用於flash memory的匯入介面。

關於SPI,你想知道的都在這兒!

半導體工程師

半導體經驗分享,半導體成果交流,半導體資訊釋出。半導體行業動態,半導體從業者職業規劃,晶片工程師成長曆程。