OpenEdv-开源电子网

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

nand flash 块擦除 ???

[复制链接]

260

主题

809

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1896
金钱
1896
注册时间
2012-10-28
在线时间
357 小时
发表于 2016-11-16 16:33:55 | 显示全部楼层 |阅读模式
2金钱


根据 资料 MT29F4G08ABADA 这个介绍,每页是 2048 字节,
每个块包含 64页,那么每个块的地址应该就是 2048*64的倍数,
下面的<<=7、<<=6 转换为页地址,意思是不是这样的:
如果我想擦除块2,那 BlockNum 这个变量的值是2, <<=6的话结果是 128,那这个擦除块的地址 不是 2048*64的倍数啊,


该如何理解啊 ???????????????

或者是芯片内部自动会吧 这个 也地址转换为 扇区的地址 (也就是芯片内部会将 BlockNum  * 2048) ?  ????

u8 NAND_EraseBlock(u32 BlockNum)
{
  if(nand_dev.id==MT29F16G08ABABA)
    BlockNum<<=7;          //将块地址转换为页地址
  else if(nand_dev.id==MT29F4G08ABADA)
    BlockNum<<=6;

  *(vu8*)(NAND_ADDRESS|NAND_CMD)  = NAND_ERASE0;

  //发送块地址
  *(vu8*)(NAND_ADDRESS|NAND_ADDR) = (u8)BlockNum;
  *(vu8*)(NAND_ADDRESS|NAND_ADDR) = (u8)(BlockNum>>8);
  *(vu8*)(NAND_ADDRESS|NAND_ADDR) = (u8)(BlockNum>>16);
  *(vu8*)(NAND_ADDRESS|NAND_CMD)  = NAND_ERASE1;
  if(NAND_WaitForReady(0x2FFFFFF)!=NSTA_READY)
    return NSTA_ERROR;//失败

  return 0;        //成功   
}



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-11-17 21:39:47 | 显示全部楼层
回复

使用道具 举报

260

主题

809

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1896
金钱
1896
注册时间
2012-10-28
在线时间
357 小时
 楼主| 发表于 2016-11-17 22:51:03 | 显示全部楼层
本帖最后由 hpdell 于 2016-11-17 22:54 编辑

你好,在教程里面找到 : PA0~PA5 为页地址( Page Address),用
于在一个 Block 内部寻址, MT29F4G08 一个 Block 大小为 64 个 Page,需要 6 个地址线寻址;
不知道这个 <<7,  <<6 是不是根据这个来的 啊 ???

回复

使用道具 举报

55

主题

474

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2374
金钱
2374
注册时间
2017-8-7
在线时间
207 小时
发表于 2018-3-21 18:42:39 | 显示全部楼层
不知楼主的问题解决的怎么样子了,我也遇到这个问题,用块擦除,在写入,复位数据就没了
qq1950361006,互帮互助,共同进步。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-9 13:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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