EDA365电子论坛网

标题: 关于外扩flash擦除的问题 [打印本页]

作者: lpfzhx    时间: 2013-1-5 15:15
标题: 关于外扩flash擦除的问题
FLASH擦除程序:$ x: N" g" Z! Z1 k) u& F
Uint16 ChipErase(void)
! o: k1 J4 n1 ^- [# T{
" @( _( @1 [2 \1 c4 y: n3 v, rUint16 Data;8 s6 c  d. U2 i8 O  x2 E* m
Uint32 TimeOut,i;
3 e* p9 A8 r. Y3 B- H+ h$ H/ G! J/***********以下过程需要严格遵守**************************/
! ]! r6 \( A1 n; l  c*(FlashStart + 0x5555) = 0xAAAA; //需要对FLASH的0x5555单元写0xAAAA" [9 R2 [& e3 T
*(FlashStart + 0x2AAA) = 0x5555; //需要对FLASH的0x2AAA单元写0x55559 S: e* T* x! n
*(FlashStart + 0x5555) = 0x8080; //随后对FLASH的0x5555单元写0x8080;+ S* `8 Q) A: n; S7 s, k
*(FlashStart + 0x5555) = 0xAAAA; //乊后对FLASH的0x5555单元写0xAAAA
, A9 Z0 l5 F+ ?, R' T0 c. w*(FlashStart + 0x2AAA) = 0x5555; //需要对FLASH的0x2AAA单元写0x5555
+ {9 A6 m% n  ?- J* |*(FlashStart + 0x5555) = 0x1010; //需要对FLASH的0x5555单元写0x1010
% p* x/ l$ a, l+ l) y/ Ei = 0;, [! z9 o: Q( z" p
TimeOut = 0;
' f4 ^5 u* x+ fwhile(i<5)/ v# J/ B0 y; P1 W7 t, X! _
{
+ U" K4 N) V! b' Y: k* YData = *(FlashStart + 0x3FFFF);
" i/ f7 R: d6 ^; l7 F% fif (Data == 0xFFFF)' H6 [6 \- U$ Z6 [
i++;# F- h: c. @- K% c
else i=0;  F& B2 I* b6 ^: Z' J- R
if ( ++TimeOut>0x1000000)7 Q0 _; e# c  u& [7 z: m% k% M2 f/ W
return (TimeOutErr);1 J( |  R5 d4 Q4 \8 V
}# \! N2 h6 \& f! n" ~( ?2 N
for (i=0;i<0x40000;i++)
, t0 I, [+ x. F6 l{; o5 i% r- k, O$ K* y; I! ^3 q
Data = *(FlashStart + i);
3 e6 t8 o3 O/ Aif (Data !=0xFFFF): |, S1 c- L8 S6 I* }! P2 y( c
return (EraseErr);
- Q6 G3 I- S; [& J1 F$ O}
( j/ X3 }+ }, z1 X+ p, r1 _" A& ireturn (EraseOK), \/ }0 T0 X- M
为什么i<5,FlashStart + 0x3FFFF,++TimeOut>0x1000000
作者: 超級狗    时间: 2013-4-23 20:17
能給閃存芯片資料嗎?) ]4 o0 D6 g9 S" p9 o8 s( w& @

* ?0 D* q1 }7 h% a- K+ x{:soso_e132:}
作者: 超級狗    时间: 2013-4-23 22:51
本帖最后由 超級狗 于 2013-4-23 23:06 编辑 / y/ P8 O" o$ b% `# ^

, z0 R9 l3 ?6 G應該是一顆 128K x 16 的閃存,Word Address = 0x3FFFF 是最後的位址。6 J. b1 q; v; q# @

; {2 s0 A% z6 T$ V* t1 z1 x" o: u
9 b. R+ j; F: x/ B4 A; {3 G" G/ l8 z* x
{:soso_e125:}




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2