EDA365电子工程师网

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

作者: lpfzhx    时间: 2013-1-5 15:15
标题: 关于外扩flash擦除的问题
FLASH擦除程序:( F0 q) a% j+ @- p8 d  q  \( w! \
Uint16 ChipErase(void)
! R% A3 w5 @6 c& x  w6 t6 r{) B* \( N3 i( @3 T8 [
Uint16 Data;  c: ]# N7 b0 S$ P" @5 t7 c( T
Uint32 TimeOut,i;  l3 y6 R( I$ {7 D
/***********以下过程需要严格遵守**************************/' C' L' y! \' K/ e( k8 F# p
*(FlashStart + 0x5555) = 0xAAAA; //需要对FLASH的0x5555单元写0xAAAA
( g1 D5 S- I; L9 u8 t*(FlashStart + 0x2AAA) = 0x5555; //需要对FLASH的0x2AAA单元写0x5555
) u6 N- {6 C4 Q) a: Y1 y*(FlashStart + 0x5555) = 0x8080; //随后对FLASH的0x5555单元写0x8080;# {, x+ G/ S" w$ x
*(FlashStart + 0x5555) = 0xAAAA; //乊后对FLASH的0x5555单元写0xAAAA( y' @; X; ?( B7 t
*(FlashStart + 0x2AAA) = 0x5555; //需要对FLASH的0x2AAA单元写0x5555 4 {+ Z1 k* A& s3 ~
*(FlashStart + 0x5555) = 0x1010; //需要对FLASH的0x5555单元写0x10104 G( B* [# [9 j; m& W8 g
i = 0;7 ]; a. C  ?, K2 t  n! j
TimeOut = 0;
  S3 q0 a; V! n. Mwhile(i<5)
3 h; d; u) _, |6 A6 }3 T{5 ~6 `5 `& I$ x9 t5 s6 ^% y# \9 f) i
Data = *(FlashStart + 0x3FFFF);
3 a4 q- [: ?& I. e3 N+ O" V0 {if (Data == 0xFFFF)2 E9 u, C- F- ?* E
i++;
- v+ F2 [( z0 v2 i* y. ?else i=0;
: W  `! c. E8 ^3 Z: Wif ( ++TimeOut>0x1000000)
# A. ?  }% }8 g/ p" G$ Freturn (TimeOutErr);- ?8 r6 @1 _7 |* J5 F3 x
}
3 h  p6 L) x" I4 F* f! Rfor (i=0;i<0x40000;i++)
% Q4 r7 T( T" `: ^' X. ?. G# p6 K{
; g! p8 [: [* ^! c4 o% FData = *(FlashStart + i);5 x% u/ H4 ]7 a4 A, u* u
if (Data !=0xFFFF)- _8 j' @$ _- W' O  v2 }/ @
return (EraseErr);, O! G1 V% v$ h" }# @9 k! C
}
3 I* F" A1 t1 f+ Vreturn (EraseOK)* n7 L; r- k/ P/ _) P& z
为什么i<5,FlashStart + 0x3FFFF,++TimeOut>0x1000000
作者: 超級狗    时间: 2013-4-23 20:17
能給閃存芯片資料嗎?
1 x/ y, I9 Q3 p( I, U$ a% l5 j" r' a9 V5 V
{:soso_e132:}
作者: 超級狗    时间: 2013-4-23 22:51
本帖最后由 超級狗 于 2013-4-23 23:06 编辑 6 Z+ J( t* P" C* ]* g
& c" M; S3 Z* d& {: s2 d
應該是一顆 128K x 16 的閃存,Word Address = 0x3FFFF 是最後的位址。
2 C% s& f7 |7 `# h. E) w7 y! ?- b. t! Z0 o0 b. _

4 J0 m9 D3 Y0 c# [. s1 J  D0 g2 o% {' U
{:soso_e125:}




欢迎光临 EDA365电子工程师网 (https://bbs.elecnest.cn/) Powered by Discuz! X3.2