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

关于外扩flash擦除的问题

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
FLASH擦除程序:- ?0 L) ^. ^, F! s% g
Uint16 ChipErase(void), ]; e- T: N7 d, h  c
{) `) {% ]: P# R, W" l* S
Uint16 Data;2 U0 q* M: Y$ E$ I* C' w3 S' w2 F
Uint32 TimeOut,i;
1 `+ t  @/ x0 f, l/***********以下过程需要严格遵守**************************/
; A! r# x  L* l0 j. p*(FlashStart + 0x5555) = 0xAAAA; //需要对FLASH的0x5555单元写0xAAAA7 d2 x1 Z( W+ b" x4 R0 Y# b( |& T
*(FlashStart + 0x2AAA) = 0x5555; //需要对FLASH的0x2AAA单元写0x5555+ E" |( j) H% b, ?! Z" p4 n
*(FlashStart + 0x5555) = 0x8080; //随后对FLASH的0x5555单元写0x8080;  v( G& o# i8 ~; i! |/ v# X
*(FlashStart + 0x5555) = 0xAAAA; //乊后对FLASH的0x5555单元写0xAAAA, C6 M& z) v) S6 e
*(FlashStart + 0x2AAA) = 0x5555; //需要对FLASH的0x2AAA单元写0x5555
+ h5 n$ c7 E5 V( ^% C" D/ M0 z*(FlashStart + 0x5555) = 0x1010; //需要对FLASH的0x5555单元写0x1010
, ~; V" b3 F! ^' q( T0 I" di = 0;- o6 g2 V( }2 F1 A  K  Y9 S
TimeOut = 0;; [1 O; ^, r- y9 [
while(i<5)
& N+ u2 n& {( a& O  Q+ Q' g& t{- P4 _& M% C: y- X
Data = *(FlashStart + 0x3FFFF);( a- ^. B6 {/ Y$ Y0 R
if (Data == 0xFFFF)
5 h) U& j9 t4 F9 i7 }* zi++;
6 s* z6 Y8 Q1 P$ u; P: P, g/ Melse i=0;0 {/ b; w$ L- j8 ^# |% L: ?$ {8 ^
if ( ++TimeOut>0x1000000)% k  E& B1 Q. q6 \+ f) G
return (TimeOutErr);' {: D* q' Q7 h9 E" o
}  u; L6 f+ {8 s+ e# l9 f
for (i=0;i<0x40000;i++)
8 D; m, z! [8 O/ T4 D* C{
6 F' q" a. @6 ^, T: F# l2 h& MData = *(FlashStart + i);
! X& l- n8 J* [; @6 ~if (Data !=0xFFFF)/ [8 f6 n' m; ]9 h, M9 R- _6 l
return (EraseErr);" G" k" i& i/ z0 R
}
) ?$ C' T& l, j  Q3 N& Freturn (EraseOK)
" n# K" S* g* V  P为什么i<5,FlashStart + 0x3FFFF,++TimeOut>0x1000000

该用户从未签到

2#
发表于 2013-4-23 20:17 | 只看该作者
能給閃存芯片資料嗎?
& p  k2 F2 ^: R4 M% r/ Z8 N0 r( X! b! ]5 |+ c: s
{:soso_e132:}

该用户从未签到

3#
发表于 2013-4-23 22:51 | 只看该作者
本帖最后由 超級狗 于 2013-4-23 23:06 编辑   [7 p$ e1 O5 k* j
( ?% D$ \" ~3 x
應該是一顆 128K x 16 的閃存,Word Address = 0x3FFFF 是最後的位址。( V2 M( i% A# {, Y$ N8 W
7 z# E2 T/ F4 J; J( \
  • FlashStart + 0x3FFFF  @' o" G! s4 ~, w
    是閃存最後一個位址,這要看 CPU 定址,因為有的 CPU 定址是 Internal ROM 或 RAM 在前面,所以閃存位址會有一個 Offset,FlashStart 就是 Offset。
  • i < 5
    4 N0 n) N6 k: {要讀到 5 次最後一個位址的內容等於 0xFFFF 再往下做,閃存內容被抹除後是 0xFFFF。下一段是檢查 0x00000 ~ 0x3FFFF 整顆閃存是否有被清除乾淨。
  • ++TimeOut > 0x1000000
    1 L- H1 R4 {! w) gi < 5 的迴圈檢查要設一個計數器,不然閃存有問題無法抹除,程序就會卡死。執行太久,發現最後一個位址都無法清除就不要再做了,回應 return (EraseErr) 告訴主程序閃存有問題。
    6 D  b$ `  T+ i. R  c# ]
& k% p  C, B8 M7 B3 }0 E8 W7 z
  r' i" M4 B3 o! z$ m$ R9 i% ^
{:soso_e125:}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-23 15:17 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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