失效分析實驗室 半導體工程師 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匯流排通常只用在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外設通訊,一般有兩種設定方法:
級聯slave配置;
並行slave配置。
級聯slave配置
級聯slave是將所有的時鐘線(SCLK)和片選(CS)連線在一起。資料透過微控制器傳輸到每個外設,最後再返回到微控制器。前一個slave的資料輸出連線到下一個slave的資料輸入,從而形成一個更寬的移位暫存器。因此,級聯slave被視為一個更大的裝置,他們連線相同的晶片選擇訊號。
這意味著,master只需要產生一條SS線,而不用為每個slave都產生一條單獨的SS線。
並行slave配置
這是典型的SPI匯流排配置,包含一個master和多個slave。在這個獨立或並行的從屬配置中:
所有時鐘線(SCLK)都連線在一起;
所有MISO資料線都連線在一起;
所有MOSI資料線都連線在一起。
SPI通訊
SPI通訊一直是由master發起的。首先master產生時鐘,時鐘頻率小於或等於slave支援的最大頻率;隨後master透過產生時鐘訊號(SCLK)來控制資料傳輸,並透過將特定slave的晶片選擇(SS)線拉低來進行通訊。總線上的slave如果沒有被master選中,將會忽略來自主機的輸入時鐘和MOSI訊號,並且絕對不能驅動MISO;這意味著master每次只選擇一個slave。
四個引腳的使用取決於裝置。例如,某些裝置不需要輸入(例如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用於與各種外設通訊,例如:
感測器
溫度,壓力,ADC,觸控式螢幕,影片遊戲控制器;
控制裝置
音訊編解碼、數字電位器、DAC;
相機鏡頭
佳能EF鏡頭支架;
通訊
乙太網,USB, USART,CAN手持影片遊戲;
儲存器
Flash和EEPROM;
實時時鐘;
LCD,有時甚至用於管理影象資料;
任何MMC或SD卡(包括SDIO變體);
對於高效能系統,FPGA有時使用SPI作為主機的從機介面,使用SPI作為感測器的主機介面,或者用於flash memory的匯入介面。
半導體工程師
半導體經驗分享,半導體成果交流,半導體資訊釋出。半導體行業動態,半導體從業者職業規劃,晶片工程師成長曆程。