找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 995|回复: 2
打印 上一主题 下一主题

关于外扩flash擦除的问题

[复制链接]

21

主题

37

帖子

209

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

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

EDA365欢迎您!

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

x
FLASH擦除程序:
9 p2 p# o( f6 _% aUint16 ChipErase(void)
+ i0 E$ n6 @" S* d0 M) a' r{6 h+ f6 }6 H8 @( J$ K
Uint16 Data;' I. C; e4 k2 j8 |/ Q
Uint32 TimeOut,i;& _) F8 k& O# P  r- g2 ~
/***********以下过程需要严格遵守**************************/1 o& H- s/ M8 m0 Z
*(FlashStart + 0x5555) = 0xAAAA; //需要对FLASH的0x5555单元写0xAAAA1 o8 U( q1 K+ e- R
*(FlashStart + 0x2AAA) = 0x5555; //需要对FLASH的0x2AAA单元写0x5555
! i. _% I' e" @; T6 Z' G6 G9 q3 ~*(FlashStart + 0x5555) = 0x8080; //随后对FLASH的0x5555单元写0x8080;
2 p# n; M9 J0 \; m) l1 }9 }*(FlashStart + 0x5555) = 0xAAAA; //乊后对FLASH的0x5555单元写0xAAAA
5 S% @7 T! {% x*(FlashStart + 0x2AAA) = 0x5555; //需要对FLASH的0x2AAA单元写0x5555
9 [$ p+ I% S4 e8 H1 V- J*(FlashStart + 0x5555) = 0x1010; //需要对FLASH的0x5555单元写0x1010
0 ~/ z; z9 p7 E; p" g! `; P( Di = 0;8 `7 Z5 b, M, `7 J7 \+ Y0 @
TimeOut = 0;
5 a. l. N# g$ q# C" e( Bwhile(i<5)
' C# ^: F3 d! v9 S! Q6 z{
0 X; b* X: u+ w; B$ ^3 xData = *(FlashStart + 0x3FFFF);
, ]' q: F9 r' W- F% bif (Data == 0xFFFF)& A* y- h' H* }  k5 Q$ }! M
i++;
9 U5 A6 M' x" C% s5 i; _8 @2 Ielse i=0;
% ]% ~( P0 F1 z2 }if ( ++TimeOut>0x1000000)
& C5 k- D' L4 preturn (TimeOutErr);  b/ D" ], `" Q; d# B7 b
}
! M' i/ N* j2 l; A2 Ofor (i=0;i<0x40000;i++)
, s% C0 l6 x; R% k. e5 x" _{
: G: Y* l& w. hData = *(FlashStart + i);- ?: ~# ?1 V% l
if (Data !=0xFFFF); F- R# a3 S% C; C$ A* a' a
return (EraseErr);' v" T# q& S4 ?7 S+ J# I3 e  B
}  E( H* l( a' _6 v; P. ~
return (EraseOK)1 C6 y+ \; w( Y: U- k7 _
为什么i<5,FlashStart + 0x3FFFF,++TimeOut>0x1000000
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!

33

主题

4949

帖子

1万

积分

EDA365特邀版主

Rank: 6Rank: 6

积分
12225
2#
发表于 2013-4-23 20:17 | 只看该作者
能給閃存芯片資料嗎?
* X% N; d  U/ q' e' }" [4 ]$ k" G; |$ R0 m; g* ~9 L/ l+ s
{:soso_e132:}
哈士奇是一種連主人都咬的爛狗!

33

主题

4949

帖子

1万

积分

EDA365特邀版主

Rank: 6Rank: 6

积分
12225
3#
发表于 2013-4-23 22:51 | 只看该作者
本帖最后由 超級狗 于 2013-4-23 23:06 编辑
# H2 C2 {$ s0 ~9 G  k* U5 P5 R& g$ p$ A0 J( P( |. R
應該是一顆 128K x 16 的閃存,Word Address = 0x3FFFF 是最後的位址。# b& }+ E2 L. ^! V3 v5 F

# M0 ?3 d8 S* @
  • FlashStart + 0x3FFFF! Q6 J) Z6 v9 L2 ^1 d2 s" s
    是閃存最後一個位址,這要看 CPU 定址,因為有的 CPU 定址是 Internal ROM 或 RAM 在前面,所以閃存位址會有一個 Offset,FlashStart 就是 Offset。
  • i < 53 T7 F$ ~, k9 u- m  F  n
    要讀到 5 次最後一個位址的內容等於 0xFFFF 再往下做,閃存內容被抹除後是 0xFFFF。下一段是檢查 0x00000 ~ 0x3FFFF 整顆閃存是否有被清除乾淨。
  • ++TimeOut > 0x1000000* p$ J* ~: T* Z% y, s# @
    i < 5 的迴圈檢查要設一個計數器,不然閃存有問題無法抹除,程序就會卡死。執行太久,發現最後一個位址都無法清除就不要再做了,回應 return (EraseErr) 告訴主程序閃存有問題。: D8 f/ g% V; |8 M8 K: ]7 F5 C* a

1 r5 O' _- ^0 I/ c" T* v" U' w& v( P7 J
{:soso_e125:}
哈士奇是一種連主人都咬的爛狗!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2024-12-23 09:30 , Processed in 0.062755 second(s), 32 queries , Gzip On.

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

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

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