打印
[ZLG-ARM]

EASYARM2200开发板不好擦除扇区

[复制链接]
1270|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zgpswh|  楼主 | 2007-11-22 15:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
EASYARM2200开发板不好擦除扇区

/****************************************************************************
* 名称:ChipErase1()
* 功能:芯片扇区擦除。
* 入口参数:无
* 出口参数:返回TRUE表示操作成功,返回FALSE表示操作失败
****************************************************************************/
uint8  SectorChipErase(uint32 Addr) 
{  volatile uint16  *ip;
   uint16  temp1,temp2;

   ip = GetAddr(0x5555);
   ip[0] = 0xaaaa;            // 第一个写周期,地址0x5555,数据0xAA
   ip = GetAddr(0x2aaa);
   ip[0] = 0x5555;            // 第二个写周期,地址0x2aaa,数据0x55
   ip = GetAddr(0x5555);
   ip[0] = 0x8080;            // 第三个写周期,地址0x5555,数据0x80
   ip = GetAddr(0x5555);
   ip[0] = 0xaaaa;            // 第四个写周期,地址0x5555,数据0xAA
   ip = GetAddr(0x2aaa);
   ip[0] = 0x5555;            // 第五个写周期,地址0x2aaa,数据0x55
   ip = (volatile uint16 *)(FLASH_ADDR|(Addr&0x1fffff));
   ip[0] = 0x3030;            // 第六个写周期,地址0x5555,数据0x10

   while (1)                // 等待操作完成 (若擦除操作没有完成,每次读操作DQ6会跳变)
   {  temp1 = *ip;
      temp2 = *ip;
      if (temp1 == temp2)
      {  if (temp1 != 0xffff)
         {  return(FALSE);
         }
         else
         {  return(TRUE);
         }
      }
   }
   return(TRUE);
}


调用如下:

 SectorChipErase(0x81000400);


请各位指点。

相关帖子

沙发
zgpswh|  楼主 | 2007-11-22 15:54 | 只看该作者

问题解决了。

问题解决了。

使用特权

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

本版积分规则

6

主题

17

帖子

1

粉丝