对 Nand Flash 存储芯片进行操作, 必须通过 Nand Flash 控制器的专用寄存器才能完成。所以,不能对 Nand Flash 进行总线操作。而 Nand Flash 的写操作也必须块方式进行。对 Nand Flash 的读操作可以按字节读取。
Nand Flash 控制器特性
1. 支持对 Nand Flash 芯片的读、检验、编程控制
2. 如果支持从 Nand Flash 启动, 在每次重启后自动将前 Nand Flash 的前 4KB 数据搬运到 ARM 的内部 RAM 中
3. 支持 ECC 校验
Nand Flash 控制器工作原理
Nand Flash 控制器在其专用寄存器区(SFR)地址空间中映射有属于自己的特殊功能寄存器,就是通过将 Nand Flash 芯片的内设命令写到其特殊功能寄存器中,从而实现对 Nand flash 芯片读、检验和编程控制的。特殊功能 寄存器有:NFCONF、NFCMD、NFADDR、NFDATA、NFSTAT、NFECC。寄存详细说明见下一节。
Nand flash 控制器中特殊功能寄存器详细介绍
1. 配置寄存器(NFCONF)
功能:用于对 Nand Flash 控制器的配置状态进行控制。
在地址空间中地址:0x4E000000,其中:
Bit15:Nand Flash 控制器使能位,置 0 代表禁止 Nand Flash 控制器,置 1 代表激活 Nand Flash 控制器; 要想访问 Nand Flash 芯片上存储空间,必须激活 Nand Flash 控制器。在复位后该位自动置 0,因此在初始化时
必须将该位置为 1。
Bit12:初始化 ECC 位,置 1 为初始化 ECC;置 0 为不初始化 ECC。
Bit11:Nand Flash 芯片存储空间使能位,置 0 代表可以对存储空间进行操作;置 1 代表禁止对存储空
间进行操作。在复位后,该位自动为 1。
Bit10-8:TACLS 位。根据此设定 CLE&ALE 的周期。TACLS 的值范围在 0-7 之间。 Bit6-4、2-0 分别为:TWRPH0、TWRPH1 位。设定写操作的访问周期。其值在 0-7 之间。
2. 命令寄存器(NFCMD)
功能:用于存放 Nand flash 芯片内设的操作命令。
在地址空间中地址:0x4E000004,其中:
Bit0-7:存放具体 Nand flash 芯片内设的命令值。其余位保留以后用。
3. 地址寄存器(NFADDR)
功能:用于存放用于对 Nand flash 芯片存储单元寻址的地址值。
在地址空间中地址:0x4E000008,其中:
Bit0-7:用于存放地址值。因为本款 Nand flash 芯片只有 I/O0-7 的地址/数据复用引脚且地址是四周
期每次 8 位送入的,所以这里只用到 8 位。其余位保留待用。
4. 数据寄存器(NFDATA)
功能:Nand flash 芯片所有内设命令执行后都会将其值放到该寄存器中。同时,读出、写入 Nand flash
存储空间的值也是放到该寄存器。
在地址空间中地址:0x4E00000C,其中: Bit0-7:用于存放需要读出和写入的数据。其余位保留代用。
5. 状态寄存器(NFSTAT)
功能:用于检测 Nand flash 芯片上次对其存储空间的操作是否完成。
在地址空间中地址:0x4E000010,其中:
Bit0:置
0 表示
Nand flash 芯片正忙于上次对存储空间的操作;置 1 表示 Nand flash 芯片准备好接收新
的对存储空间操作的请求。
6. ECC 校验寄存器(NFECC)
功能:ECC 校验寄存器 在地址空间中地址:0x4E000014,其中: Bit0Bit7: ECC0
Bit8Bit15: ECC1 Bit16Bit23: ECC2
原文地址:https://www.cnblogs.com/fanweisheng/p/11105689.html