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文章
1715浏览量
154701 -
存储器
+关注
关注
39文章
7714浏览量
170848
发布评论请先 登录
BY25QXXX系列NOR FLASH存储器的驱动设计与实现
什么是串行Nor Flash?串行Nor Flash的结构和参数特性
NAND FLASH与NOR FLASH的技术对比
NOR flash是什么
NOR FLASH的原理及应用
NOR flash和flash有什么不一样?
NAND Flash与NOR Flash的区别
关于NOR Flash的几大应用领域浅析
NOR Flash和NAND FLASH的区别是什么
NAND Flash和NOR Flash的区别

浅析Nor Flash的一些通用设置
评论