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