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位)