前言:
接口的存在是使得芯片的設(shè)計達到 模塊化 ( modularity ),就像在第一篇文章所講到的,我們可以通過不同的IP組成一個功能完備的芯片(或稱之為 SoC )。
芯片的接口可以分為兩大類:片上通信接口與 片外通信接口 。以AMBA為代表的片上接口主要有靈活,效率高的優(yōu)勢,而片外接口的選擇則更加廣泛,根據(jù)不同的成本需求或是性能需求,能夠選擇的片外通信接口有IIC,SPI等。
今天討論的SPI接口是一種十分常用的片外通信接口,經(jīng)常作為芯片與片外存儲器(多為 serial nand flash )的通信接口。同時,硬件物理接口也是應(yīng)屆生面試時被提問最多的問題之一。有意在畢業(yè)后從事計算機硬件行業(yè)的朋友們可以在準(zhǔn)備應(yīng)聘的時候多多儲備這方面的知識。
SPI接口介紹
SPI是一種串行通信接口,全稱是 Serial Peripheral Interface 。它是一種 full-duplex (全雙工:支持發(fā)射端TX與接收端RX同時雙向傳輸數(shù)據(jù))接口。最基礎(chǔ)的SPI接口由四根線組成:
- SCLK(Serial Clock)
- SS(Slave Select或CS:Chip Select)
- MOSI(Mater Out Slave In)
- MISO(Mater In Slave Out)
如下圖。
SPI接口pin
1. SCLK:
首先是這根時鐘線,這也是將接口分為 Synchronous (同步接口)與 asynchronous (異步接口)的重要標(biāo)志。由于異步接口發(fā)送與采集數(shù)據(jù)沒有一個統(tǒng)一控制信號,所以沒法確保發(fā)送端與接收端有相同的收發(fā) data rate, 這給現(xiàn)在許多使用同步設(shè)計方法的芯片帶來的很多難題,所以這也是目前同步接口更受歡迎的原因。
異步通信接口
同步通信接口
不過當(dāng)然了,異步接口也有它的好處。可以在數(shù)據(jù)的起始位和終止位來添加兩個 flag (標(biāo)記符)來控制數(shù)據(jù)的接收,而且需要在使用前確保兩個模塊收發(fā)數(shù)據(jù)的速率是相同的。
所以要是有了這個由 Master (一般是一個 microcontroller )發(fā)出的CLK給slave,slave端就知道什么時候接受數(shù)據(jù)了,可以是上升沿也可以是下降沿,一般由datasheet決定。時鐘的頻率也取決于slave能夠正常工作的時鐘頻率范圍,一般在80MHz左右。
2.SS/CS:
因為SPI接口有時候會連有多個Slave(一般不超過三個),所以隨著slave的增加,master端就會需要越來越多的pin口。當(dāng)Master與slave處于斷鏈狀態(tài)時,SS/CS一般是置成高位的,這樣在master決定要給與哪個slave交互的時候就會把相應(yīng)的SS/CS置低,稱作 active low 。
3.MISO/MOSI:
剩下的幾個接口都是SPI的數(shù)據(jù)線,在每個時鐘周期內(nèi),master都會向slave發(fā)送1bit數(shù)據(jù),slave也可以同時向master發(fā)送1bit數(shù)據(jù)。所以說假設(shè)某個SPI接口正工作在50MHz的時鐘頻率,那么它的數(shù)據(jù)傳輸速率可以達到50Mbps/100Mbps(隨著數(shù)據(jù)線的增加SPI的數(shù)據(jù)傳輸速率還能增大更多)。相較于普通的IIC接口已經(jīng)高出不少了。這也是為什么對于許多傳感器來說會選擇SPI接口。
多位寬數(shù)據(jù)pin口的SPI通信接口
其實呢,SPI作為一個常用的外設(shè)接口,卻不存在一個標(biāo)準(zhǔn),因此沒有用于驗證給定產(chǎn)品的接口一致性的基準(zhǔn)。。所以SPI可以說是一個 * de facto standard ( 在實踐中被接受,但尚未經(jīng)過任何正式程序以達成共識的標(biāo)準(zhǔn),甚至可能沒有公開可用的文檔 )。* * *
A de facto standard :is one that has become accepted in practice but has not undergone any formal process to obtain consensus and may not even have publicly available documentation。
并且在SPI中沒有任何通信流程控制單元,SPI的硬件實現(xiàn)有時候就是靠一個簡單的 shift register ,時鐘這個唯一的控制信號的穩(wěn)定性至關(guān)重要。除此之外,如何確保數(shù)據(jù)的傳輸是否準(zhǔn)確也十分重要,一般只能通過軟件來檢測。在一些 real-time embedded system (實時嵌入式系統(tǒng))中,軟件必須以比數(shù)據(jù)到達更快的速度處理接收到的數(shù)據(jù)。通過接收端的FIFO Buffer,可以緩解此問題。SPI接口中沒有嵌入到錯誤檢測和校正功能中。如果需要,必須在軟件中實現(xiàn)錯誤檢測/糾正。
-
存儲器
+關(guān)注
關(guān)注
38文章
7521瀏覽量
164095 -
接口
+關(guān)注
關(guān)注
33文章
8673瀏覽量
151554 -
SPI
+關(guān)注
關(guān)注
17文章
1717瀏覽量
91858 -
通信接口
+關(guān)注
關(guān)注
3文章
240瀏覽量
31019
發(fā)布評論請先 登錄
相關(guān)推薦
評論