nand flash的读写操作 nand flash的读写操作

nand flash的读写操作

在使用nand flash之前需要对其进行必要的配置,主要有这几件事要做:

1.根据date sheet在NFCONF寄存器中设置读、写的时间参数(TACLS、TWRPH0、TWRPH1)

2.在NFCONT控制寄存器中使能nand flash控制器并片选(如需置1,先将所需的位bic,再置1)

3.进行复位(复位主要操作有:选中芯片,清除RnB,发出复位命令,等待,取消选中)

复位时序图如下:



开发板上的nand flash的结构图如下:


每页有2k的存储空间,其右面的64B为OOB(out of bank),用来存储校验码,控制寄存器会自动忽视每页最后的64B字节空间,A0~A11为每页上的列地址,A12~A30为页地址,NFADDR寄存器虽是32位寄存器,但其8~31位为保留位,所以其每次传送可8位有效数据


因为每块nand flash有512k容量,其引脚数很少,所以其引脚为复位操作

nand flash的读操作时序图如下:


读操作主要有以下步骤:

1.选中芯片(NFCONT寄存器第1位)

2.清除RnB(NFSTAT寄存器第4位)

3.发出命令0x00(NFCMMD寄存器)

4.发出列地址(2次)(NFADDR)

5.发出页(行)地址(3次)(NFADDR)

6.发出命令0x30(NFCMMD寄存器)

7.等待RnB(NFSTAT寄存器第0位)

8.读数据(NFDATA寄存器)

9.取消片选(NFCONT寄存器第1位)


对nand flash进行写操作前需先对块进行擦除,时序图如下:


若擦除成功则NFDATA寄存器返回0,失败返回1

操作如下:

1.选中芯片(NFCONT寄存器第1位)

2.清除RnB(NFSTAT寄存器第4位)

3.发出命令0x60(NFCMMD寄存器)

4.发出页(行)地址(3次)(NFADDR)

5.发出命令0xd0(NFCMMD寄存器)

6.等待RnB(NFSTAT寄存器第0位)

7.发出命令0x70(NFCMMD寄存器)

8.读取擦除结果(NFDATA寄存器)

9.取消片选(NFCONT寄存器第1位)


写操作时序图如下:


主要有以下步骤:

1.选中芯片(NFCONT寄存器第1位)

2.清除RnB(NFSTAT寄存器第4位)

3.发出命令0x80(NFCMMD寄存器)

4.发出列地址(2次)(NFADDR)

5.发出页(行)地址(3次)(NFADDR)

6.写入数据(NFDATA寄存器)

7.发出命令0x10(NFCMMD寄存器)

8.等待RnB(NFSTAT寄存器第0位)

9.发出命令0x70(NFCMMD寄存器)

10.读取写入结果(NFDATA寄存器)

11.取消片选(NFCONT寄存器第1位)


在使用nand flash之前需要对其进行必要的配置,主要有这几件事要做:

1.根据date sheet在NFCONF寄存器中设置读、写的时间参数(TACLS、TWRPH0、TWRPH1)

2.在NFCONT控制寄存器中使能nand flash控制器并片选(如需置1,先将所需的位bic,再置1)

3.进行复位(复位主要操作有:选中芯片,清除RnB,发出复位命令,等待,取消选中)

复位时序图如下:



开发板上的nand flash的结构图如下:


每页有2k的存储空间,其右面的64B为OOB(out of bank),用来存储校验码,控制寄存器会自动忽视每页最后的64B字节空间,A0~A11为每页上的列地址,A12~A30为页地址,NFADDR寄存器虽是32位寄存器,但其8~31位为保留位,所以其每次传送可8位有效数据


因为每块nand flash有512k容量,其引脚数很少,所以其引脚为复位操作

nand flash的读操作时序图如下:


读操作主要有以下步骤:

1.选中芯片(NFCONT寄存器第1位)

2.清除RnB(NFSTAT寄存器第4位)

3.发出命令0x00(NFCMMD寄存器)

4.发出列地址(2次)(NFADDR)

5.发出页(行)地址(3次)(NFADDR)

6.发出命令0x30(NFCMMD寄存器)

7.等待RnB(NFSTAT寄存器第0位)

8.读数据(NFDATA寄存器)

9.取消片选(NFCONT寄存器第1位)


对nand flash进行写操作前需先对块进行擦除,时序图如下:


若擦除成功则NFDATA寄存器返回0,失败返回1

操作如下:

1.选中芯片(NFCONT寄存器第1位)

2.清除RnB(NFSTAT寄存器第4位)

3.发出命令0x60(NFCMMD寄存器)

4.发出页(行)地址(3次)(NFADDR)

5.发出命令0xd0(NFCMMD寄存器)

6.等待RnB(NFSTAT寄存器第0位)

7.发出命令0x70(NFCMMD寄存器)

8.读取擦除结果(NFDATA寄存器)

9.取消片选(NFCONT寄存器第1位)


写操作时序图如下:


主要有以下步骤:

1.选中芯片(NFCONT寄存器第1位)

2.清除RnB(NFSTAT寄存器第4位)

3.发出命令0x80(NFCMMD寄存器)

4.发出列地址(2次)(NFADDR)

5.发出页(行)地址(3次)(NFADDR)

6.写入数据(NFDATA寄存器)

7.发出命令0x10(NFCMMD寄存器)

8.等待RnB(NFSTAT寄存器第0位)

9.发出命令0x70(NFCMMD寄存器)

10.读取写入结果(NFDATA寄存器)

11.取消片选(NFCONT寄存器第1位)


猜你喜欢

转载自blog.csdn.net/weixin_41632560/article/details/80935961