打印

flash的块擦除……

[复制链接]
1863|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jxmzzr|  楼主 | 2013-11-5 15:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
zhangmangui| | 2013-11-5 16:50 | 只看该作者
flash中的块的大小都是分好的  有些flash的封装不一样  块的顺序分块大小也不一样
这个要注意   块擦除和整片擦除的前面指令一般是一样的  只是在最后一个送的地址是要擦除的
块地址SA   给定地址所在的块  

使用特权

评论回复
板凳
zhangmangui| | 2013-11-5 16:54 | 只看该作者
给你个例程看看   39vf800的
Uint16 SectorErase(Uint16        SectorNum)
{
        Uint16        i,Data;
        Uint32        TimeOut;
       
        *(FlashStart + 0x5555) = 0xAA;
        *(FlashStart + 0x2AAA) = 0x55;
        *(FlashStart + 0x5555) = 0x80;
        *(FlashStart + 0x5555) = 0xAA;
        *(FlashStart + 0x2AAA) = 0x55;
        *(FlashStart + SectorSize * SectorNum) = 0x30;
       
        i = 0;
        TimeOut = 0;
        while(i<5)
        {
                Data = *(FlashStart +  SectorSize * (SectorNum + 1) -1);
               
                if(Data == 0xFFFF)        i++;
                else        i=0;
               
                if ( ++TimeOut>0x1000000)        return (TimeOutErr);
        }

        for        (i=0;i<SectorSize;i++)       
        {
                Data = *(FlashStart + SectorSize * SectorNum +i);
                if (Data !=0xFFFF)        return (EraseErr);
        }
        return  (EraseOK);                                                                                       
}

使用特权

评论回复
地板
拿起书本| | 2013-11-5 17:02 | 只看该作者
按照手册上分的块,擦除给定地址所在的块

使用特权

评论回复
5
快乐小电虫| | 2013-11-6 09:48 | 只看该作者
看看,了解下

使用特权

评论回复
6
paraselene1| | 2013-11-6 17:25 | 只看该作者
看flash的pdf,一般都是擦除给定地址所在的整个块

使用特权

评论回复
7
江枫渔火| | 2013-11-6 21:38 | 只看该作者
块擦除,给定的参数是块号。会擦除指定块。给定的参数是地址,会算出地址所在块。
块擦除可能是基本擦除单位。修改一个块中的数据,可能是先读出块,再修改块,再擦除整个块,再将修改后的数据重新写入块。

使用特权

评论回复
8
zhangmangui| | 2013-11-6 23:28 | 只看该作者
江枫渔火 发表于 2013-11-6 21:38
块擦除,给定的参数是块号。会擦除指定块。给定的参数是地址,会算出地址所在块。
块擦除可能是基本擦除单 ...

看到一些flash中的块大小是不一样的   这个擦除的过程中应该是flash自己去处理的吧
块擦出用的不多  一般在写入明确大小的小代码段

使用特权

评论回复
9
江枫渔火| | 2013-11-6 23:42 | 只看该作者
zhangmangui 发表于 2013-11-6 23:28
看到一些flash中的块大小是不一样的   这个擦除的过程中应该是flash自己去处理的吧
块擦出用的不多  一般 ...

我用过的是知道,有些flash是整块擦除。用的编程指令前,需要用擦除。也有专门的指令使编程前自动执行擦除。原来的数据会没有,必须人为的先备份出来,之后才重写进去

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

460

主题

2188

帖子

12

粉丝