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文章
1759浏览量
155892 -
存储器
+关注
关注
39文章
7755浏览量
172179
发布评论请先 登录
BY25QXXX系列NOR FLASH存储器的驱动设计与实现
什么是串行Nor Flash?串行Nor Flash的结构和参数特性
NAND FLASH与NOR FLASH的技术对比
NOR flash是什么
Protel在线教程:SCH的一些高级设置和常用技巧
NOR FLASH的原理及应用
NOR flash和flash有什么不一样?
NAND Flash与NOR Flash的区别
关于NOR Flash的几大应用领域浅析
NOR Flash和NAND FLASH的区别是什么
NAND Flash和NOR Flash的区别
浅析Nor Flash的一些通用设置
评论