[ZLG-ARM] EASYARM2200开发板不好擦除扇区

[复制链接]
1880|1
 楼主| zgpswh 发表于 2007-11-22 15:24 | 显示全部楼层 |阅读模式
EASYARM2200开发板不好擦除扇区<br /><br />/****************************************************************************<br />*&nbsp;名称:ChipErase1()<br />*&nbsp;功能:芯片扇区擦除。<br />*&nbsp;入口参数:无<br />*&nbsp;出口参数:返回TRUE表示操作成功,返回FALSE表示操作失败<br />****************************************************************************/<br />uint8&nbsp;&nbsp;SectorChipErase(uint32&nbsp;Addr)&nbsp;<br />{&nbsp;&nbsp;volatile&nbsp;uint16&nbsp;&nbsp;*ip;<br />&nbsp;&nbsp;&nbsp;uint16&nbsp;&nbsp;temp1,temp2;<br /><br />&nbsp;&nbsp;&nbsp;ip&nbsp;=&nbsp;GetAddr(0x5555);<br />&nbsp;&nbsp;&nbsp;ip[0]&nbsp;=&nbsp;0xaaaa;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;第一个写周期,地址0x5555,数据0xAA<br />&nbsp;&nbsp;&nbsp;ip&nbsp;=&nbsp;GetAddr(0x2aaa);<br />&nbsp;&nbsp;&nbsp;ip[0]&nbsp;=&nbsp;0x5555;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;第二个写周期,地址0x2aaa,数据0x55<br />&nbsp;&nbsp;&nbsp;ip&nbsp;=&nbsp;GetAddr(0x5555);<br />&nbsp;&nbsp;&nbsp;ip[0]&nbsp;=&nbsp;0x8080;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;第三个写周期,地址0x5555,数据0x80<br />&nbsp;&nbsp;&nbsp;ip&nbsp;=&nbsp;GetAddr(0x5555);<br />&nbsp;&nbsp;&nbsp;ip[0]&nbsp;=&nbsp;0xaaaa;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;第四个写周期,地址0x5555,数据0xAA<br />&nbsp;&nbsp;&nbsp;ip&nbsp;=&nbsp;GetAddr(0x2aaa);<br />&nbsp;&nbsp;&nbsp;ip[0]&nbsp;=&nbsp;0x5555;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;第五个写周期,地址0x2aaa,数据0x55<br />&nbsp;&nbsp;&nbsp;ip&nbsp;=&nbsp;(volatile&nbsp;uint16&nbsp;*)(FLASH_ADDR|(Addr&0x1fffff));<br />&nbsp;&nbsp;&nbsp;ip[0]&nbsp;=&nbsp;0x3030;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;第六个写周期,地址0x5555,数据0x10<br /><br />&nbsp;&nbsp;&nbsp;while&nbsp;(1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;等待操作完成&nbsp;(若擦除操作没有完成,每次读操作DQ6会跳变)<br />&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;temp1&nbsp;=&nbsp;*ip;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp2&nbsp;=&nbsp;*ip;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(temp1&nbsp;==&nbsp;temp2)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;if&nbsp;(temp1&nbsp;!=&nbsp;0xffff)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;return(FALSE);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;return(TRUE);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;return(TRUE);<br />}<br /><br /><br />调用如下:<br /><br />&nbsp;SectorChipErase(0x81000400);<br /><br /><br />请各位指点。<br />
 楼主| zgpswh 发表于 2007-11-22 15:54 | 显示全部楼层

问题解决了。

问题解决了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

17

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部