当前位置: 首页 > news >正文

S3C2440与NAND FLASH(K9F1208)的接线分析

NAND FLASH的接线方式和NOR FLASH,SDRAM都不一样。以TQ2440开发板用的K9F1208为例,分析NAND FLASH的接线方式。

K9F1208结构如下图:

点击看大图

K9F1208位宽是8位。

一页: 512byte + 16byte 最后16byte是用于存储校验码和其他信息用的,不能存放实际的数据。

一个块有32 page:(16k+512)byte

K9F1208有4096个块:(64M+2M)byte,总共有64Mbyte可操作的芯片容量

NAND FLASH以页为单位读写数据,以块为单位擦除数据。

S3C24440和K9F1208的接线图如下:

adf2e78c-1170-4cf5-ae22-a856ef8e8fe5.gif

下图是S3C2440的NAND FLASH引脚配置:

d31d8c7f-dfa1-400e-aabf-8740d8c55c9b.gif

当选定一个NAND FLASH的型号后,要根据选定的NAND FLASH来确定S3C2440的NCON,GPG13,GPG14,GPG15的状态。

下图是S3C2440中4个脚位状态的定义:

点击看大图

K9F1208的一页是512byte,所以NCON接低电平,GPG13接高电平。

K9F1208需要4个寻址命令,所以GPG14接高电平

K9F1208的位宽是8,所以GPG15接低电平。

NAND FLASH寻址

对K9F1208来说,地址和命令只能在I/O[7:0]上传递,数据宽度是8位。

地址传递分为4步,如下图:

点击看大图

第1步发送列地址,既选中一页512BYTE中的一个字节。512byte需要9bit来选择,这里只用了A0-A7,原因是把一页分成了2部分,每部分256字节。通过发送的读命令字来确定是读的前256字节还是后256字节。

当要读取的起始地址(Column Address)在0~255内时我们用00h命令,当读取的起始地址是在256~511时,则使用01h命令。

一个块有32页,用A9-A13共5位来选择一个块中的某个页。

总共有4096个块,用A14-A25共12位来选择一个块。

K9F1208总共有64Mbyte,需要A0-A25共26个地址位。

例如要读NAND FLASH的第5000字节开始的内容。把5000分解成列地址和行地址。

Column_address = 5000%512 = 392

Page_address = (5000>>9) = 9

因为column_address>255,所以用01h命令读

发送命令和参数的顺序是:

NFCMMD = 0x01;从后256字节开始读

NFADDR = column_address & 0xff;取column_address的低8位送到数据线

NFADDR = page_address & 0xff;发送A9-A16

NFADDR = (page_address >>8) & 0xff; 发送A17-A24

NFADDR = (page_address >> 16) & 0xff;发送A25

上面的NFCMMD,NFADDR.是S3C2440的NAND FLASH控制寄存器。读取的数据会放在NFDATA中。

相关文章:

  • linux 6.2 部署nginx的过程
  • 成为Java高手需要达到的25个学习目标
  • 字符编码相关的知识
  • 远程读取XML根级别上的数据无效。 行 1,位置 1
  • 将DATAtable转换成 json格式
  • PHP之session相关实例教程与经典代码
  • HDU 3065 病毒侵袭持续中 (AC自动机)
  • HDU 1850 Being a Good Boy in Spring Festival (Nim博弈)
  • 20非常有用的Java程序片段(6-10)
  • BizTalk RosettaNet解决方案之Loopback
  • YAFFS2文件系统分析(转)
  • 如何设置Linux操作系统shell命令的默认语言
  • 基于HTML5的燃气3D培训仿真系统
  • Android 解决ScrollView嵌入ListView | GridView | ScrollView显示问题
  • 万能写入sql语句,并且防注入
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • ➹使用webpack配置多页面应用(MPA)
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • centos安装java运行环境jdk+tomcat
  • css布局,左右固定中间自适应实现
  • HTTP--网络协议分层,http历史(二)
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • JavaScript异步流程控制的前世今生
  • Lsb图片隐写
  • nodejs实现webservice问题总结
  • vue-cli在webpack的配置文件探究
  • Vue实战(四)登录/注册页的实现
  • 安卓应用性能调试和优化经验分享
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • gunicorn工作原理
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (3)STL算法之搜索
  • (初研) Sentence-embedding fine-tune notebook
  • (翻译)terry crowley: 写给程序员
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .net企业级架构实战之7——Spring.net整合Asp.net mvc
  • .net中我喜欢的两种验证码
  • [ 蓝桥杯Web真题 ]-布局切换
  • [ 手记 ] 关于tomcat开机启动设置问题
  • []Telit UC864E 拨号上网
  • [2021ICPC济南 L] Strange Series (Bell 数 多项式exp)
  • [autojs]autojs开关按钮的简单使用
  • [C++] Windows中字符串函数的种类
  • [C++]类和对象(中)
  • [C++参考]拷贝构造函数的参数必须是引用类型
  • [C++打怪升级]--学习总目录
  • [Codeforces] number theory (R1600) Part.11
  • [CTF]php is_numeric绕过
  • [elastic 8.x]java客户端连接elasticsearch与操作索引与文档