共计 841 个字符,预计需要花费 3 分钟才能阅读完成。
硬件原理分析
引脚功能
CLE
高电平 ALE
低电平时传输命令 CLE
低电平 ALE
高电平时传输地址 ALE
和CLE
低电平时传输数据 CLE
片选信号低电平有效,因为 LDATA 信号是多芯片共用的 RnB
状态引脚,高电平表示空闲,低电平表示正忙 WE
引脚上升沿锁存写入数据 RE
下降沿后延迟 tREA
读出数据
可以看到 WE 上升沿通知 nand 写入数据,RE 下降沿后延迟 tREA
输出数据
直接操作和 nand 控制器操作对比
命令列表
使用 uboot 体验 nand 操作
uboot 安装参考上一篇文章韦东山一期视频学习笔记 -Norflash
#### 读 ID
1. 选中芯片 NFCONT
(0X4E000004)bit1 置 1 选中芯片,md.l 4E000004 1
读出寄存器值(因为是 32bit 寄存器)
可以看到芯片没有选中,mw.l 4E000004 1
使能 nand flash
2. 发出命令 0x90NFCMMD
(0X4E000008)写入 0x90,mw.b 4E000008 90
(b
写入 1 字节)
3. 发出地址 0x00NFADDR
(0X4E00000C)写入 0x00,mw.b 4E00000C 00
(b
写入 1 字节)
4. 读数据
读取NFDATA
(0X4E000010)uboot 命令md.b 4E000010 1
5. 读 Device Code
读取NFDATA
(0X4E000010)uboot 命令md.b 4E000010 1
可以看到读出的数据和芯片手册一致
6. 退出读 ID 状态 Resetmw.b 4E000008 ff
读 0 地址内容
使用 uboot 命令 nand dump 0
可以查看 nand 内数据
读操作时序
发出以下命令进行读 0 地址测试
mw.l 4E000004 1 // 使能 nand flash
mw.b 4E000008 00 // 发出命令
mw.b 4E00000C 00 // 发出地址
mw.b 4E00000C 00 // 发出地址
mw.b 4E00000C 00 // 发出地址
mw.b 4E00000C 00 // 发出地址
md.b 4E000010 1 // 读数据
可以看出运行结果和 uboot 命令直接读取 nand flash 结果一致