本文主要是關于SPI FLASH與NOR FLASH的相關介紹,并著重對SPI FLASH與NOR FLASH的區別進行了詳細的區分。
SPI FLASH
首先它是個Flash,Flash是什么東西就不多說了(非易失性存儲介質),分為NOR和NAND兩種(NOR和NAND的區別本篇不做介紹)。SPI一種通信接口。那么嚴格的來說SPI Flash是一種使用SPI通信的Flash,即,可能指NOR也可能是NAND。但現在大部分情況默認下人們說的SPI Flash指的是SPI NorFlash。早期Norflash的接口是parallel的形式,即把數據線和地址線并排與IC的管腳連接。但是后來發現不同容量的Norflash不能硬件上兼容(數據線和地址線的數量不一樣),并且封裝比較大,占用了較大的PCB板位置,所以后來逐漸被SPI(串行接口)Norflash所取代。同時不同容量的SPI Norflash管腳也兼容封裝也更小。,至于現在很多人說起NOR flash直接都以SPI flash來代稱。
NorFlash根據數據傳輸的位數可以分為并行(Parallel,即地址線和數據線直接和處理器相連)NorFlash和串行(SPI,即通過SPI接口和處理器相連)NorFlash;區別主要就是:1、SPI NorFlash每次傳輸一bit位的數據,parallel連接的NorFlash每次傳輸多個bit位的數據(有x8和x16bit兩種); 2、SPI NorFlash比parallel便宜,接口簡單點,但速度慢。
NandFlash是地址數據線復用的方式,接口標準統一(x8bit和x16bit),所以不同容量再兼容性上基本沒什么問題。但是目前對產品的需求越來越小型化以及成本要求也越來越高,所以SPI NandFlash漸漸成為主流,并且采用SPI NANDFlash方案,主控也可以不需要傳統NAND控制器,只需要有SPI接口接口操作訪問,從而降低成本。另外SPI NandFlash封裝比傳統的封裝也小很多,故節省了PCB板的空間。
今天主要說下SPI NorFlash。
二、有毛用啊
節省成本,減小封裝,存儲數據。
三、怎么用啊
怎么用說白了對于Flash就是讀寫擦,也就是實現flash的驅動。先簡單了解下spi flash的物理連接。
之前介紹SPI的時候說過,SPI接口目前的使用是多種方式(具體指的是物理連線有幾種方式),Dual SPI、Qual SPI和標準的SPI接口(這種方式肯定不會出現在連接外設是SPI Flash上,這玩意沒必要全雙工),對于SPI Flash來說,主要就是Dual和Qual這兩種方式。具體項目具體看了,理論上在CLK一定的情況下, 線數越多訪問速度也越快。我們項目采用的Dual SPI方式,即兩線。
當前涉及到具體的SPI flash芯片類型了,所以必須也得參考flash的datasheet手冊了。我們以W25Q64JVSSIQ為例。
這是基本信息的介紹,然后看下具體IO的定義
這個是WSON封裝的管腳定義,其他詳細信息參考datasheet。
硬件驅動的話也是和芯片強相關的,因為讀寫擦都是和硬件時序相關的,所以必須得參考硬件datasheet手冊。
上面的datasheet都詳細說明了每個操作的時序周期發送的命令。上圖中,第一列是指令名稱,第二列是指令編碼,第三列及以后的指令功能與對應的指令有關。帶括號的字節內容為flash向主機返回的字節數據,不帶括號則是主機向flash發送字節數據。
A0~A23:flash內部存儲器地址;MID0~MID7:制造商ID;ID0~ID15:flash芯片ID;D0~D7:flash內部存儲的數據;dummy:指任意數據。
比如獲取deviceID:
表示該命令由這四個字節組成,其中dummy意為任意編碼,即這三個字節必須得發數據,但這些數據是任意的,上圖命令列表中帶括號的字節數據表示由FLASH返回給主機的響應,可以看到deviceID命令的第5個字節為從機返回的響應,(ID7~ID0),即返回設備的ID號。
代碼如下:
uint32_t Get_Flash_DeviceID(void)
{
uint8_t deviceID= 0x00;
spiflashReset();
spi_write( 0xAB);
spi_write( Dummy);
spi_write( Dummy);
spi_write( Dummy);
deviceID = spi_write( Dummy);
spi_write( Dummy);
spiflashSet() ;
return deviceID;
}
NOR FLASH
NOR Flash是一種非易失閃存技術,是Intel在1988年創建。
是現在市場上兩種主要的非易失閃存技術之一。Intel于1988年首先開發出NOR Flash 技術,徹底改變了原先由EPROM(Erasable Programmable Read-Only-Memory電可編程序只讀存儲器)和EEPROM(電可擦只讀存儲器Electrically Erasable Programmable Read - Only Memory)一統天下的局面。緊接著,1989年,東芝公司發表了NAND Flash 結構,強調降低每比特的成本,有更高的性能,并且像磁盤一樣可以通過接口輕松升級。NOR Flash 的特點是芯片內執行(XIP ,eXecute In Place),這樣應用程序可以直接在Flash閃存內運行,不必再把代碼讀到系統RAM中。NOR 的傳輸效率很高,在1~4MB的小容量時具有很高的成本效益,但是很低的寫入和擦除速度大大影響到它的性能。NAND的結構能提供極高的單元密度,可以達到高存儲密度,并且寫入和擦除的速度也很快。應用NAND的困難在于Flash的管理需要特殊的系統接口。通常讀取NOR的速度比NAND稍快一些,而NAND的寫入速度比NOR快很多,在設計中應該考慮這些情況。——《ARM嵌入式Linux系統開發從入門到精通》 李亞峰 歐文盛 等編著 清華大學出版社 P52 注釋 API Key
性能比較
flash閃存是非易失存儲器,可以對稱為塊的存儲器單元塊進行擦寫和再編程。任何flash器件的寫入操作只能在空或已擦除的單元內進行,所以大多數情況下,在進行寫入操作之前必須先執行擦除。NAND器件執行擦除操作是十分簡單的,而NOR則要求在進行擦除前先要將目標塊內所有的位都寫為0。
由于擦除NOR器件時是以64~128KB的塊進行的,執行一個寫入/擦除操作的時間為5s,與此相反,擦除NAND器件是以8~32KB的塊進行的,執行相同的操作最多只需要4ms。
執行擦除時塊尺寸的不同進一步拉大了NOR和NAND之間的性能差距,統計表明,對于給定的一套寫入操作(尤其是更新小文件時),更多的擦除操作必須在基于NOR的單元中進行。這樣,當選擇存儲解決方案時,設計師必須權衡以下的各項因素。
l 、NOR的讀速度比NAND稍快一些。
2、 NAND的寫入速度比NOR快很多。
3 、NAND的4ms擦除速度遠比NOR的5s快。
4 、大多數寫入操作需要先進行擦除操作。
5 、NAND的擦除單元更小,相應的擦除電路更少。
此外,NAND的實際應用方式要比NOR復雜的多。NOR可以直接使用,并可在上面直接運行代碼;而NAND需要I/O接口,因此使用時需要驅動程序。不過當今流行的操作系統對NAND結構的Flash都有支持。此外,Linux內核也提供了對NAND結構的Flash的支持。
詳解
NOR和NAND是現在市場上兩種主要的非易失閃存技術。Intel于1988年首先開發出NOR flash技術,徹底改變了原先由EPROM和EEPROM一統天下的局面。緊接著,1989年,東芝公司發表了NAND flash結構,強調降低每比特的成本,更高的性能,并且象磁盤一樣可以通過接口輕松升級。但是經過了十多年之后,仍然有相當多的硬件工程師分不清NOR和NAND閃存。
像“flash存儲器”經常可以與相“NOR存儲器”互換使用。許多業內人士也搞不清楚NAND閃存技術相對于NOR技術的優越之處,因為大多數情況下閃存只是用來存儲少量的代碼,這時NOR閃存更適合一些。而NAND則是高數據存儲密度的理想解決方案。
NOR的特點是芯片內執行(XIP, eXecute In Place),這樣應用程序可以直接在flash閃存內運行,不必再把代碼讀到系統RAM中。NOR的傳輸效率很高,在1~4MB的小容量時具有很高的成本效益,但是很低的寫入和擦除速度大大影響了它的性能。
NAND結構能提供極高的單元密度,可以達到高存儲密度,并且寫入和擦除的速度也很快。應用NAND的困難在于flash的管理需要特殊的系統接口。
SPI FLASH與NOR FLASH的區別
1、SPI Flash (即SPI Nor Flash)是Nor Flash的一種;
2、NOR Flash根據數據傳輸的位數可以分為并行(Parallel)NOR Flash和串行(SPI)NOR Flash;
3、SPI Nor Flash每次傳輸一個bit位的數據,parallel Nor Flash每次傳輸多個bit位的數據(有x8和x16bit兩種);
4、SPI Nor Flash比parallel便宜,接口簡單點,但速度慢。
SPI FLASH是指外接口符合SPI協議,也就是串口。
NOR FLASH與NAND 是相對的,指的是芯片內部的串型和并行。
SPI FLASH是NOR FLASH的一種。
結語
關于SPI FLASH與NOR FLASH的相關介紹就到這了,如有不足之處歡迎指正。
評論
查看更多