串行外圍設備接口(Serial Peripheral Interface,SPI)是由 Motorola 公司開發的,用來在微控制器和外圍設備芯片之間提供一個低成本、易使用的接口(SPI 有時候也被稱為4線接口)。這種接口可以用來連接存儲器、AD/DA轉換器、實時時鐘日歷、LCD驅動器、傳感器、音頻芯片,甚至其他處理器。目前支持 SPI 的元件很多,并且還在不斷增加。
這里需要提一下,由于專利在電子行業是很關鍵的,因此部分廠商可能會將 SPI 通訊協議更名以規避高昂的專利費,但其硬件處理方式是一樣的,只是換了一個名稱而已(或者在協議上做了一些修改),例如 TI 的 SSI(Synchronous Serial Interface)通訊協議。與標準的串行端口不同,SPI 是一個同步協議接口,所有的傳輸都參照一個共同的時鐘,這個同步時鐘信號由主機(處理器)產生。接收數據的設備(從設備)使用時鐘對串行比特流的接收進行同步化。可能會有許多芯片連到主機的同一個 SPI 接口上,這是主機通過觸發從設備的芯片的片選輸入引腳來選擇接收數據的從設備,沒有被選中的外設將不會參與 SPI 傳輸。SPI 主要使用4個信號:主機輸出/從機輸入(MOSI)、主機輸入/從機輸出(MISO)、串行時鐘(SCLK或SCK)和外設片選(nCS)。有些處理器有 SPI 接口專用的片選,稱為從機選擇(nSS)。MOSI 信號由主機產生,從機接收。在有些芯片上,MOSI 只被簡單地標為串行輸入(SI),或者串行數據輸入(SDI)。MISO 信號由從機產生,不過還是在主機的控制下產生的。在一些芯片上,MISO 有時被稱為串行輸出(SO),或者串行數據輸出(SDO)。外設片選信號通常只是由主機的備用 I/O 引腳產生。SPI 接口在內部硬件實際上是兩個簡單的移位寄存器,在主器件的移位脈沖下,數據按位傳輸,高位在前,低位在后,為全雙工通信,數據傳輸速度總體來說比 I2C 總線要快,速度可達到 Mbps 級別。
根據時鐘極性和時鐘相位的不同,SPI 有四個工作模式。時鐘極性有高、低兩極:
1、時鐘低電平時,空閑時時鐘(SCK)處于低電平,傳輸時跳轉到高電平;2、時鐘極性為高電平時,空閑時時鐘處于高電平,傳輸時跳轉到低電平。
時鐘相位有兩個:相位0 和 相位1。對于時鐘相位0,如果時鐘極性是低電平,MOSI 和 MISO 輸出在時鐘(SCK)的上升沿有效(如圖1所示)。
圖1. 時鐘極性為低電平且時鐘相位0時的SPI時序圖
如果時鐘極性為高電平,對于時鐘相位0,這些輸出在 SCK 的下降沿有效(如圖2所示)。
圖2. 時鐘極性為高電平且時鐘相位0時的SPI時序圖
對于時鐘相位1,情況則相反。此時如果時鐘極性是低電平,MOSI 和 MISO 輸出在時鐘(SCK)的下降沿有效(如圖3所示)。
圖3. 時鐘極性為低電平且時鐘相位1時的SPI時序圖
如果時鐘極性是高電平,這些輸出在 SCK 的上升沿有效(如圖4所示)。
圖4. 時鐘極性為高電平且時鐘相位1時的SPI時序圖
工程中一般會用 CPOL 代表時鐘極性,用 CPHA 代表時鐘相位,在 S5PV210 的 datasheet 中,我們可以看到相應的 SPI 接口配置寄存器(如圖5所示)。
圖5. S5PV210的SPI配置寄存器CH_CFGn
也就是由兩個位(CPOL 和 CPHA)共同決定 SPI 的工作模式,所以有 2 * 2 = 4 種工作模式。其中,時鐘極性(CPOL)決定的是時鐘空閑時電平的高低狀態(0:空閑時低電平,1:空閑時高電平);時鐘相位(CPHA)決定的是數據在時鐘的上升沿或下降沿鎖存/采樣(0:第一個邊沿開始,1:第二個邊沿開始)。
最后,SPI 接口的一個缺點:沒有指定的流控制,沒有應答機制確認是否接收到數據。
-
驅動器
+關注
關注
53文章
8255瀏覽量
146481 -
寄存器
+關注
關注
31文章
5355瀏覽量
120514 -
時鐘
+關注
關注
11文章
1735瀏覽量
131536 -
SPI
+關注
關注
17文章
1707瀏覽量
91675
原文標題:淺談串行外圍設備接口(Serial Peripheral Interface)SPI總線
文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論