2.3NandFlash的操作

1.NandFlash分类:

?

2.MLC和SLC对比:

?

?

?

?

3.信号引脚:

?

?

Nandflash的读:

页读:页地址

随机读:页地址+列地址

?

今天是要实现页读:需要页的地址。

我们来看芯片手册K9F2G08U0A.pdf:找到桉叶读的工作原理图:

寄存器NFCONT:

在这个寄存器里的【1】位:

?

上面就是选择操作nandflash的位:

?

  1. nandflash的statue寄存器:

    第四位:

    清除RB:第四位为1是,清除RB。

  2. 接下来是发送的操作:

    寄存器:

  3. 发送:

  4. NFDATA:

    主方法:

    Make:编译

    ?

    要实现nandflash进行读的功能,必须进行初始化:主要对一下两个寄存器进行初始化:

    我们主要是初始化这个寄存器的三个参数:TACLS,TWRPH0,TWRPH1。

    有下面的参数得上图参数:为了我们的nandflash能够工作,必须满足他的最小值。

    TACLS=0ns

    TWFPH0=12ns

    TWFPH1=5ns

    ?

    上面三个参数的取值运算:

    我们的nandflash使用的HCLK,频率是100MHz的。那么他每震动一次对应的时间是10ns(1/100MHz).

    上面有算TACLS>0ns

    TWFPH0>12ns

    TWFPH1>5ns的公式。

    要实现duration=HCLK*TACLS=10ns*TACLS>0,只需要取TACLS=1,即可。

    要实现duration=HCLK*(TWRPH0+1)=10ns*(TWRPH0+1)>12ns,只需要TWRPH0=2即可

    要实现duration=HCLK*(TWRPH1+1)=10ns*(TWRPH1+1)>5ns,只需要TWRPH1=1,即可。

    接下来是初始化我们的NFCONT,先disable,再enable使用。

    复位的操作:

    接下来就是来测试这些函数。

    解决隐患:

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

时间: 2024-07-30 07:08:32

2.3NandFlash的操作的相关文章

如何用一个app操作另外一个app.比如微信群控那样的

如何实现一个app.控制另外的app,比如市面上群控微信的,是用测试工具的原理?还是什么模拟点击的原理? 如何用一个app操作另外一个app.比如微信群控那样的 >> android 这个答案描述的挺清楚的:http://www.goodpm.net/postreply/android/1010000007186891/如何用一个app操作另外一个app比如微信群控那样的.html

ELK 学习笔记之 elasticsearch Mget操作

Mget操作: 查询多个文档: curl -XGET 'http://192.168.1.151:9200/_mget' -d '{"docs": [{"_index": "library","_type": "books", "_id": "1"}, {"_index": "library","_type"

条件、循环、函数定义、字符串操作练习

注意标准库的两种导入与使用方式,建议大家采用<库名>.<函数名>的方式. 对前面的代码进行优化,用for,while,if,def实现: 用循环画五角星 1 import turtle 2 3 turtle.fillcolor("red") 4 turtle.begin_fill() 5 for i in range(5): 6 turtle.forward(100) 7 turtle.right(144) 8 turtle.end_fill() 用循环画同心圆

Python 文件操作

操作文件时,一般需要经历如下步骤: 打开文件 操作文件 一.打开文件 文件句柄 = open('文件路径', '模式') 打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作. 打开文件的模式有: r,只读模式(默认). w,只写模式.[不可读:不存在则创建:存在则删除内容:] a,追加模式.[可读: 不存在则创建:存在则只追加内容:] "+" 表示可以同时读写某个文件 r+,可读写文件.[可读:可写:可追加] w+,写读 a+,

Python操作数据库(mysql redis)

一.python操作mysql数据库: 数据库信息:(例如211.149.218.16   szz  123456) 操作mysql用pymysql模块 #操作其他数据库,就安装相应的模块 import  pymysql ip='211.149.218.16' port=3306 passwd='123456' user='root' db='szz' conn=pymysql.connect(host=ip,user=user,port=port,passwd=passwd,db=db,cha

数据库权限分配操作

1.远程登录mysqlmysql -h ip -u root -p 密码2.创建用户格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码";例1:增加一个test1用户,密码为123456,可以在任何主机上登录,并对所有数据库有查询,增加,修改和删除的功能.需要在mysql的root用户下进行mysql>grant select,insert,update,delete on *.* to [email protected]&quo

Django(三) ORM 数据库操作

比较有用 转自 http://blog.csdn.net/fgf00/article/details/53678205 一.DjangoORM 创建基本类型及生成数据库表结构 1.简介 2.创建数据库 表结构 二.Django ORM基本增删改查 1.表数据增删改查 2.表结构修改 三.Django ORM 字段类型 1.字段类型介绍 2.字段参数介绍 3.Django ORM 外键操作 一.DjangoORM 创建基本类型及生成数据库表结构 1.简介 ORM:关系对象映射.定义一个类自动生成数

python操作mysql ------- SqlAchemy正传

本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同. 下载安装 pip3 install pymysql 使用操作 1.执行SQL #!/usr/bin/env python # -*- coding:utf-8 -*- import pymysql # 创建连接 conn = pymysql.connect(host='127.0.0.1

SQLServer数据库自增长标识列的更新修改操作

SQLServer数据库自增长标识列的更新修改操作方法在日常的sql server开发中,经常会用到Identity类型的标识列作为一个表结构的自增长编号.比如文章编号.记录序号等等.自增长的标识列的引用很大程度上方便了数据库程序的开发,但是有时这个固执的字段类型也会带来一些麻烦. 一.修改标识列字段的值:(在执行insert时,将ID手动的设置成想要的值)有时,为了实现某个功能,需要修改类型为Identity自增长类型的字段的值,但由于标识的类型所限,这种操作默认是不允许的.比如,目前数据库有