OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4633|回复: 4

NAND FLASH 驱动理解求助

[复制链接]

14

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
160
金钱
160
注册时间
2017-4-27
在线时间
23 小时
发表于 2017-6-13 20:40:36 | 显示全部楼层 |阅读模式
3金钱
在对NAND FLASH 驱动实验中,对其中一段话有理解困难,
MT29F4G08的访问地址为0X80000000,而NAND FLASH的命令/地址控制由 CLE/ALE 控制,也就是由 FMC_A17_CLE 和 FMC_A16_ALE 控制,因此,
发送命令和地址的语句为:
                                         *(vu8*)(0X80000000|(1<<17))=CMD;
                                        *(vu8*)(0X80000000|(1<<16))=ADDR;

在看信号线那里 不是说ALE为高时,IO上锁存地址,CLE为高时,IO上锁存命令。可是这个发送命令的地址的语句为什么是在MT29F4G08的访问地址上进行赋值操作,?
*(vu8*)(0X80000000|(1<<17))=CMD;
*(vu8*)(0X80000000|(1<<16))=ADDR;这两句话怎么理解?希望有人帮助我解答哈,多谢。

最佳答案

查看完整内容[请看2#楼]

就是当A16=1时,IO口上写入的就是地址;当A17=1时,IO口上写入的数据就是命令。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-6-13 20:40:37 | 显示全部楼层
就是当A16=1时,IO口上写入的就是地址;当A17=1时,IO口上写入的数据就是命令。
回复

使用道具 举报

14

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
160
金钱
160
注册时间
2017-4-27
在线时间
23 小时
 楼主| 发表于 2017-6-14 11:42:32 | 显示全部楼层
这个A16和A17是指什么?0X80000000|(1<<17)和0X80000000|(1<<16)是不是就是命令寄存器和地址寄存器的地址?往命令寄存器写入命令或者地址寄存器写入地址|?
回复

使用道具 举报

14

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
160
金钱
160
注册时间
2017-4-27
在线时间
23 小时
 楼主| 发表于 2017-6-23 14:35:34 | 显示全部楼层
这句话意思是
回复

使用道具 举报

14

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
160
金钱
160
注册时间
2017-4-27
在线时间
23 小时
 楼主| 发表于 2017-6-23 14:42:55 | 显示全部楼层
CPU 是通过FMC达到控制NAND FLASH的,对于FMC的NADN FLASH的控制器中,他的存储区域分为两个部分,为特性区和通用区,每个区每个区又分为命令区、地址区和数据区,当往命令区或者地址区写入相应的值时,FMC就根据写入的值向NAND  FLASH发送对应的命令和地址,生成相应的时序信号。上面的0X80000000|(1<<17就是命令区地址,往该地址写命令字,FMC就会根据此得到要发送的命令,0X80000000|(1<<16就是地址区,往该地址区写入的地址即可。FMC会根据此得到地址
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-17 13:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表