[国嵌攻略][054][NandFlash驱动设计_写]
Nand Flash支持按页写和随机写两种方式,在下面实现的是按页写。闪存在写数据时,只能写入1,不能写入0,所以写函数必须和擦除函数一起使用,并且擦除函数是按块擦除。
/********************************************************************
*名称:write_page_flash
*参数:
* page 页号
* buf 写缓存,2048字节
*返回:
* state 成功:0
* 失败:1
*功能:按页写闪存
*********************************************************************/
int write_page_flash(unsigned long page, unsigned char *buf){
int i; //循环计数器
int state; //写入状态,0表示成功,1表示失败 //选中闪存芯片
NFCONT &= ~(1<<1); //设置Reg_nCE:0 //清除忙信号
NFSTAT |= (1<<2); //设置RnB_TransDetect:0 //发送写命令(0x80)
NFCMMD = 0x80; //发送列地址(页内偏移)
NFADDR = 0x00; //Col.Add1,按页写忽略页内偏移
NFADDR = 0x00; //Col.Add2 //发送行地址(页号)
NFADDR = (page>>0)&0xFF; //Row.Add1
NFADDR = (page>>8)&0xFF; //Row.Add2
NFADDR = (page>>16)&0xFF; //Row.Add3 //写入数据
for(i = 0; i < PAGE_SIZE; i++){
NFDATA = buf[i]; //注意,NFDATA寄存器数据类型要和buf匹配,一个写周期写入一个字节
} //发送写命令(0x10)
NFCMMD = 0x10; //等待忙信号
while( !(NFSTAT&(1<<2)) ); //当RnB_TransDetect等于1时,结束循环 //发送读状态命令(0x70)
NFCMMD = 0x70; //读取状态
state = NFDATA&0x00000001; //取出数据端口I/O的0位,否则返回随机值 //释放闪存芯片
NFCONT |= 1<<1; //设置Reg_nCE:1 return state;
} /********************************************************************
*名称:erase_block_flash
*参数:
* page 页号
*返回:
* state 成功:0
* 失败:1
*功能:按块擦除闪存。提供页的地址,擦除所在的块。
*********************************************************************/
int erase_block_flash(unsigned long page){
int state; //写入状态,0表示成功,1表示失败 //选中闪存芯片
NFCONT &= ~(1<<1); //设置Reg_nCE:0 //清除忙信号
NFSTAT |= (1<<2); //设置RnB_TransDetect:0 //发送擦除命令(0x60)
NFCMMD = 0x60; //发送行地址(页号)
NFADDR = (page>>0)&0xFF; //Row.Add1
NFADDR = (page>>8)&0xFF; //Row.Add2
NFADDR = (page>>16)&0xFF; //Row.Add3 //发送擦除命令(0xD0)
NFCMMD = 0xD0; //等待忙信号
while( !(NFSTAT&(1<<2)) ); //当RnB_TransDetect等于1时,结束循环 //发送读状态命令(0x70)
NFCMMD = 0x70; //读取状态
state = NFDATA&0x00000001; //取出数据端口I/O的0位,否则返回随机值 //释放闪存芯片
NFCONT |= 1<<1; //设置Reg_nCE:1 return state;
}
[国嵌攻略][054][NandFlash驱动设计_写]的更多相关文章
- [国嵌攻略][052][NandFlash驱动设计_读]
NandFlash读数据方式 1.页读,读出页中主数据区的所有数据,提供页地址(行地址) 2.随机读,读出页中指定的存储单元的数据,提供页地址(行地址)和页内偏移(行地址) 代码编写 1.根据Nand ...
- [国嵌攻略][151][nandflash驱动程序设计]
初始化 打开/drivers/mtd/nand/s3c2410.c找到nand flash驱动程序代码,找到模块初始化函数s3c_nand_init,找到platform_driver中的probe函 ...
- [国嵌攻略][061][2440LCD驱动设计]
LCD初始化 1.引脚初始化 2.时序初始化 VBPD(vertical back porch):表示在一帧图像开始时,垂直同步信号以后的无效的行数 VFBD(vertical front porch ...
- [国嵌攻略][164][USB驱动程序设计]
USB驱动模型 1.USB host controller driver(主控器驱动):为USB主控制器提供驱动程序 2.USB core(USB核心):连接USB主控制器驱动和USB设备驱动 3.U ...
- [国嵌攻略][160][SPI驱动程序设计]
SPI Flash驱动 1.打开/drivers/mtd/devices/m25p80.c驱动文件.找到初始化m25p80_init函数,其中通过spi_register_driver来注册spi设备 ...
- [国嵌攻略][117][LED驱动程序设计]
LED程序设计 1.编写内核模块 2.搭建字符驱动框架 3.实现设备方法 头文件 <linux/io.h> writel() 1.编译/安装驱动 make cp leddev.ko ... ...
- [国嵌攻略][065][DM9000驱动程序设计]
移植代码:通过已有的可用的代码修改到新环境下运行. 代码编写: 初始化网卡 1.选中网卡 nLAN_CS BWSCON(0x48000000) DW4:01 16bit BANKCON4(0x4800 ...
- [国嵌攻略][051][NandFlash原理解析]
扮演角色 相当于嵌入式设备的硬盘 NandFlash分类 1.SCL(single level cell):单层式存储 2.MLC(multi level cell):多层式存储 3.SCL在存储格上 ...
- [国嵌攻略][104][Linux内核模块设计]
内核模块示例 #inlcude <linux/init.h> #inlcude <linux/module.h> static int hello_init(){ printk ...
随机推荐
- bzoj 4012: [HNOI2015]开店 主席树
Description 风见幽香有一个好朋友叫八云紫,她们经常一起看星星看月亮从诗词歌赋谈到 人生哲学.最近她们灵机一动,打算在幻想乡开一家小店来做生意赚点钱.这样的 想法当然非常好啦,但是她们也发现 ...
- lesson - 11 正则表达式
正则就是有一定规律的字符串,有几个特殊符号很关键(. * + ? | ),我们平时不仅可以用命令行工具grep/sed/awk去引用正则,而且还可以把正则嵌入在nginx.apache.甚至php.p ...
- UWP 使用OneDrive云存储2.x api(二)【全网首发】
接上一篇 http://www.cnblogs.com/hupo376787/p/8032146.html 上一篇提到为了给用户打造一个完全无缝衔接的最佳体验,UWP开发者最好也要实现App设置和数据 ...
- 尤克里里 ukulele 单板 非kaka tom uma
本店冲人气优惠,不搞倒闭之类的事 23寸尤克里里 单板 单板 单板 彩贝镶边演出大气 单板 单板 单板 彩贝镶边演出大气 单板 单板 单板 彩贝镶边演出大气 配件选购40元全套(加棉琴包.金属变调夹. ...
- Life in Changsha 第二次scrum冲刺
第二次冲刺 第二次冲刺任务 设计留言板功能. 用户故事 用户打开“生活在长大”的界面 程序首页展示校园服务,论坛等相关信息 用户选择留言板 程序界面跳转 用户查看留言,并可以输入留言内容 提交后留 ...
- Head First设计模式之代理模式
一.定义 定义:为其他对象提供一种代理以控制对这个对象的访问 在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口. 二.结构 代理模式一般会有三个角色: 抽象角色(Subject):指代 ...
- python字符集的转换(mysql数据乱码的处理)
本文参考:http://blog.csdn.net/crazyhacking/article/details/39375535 chardet模块:http://blog.csdn.net/tianz ...
- CSS 鼠标样式大全
cursor是CSS中用于定义鼠标在元素标签上的显示样式,如常用的手型鼠标样式 cursor: pointer; 也可以通过url网址指定扩展名一般为.cur的鼠标图片文件. 名称 属性代码 描述 默 ...
- mybatis高级映射(一对一,一对多)
mybatis高级映射 一对一关联映射 需求:查询订单信息,关联查询用户信息(一个订单对应一个用户) (1)通过resultType实现 sql语句: select orders.* , USER.u ...
- ASP.NET 设计模式:应用程序分层与关注点分离(SoC)
应用程序分层设计 应用程序分层属于关注点分离的一种形式,可以通过命名空间.文件夹或采用单独的项目来实现. 下图为一个采用分层设计的项目结构 ASPPatterns.Chap3.Layered.Repo ...