找回密码
 注册
关于网站域名变更的通知
查看: 1554|回复: 2
打印 上一主题 下一主题

关于外扩flash擦除的问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2013-1-5 15:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
FLASH擦除程序:* m1 S4 s2 U+ u+ D
Uint16 ChipErase(void)0 g" p) h! r  a# q, o/ C: v
{& d' E7 i2 r& A$ a4 z" P3 _2 ^+ i
Uint16 Data;
* F- F3 W+ y9 l# {* D9 ZUint32 TimeOut,i;
/ v( ?8 ~* P( K. N6 ~* i+ v/***********以下过程需要严格遵守**************************/
3 O5 k  ]- W/ }*(FlashStart + 0x5555) = 0xAAAA; //需要对FLASH的0x5555单元写0xAAAA+ W5 R0 K. }; v6 |
*(FlashStart + 0x2AAA) = 0x5555; //需要对FLASH的0x2AAA单元写0x5555: o  ~9 n$ [0 x* ^$ H3 V( X! t
*(FlashStart + 0x5555) = 0x8080; //随后对FLASH的0x5555单元写0x8080;! {. ~- M' G+ G' h
*(FlashStart + 0x5555) = 0xAAAA; //乊后对FLASH的0x5555单元写0xAAAA1 v  M+ ], r  s) ?. x) L; f3 G" m
*(FlashStart + 0x2AAA) = 0x5555; //需要对FLASH的0x2AAA单元写0x5555 + w, s3 g# k' ]' v* P
*(FlashStart + 0x5555) = 0x1010; //需要对FLASH的0x5555单元写0x1010
8 V, l( i! b9 _; b! t+ G) Ji = 0;" |) H! M, C( D; v9 ~
TimeOut = 0;
% i- T6 m% C4 L) }! a5 Vwhile(i<5)! Y6 d2 G, b; G4 a/ K
{, o) c: h1 `$ `, q" e" G6 S* t4 |
Data = *(FlashStart + 0x3FFFF);% G# Z$ B/ v3 T9 [5 w
if (Data == 0xFFFF)- |% |% G1 i. A; O. _
i++;- h) ?' m" i  y( N. m# J9 j( ~+ h
else i=0;
* |3 c' V( s% q* f4 `# F+ hif ( ++TimeOut>0x1000000)
" k' f: \. b8 k2 E2 @1 wreturn (TimeOutErr);
/ w! a$ h* }- A6 w}& z& w2 l& B9 \3 O4 @/ y! O
for (i=0;i<0x40000;i++)# v" Y7 M, ?# p: v
{
, p0 \* s9 z3 P8 C  pData = *(FlashStart + i);
* W+ j& Y) E4 [5 n: R, fif (Data !=0xFFFF)1 H* K4 X8 \: E! J6 K, M
return (EraseErr);
( U# f8 C0 `0 x5 x9 q}2 d2 H) f' n( S
return (EraseOK)
0 p" ]0 M4 B* h. i为什么i<5,FlashStart + 0x3FFFF,++TimeOut>0x1000000

该用户从未签到

2#
发表于 2013-4-23 20:17 | 只看该作者
能給閃存芯片資料嗎?5 r* g* J- t4 G  B4 m

+ p& |% _; B3 j5 N{:soso_e132:}

该用户从未签到

3#
发表于 2013-4-23 22:51 | 只看该作者
本帖最后由 超級狗 于 2013-4-23 23:06 编辑 * b% v! B# ?) j/ T" N. b. i6 a
' z1 {8 L; c. i1 f  |. i2 \
應該是一顆 128K x 16 的閃存,Word Address = 0x3FFFF 是最後的位址。
" [( p4 c. E( ~7 T' X  i5 V9 ?3 t* D7 ?
  • FlashStart + 0x3FFFF" O! x: M* e8 D, |
    是閃存最後一個位址,這要看 CPU 定址,因為有的 CPU 定址是 Internal ROM 或 RAM 在前面,所以閃存位址會有一個 Offset,FlashStart 就是 Offset。
  • i < 5
    5 G6 Y' d- w  q9 ^) {6 ]8 C要讀到 5 次最後一個位址的內容等於 0xFFFF 再往下做,閃存內容被抹除後是 0xFFFF。下一段是檢查 0x00000 ~ 0x3FFFF 整顆閃存是否有被清除乾淨。
  • ++TimeOut > 0x1000000
    $ `+ S  D6 P  ai < 5 的迴圈檢查要設一個計數器,不然閃存有問題無法抹除,程序就會卡死。執行太久,發現最後一個位址都無法清除就不要再做了,回應 return (EraseErr) 告訴主程序閃存有問題。+ u7 Y; _2 ~5 S

4 S; n+ C6 x0 }$ G, {! S- Q$ S; ^: X- l3 g7 Z
{:soso_e125:}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-7 03:12 , Processed in 0.109375 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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