spi介面存儲器
『壹』 用8051的單片機的SPI口和存儲器通信,2個晶元之間的連線應該用什麼呢普通導線就可以嗎
單片機 存儲器
MOSI——MISO
MISO——MOSI
SCLK——SCLK
任意IO——CS
普通導線可以,試試看吧!
『貳』 SPI介面的介紹
SPI(Serial Peripheral Interface--串列外設介面)匯流排系統是一種同步串列外設介面,它可以使MCU與各種外圍設備以串列方式進行通信以交換信息。SPI有三個寄存器分別為:控制寄存器SPCR,狀態寄存器SPSR,數據寄存器SPDR。外圍設備包括FLASHRAM、網路控制器、LCD顯示驅動器、A/D轉換器和MCU等。SPI匯流排系統可直接與各個廠家生產的多種標准外圍器件直接介面,該介面一般使用4條線:串列時鍾線(SCLK)、主機輸入/從機輸出數據線MISO、主機輸出/從機輸入數據線MOSI和低電平有效的從機選擇線NSS(有的SPI介面晶元帶有中斷信號線INT、有的SPI介面晶元沒有主機輸出/從機輸入數據線MOSI)。
『叄』 spi介面功耗
第一部分:SPI介面介紹
SPI是一種串列通信介面,全稱是Serial Peripheral Interface。它是一種full-plex(全雙工:支持發射端TX與接收端RX同時雙向傳輸數據)介面。最基礎的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(非同步介面)的重要標志。由於非同步介面發送與採集數據沒有一個統一控制信號,所以沒法確保發送端與接收端有相同的收發data rate,這給現在許多使用同步設計方法的晶元帶來的很多難題,所以這也是目前同步介面更受歡迎的原因。
非同步通信介面
同步通信介面
不過當然了,非同步介面也有它的好處。可以在數據的起始位和終止位來添加兩個flag(標記符)來控制數據的接收,而且需要在使用前確保兩個模塊收發數據的速率是相同的。
所以要是有了這個由Master(一般是一個microcontroller)發出的CLK給slave,slave端就知道什麼時候接受數據了,可以是上升沿也可以是下降沿,一般有datasheet決定。時鍾的頻率也取決於slave能夠正常工作的時鍾頻率范圍,一般在80MHz左右。
2.SS/CS:
因為SPI介面有時候會連有多個Slave(一般不超過三個),所以隨著slave的增加,master端就會需要越來越多的pin口。當Master與slave處於斷鏈狀態時,SS/CS一般是置成高位的,這樣在master決定要給與哪個slave交互的時候就會把相應的SS/CS置低,稱作active low。
3.MISO/MOSI:
剩下的幾個介面都是SPI的數據線,在每個時鍾周期內,master都會向slave發送1bit數據,slave也可以同時向master發送1bit數據。所以說假設某個SPI介面正工作在50MHz的時鍾頻率,那麼它的數據傳輸速率可以達到50Mbps/100Mbps(隨著數據線的增加SPI的數據傳輸速率還能增大更多)。相較於普通的IIC介面已經高出不少了。這也是為什麼對於許多感測器來說會選擇SPI介面。
多數據位寬的數據傳輸pin口
其實呢,SPI作為一個常用的外設介面,卻不存在一個標准,因此沒有用於驗證給定產品的介面一致性的基準。。所以SPI可以說是一個de facto standard*(在實踐中被接受,但尚未經過任何正式程序以達成共識的標准,甚至可能沒有公開可用的文檔)。*
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的硬體實現有時候就是靠一個簡單的shift register,時鍾這個唯一的控制信號的穩定性至關重要。除此之外,如何確保數據的傳輸是否准確也十分重要,一般只能通過軟體來檢測。在一些real-time embedded system(實時嵌入式系統)中,軟體必須以比數據到達更快的速度處理接收到的數據。通過接收端的FIFO Buffer,可以緩解此問題。SPI介面中沒有嵌入到錯誤檢測和校正功能中。如果需要,必須在軟體中實現錯誤檢測/糾正。
第二部分:SPI介面在存儲器介面上的應用
除了SPI這種串列介面比較受存儲器設計廠商的歡迎,還有比如由samsung和toshiba設計的Toggle NAND Interface,也被稱為Asynchronous DDR NAND Interface(DDR:double data rate,之所以設計成Asynchronous是因為最開始傳統的存儲器用的就是非同步設計方法),雖然數據的傳輸速率得到了大大提升(使用DDR設計方法),但是確保數據准確性的設計卻較為復雜。
另外一種比較受歡迎的介面就是由Cypress設計的ONFI(Open NAND Flash Interface) NAND Interface,據說現在的4.1版本已經能夠達到1200MBps的傳輸速率了。而且使用的是NV-DDR3的1.2V電壓標准,使得功耗也得到了改進。以上兩種介面不是本篇文章討論的重點,就暫且介紹到這里,感興趣的朋友們可以在網上自行搜索更詳細的資料了解學習,我們還是回到SPI介面上來。
下面我們就來講講為什麼晶元常選用SPI作為與存儲器互聯的介面,也就是說SPI相較於其他介面有什麼優勢。
所使用的pin口較少,最少為4個
擁有較高的數據傳輸速率,前文提到過
功耗較低,相較於IIC沒有上拉電阻
設計簡單,成本低
同步介面(勉強也算一個)
最主要的一個原因也是目前業界使用的大部分存儲器(Serial NAND FLASH)使用的都是SPI介面,比如WINBOND家的,MICRON家的和GIGADEVICE家的,好像有種被綁架的感覺。。。
一般在SPI介面的數據端還會設計一個FIFO(數據寬度一般為8bit)來控制數據能夠穩定被接收到,因此,SPI由一個緩沖區組成,該緩沖區通過DMA(直接存儲器訪問)或CPU可定址緩沖區與系統介面。時鍾邏輯從內部系統時鍾獲得時鍾,並可針對所需的速度進行編程。引腳控制邏輯提供輸出驅動和延遲設置。可以有各種控制和狀態寄存器為器件提供可編程性。
除此之外在物理實現的過程中會在介面產生一個延遲(正常情況不會超過兩個時鍾周期)。所以如果在full-plex mode下,當slave已經將所需的數據都發送出去(發送的數據多少需要提前由master發出的指令決定),但是master還是會多產生幾個時鍾周期的SCLK和CS信號,這個時候就會採集到幾個沒有意義的數據線上的信號(signal low)。這個時候就需要系統軟體識別出多餘的信號然後將它們從有效數據中剔除出去。
目前除了最開始介紹的傳統四線數據線的SPI介面,為了進一步增大介面的數據傳輸速率,已經發展成了具有多個數據傳輸pin口的介面,比如說al,quad SPI。
多個數據pin口的SPI介面
結語
SPI作為一個晶元常見的片外介面,適用於許多目前業界流行的Serial存儲器設備,這些Serial NAND Flash一般作為儲存晶元boot code的存儲設備。有許多的優勢所在,而相比於並行介面,改進後的串列介面目前也有較高的數據吞吐率以及成本較低的優勢,無論是在工藝上還是功耗上。
文中涉及的參考來源:
Sanjeeb Mishra, Vijayakrishnan Rousseau, in System on Chip Interfaces for Low Power Design, 2016
Peter Barry, Patrick Crowley, in Modern Embedded Computing, 2012
發布於 6 月前著作權歸作者所有
贊同 1
『肆』 SPI快閃記憶體,什麼是SPI快閃記憶體
SPI串列快閃記憶體是一種小體積的低功耗快閃記憶體存儲器,它具有串列外設介面(SPI),並與業界標准SPI EEPROM器件保持引腳兼容。由於體積小,它可以減少ASIC控制器引腳數,降低封裝成本,縮小電路板空間,並降低系統成本。與並行快閃記憶體相比,SPI串列快閃記憶體功耗更低、連線更少,它是一種理想的高成本效益的數據傳輸解決方案。
產品種類日益豐富的SST 25
系列,為電池供電應用提供了超低功耗的串列快閃記憶體,並且包含有8引腳XFBGA Z-Scale™封裝,它能夠以更小的尺寸來提高產品的可靠性和性能