Nor Flash具有其獨特的數據保護機制,它可以像內存一樣讀,但是它不可以像內存一樣寫,這就會導致我們在向Nor Flash中寫數據時會稍顯麻煩。這篇文章介紹Nor Flash 的一般操作,適合大多數的Nor Flash芯片,筆者使用的芯片是MX29LV160D T/B,容量為2MB。
拿到一款Nor Flash芯片,我們首先簡明扼要的瀏覽數據手冊上芯片的特性(FEATURES),做到一個大概的了解,接著看相關操作的命令介紹及文字說明,一般來說,芯片手冊上的 NOTE內容很重要。至于相關操作的時序,如果你使用的微控制器內部集成有內存控制器,那么你在操作之前,必須嚴格遵守相關時序來配置內存控制器的寄存器;如果你使用的微控制器內部沒有集成內存控制器,那么相關操作中,嚴格按照時序來編程。
圖1 相關操作指令
從圖1中可以看出,像Nor Flash芯片發送數據或者是讀取數據有兩種方式,一種是2字節方式(發送的數據和讀取的數據都是2字節,short),一種是1字節方式(發送的數據和讀取的數據都是1字節,char)。這個特點在編程的時候一定注意,即數據的類型不要搞錯了。
舉個例子,進入CFI(COMMON FLASH MEMORY INTERFACE)模式,我們首先向地址為55H的地方寫入數據98H即可。
對于芯片的讀寫操作,一般都是先編寫基本讀、寫函數。
/*寫一個字,微控制器的A1-》nor的A0,故需要左移一位*/
#define NOR_FLASH_BASE 0X0
void write_word_nor_flash(unsigned int base,unsigned int offset,unsigned int word)
{
Volatile unsigned short * p=(volatile unsigned short *)(base+(offset《《1));
*p=word;
}
/*寫命令*/
void nor_command(unsigned int offset,unsigned int command)
{
write_word_nor_flash(NOR_FLASH_BASE,offset,command);
}
/* 讀數據 */
unsigned int read_data_nor_flash(unsigned int base,unsigned int offset)
{
volatile unsigned short * p=(volatile unsigned short *)(base+(offset《《1));
return *p;
}
unsigned int nor_dat(unsigned int offset)
{
return read_data_nor_flash(NOR_FLASH_BASE, offset);
}
想要進入某種模式,輸入對應的命令即可。注意,像芯片寫數據時,所對應的扇區的初始值一定要是0XFFFF,否則,寫無效 。擦除操作或者是寫操作時,一定要結合狀態位來判斷芯片是否擦除或者是寫完成。
-
FlaSh
+關注
關注
10文章
1669瀏覽量
151161 -
存儲器
+關注
關注
38文章
7639瀏覽量
166621
發布評論請先 登錄
BY25QXXX系列NOR FLASH存儲器的驅動設計與實現

什么是串行Nor Flash?串行Nor Flash的結構和參數特性

NAND FLASH與NOR FLASH的技術對比

請問F2812內部的flash是nor flash還是NAND flash?
NOR flash是什么
NOR FLASH的原理及應用

NOR flash和flash有什么不一樣?
NAND Flash與NOR Flash的區別
關于NOR Flash的幾大應用領域淺析
NOR Flash和NAND FLASH的區別是什么

NAND Flash和NOR Flash的區別

評論