找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

关于外扩flash擦除的问题

[复制链接]

21

主题

37

帖子

209

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

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

EDA365欢迎您!

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

x
FLASH擦除程序:9 C3 |: K! ?  z) s5 j3 L$ c: R
Uint16 ChipErase(void). w0 t4 L$ V( y, Y+ a* j0 f
{
  u6 c7 V# [6 s# CUint16 Data;: z" T  ]. {7 C
Uint32 TimeOut,i;) h- A5 V- g" ]5 M5 s1 k
/***********以下过程需要严格遵守**************************/
$ l5 _8 O3 ^% _) A, Y5 q: ?9 {*(FlashStart + 0x5555) = 0xAAAA; //需要对FLASH的0x5555单元写0xAAAA
8 G: C/ C$ H, _) J8 S4 H*(FlashStart + 0x2AAA) = 0x5555; //需要对FLASH的0x2AAA单元写0x55556 l4 x% H9 n1 g3 i, L+ {$ F' ~- x7 j
*(FlashStart + 0x5555) = 0x8080; //随后对FLASH的0x5555单元写0x8080;
, ~# L) A" b6 k& {0 E2 j+ o$ f$ g*(FlashStart + 0x5555) = 0xAAAA; //乊后对FLASH的0x5555单元写0xAAAA* i; _$ p% @  V5 a
*(FlashStart + 0x2AAA) = 0x5555; //需要对FLASH的0x2AAA单元写0x5555 " G/ H  u) u1 f1 X- o
*(FlashStart + 0x5555) = 0x1010; //需要对FLASH的0x5555单元写0x1010
3 F) Z  p, M0 _, l: si = 0;9 P" S' n7 y) e  d
TimeOut = 0;
/ O! v7 h# O- ]  v( Z# v4 pwhile(i<5)
9 g. j% P4 U' C& Z9 l% e2 u{* ~: f- t9 _  f3 q( y4 m
Data = *(FlashStart + 0x3FFFF);- t  f5 \* b3 q/ Y; O- z
if (Data == 0xFFFF)
7 r2 d/ k  ]( ci++;1 ^' S4 B7 l# s) F, [
else i=0;& K5 M4 G5 v0 O( N8 N8 Z
if ( ++TimeOut>0x1000000)
) T9 ~1 s5 z. e: g. Areturn (TimeOutErr);. m" E. p. {( y& f7 U1 Y# w% b
}: @) y2 E) e* e: I* f$ Q% e
for (i=0;i<0x40000;i++)
$ w' r% R' P( I& B{" D$ S5 S; {/ m% \
Data = *(FlashStart + i);6 g& t6 y5 m% @  I9 X5 W3 S5 q5 o# Z
if (Data !=0xFFFF)% ?) [8 t/ D1 U# J5 P6 T
return (EraseErr);! z  i4 b0 J# M" q, S
}$ T. x; p+ P2 {0 @
return (EraseOK)- j9 j5 ~2 ]* K0 I2 Z
为什么i<5,FlashStart + 0x3FFFF,++TimeOut>0x1000000
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!

33

主题

4949

帖子

1万

积分

EDA365特邀版主

Rank: 6Rank: 6

积分
12225
2#
发表于 2013-4-23 20:17 | 只看该作者
能給閃存芯片資料嗎?3 }7 U, `$ B$ q! l$ q2 s

( R# b) w% E- b7 ?$ o) S5 t{:soso_e132:}
哈士奇是一種連主人都咬的爛狗!

33

主题

4949

帖子

1万

积分

EDA365特邀版主

Rank: 6Rank: 6

积分
12225
3#
发表于 2013-4-23 22:51 | 只看该作者
本帖最后由 超級狗 于 2013-4-23 23:06 编辑 % _4 {3 N. h6 @6 ^( W
' n# p+ W# j4 L5 H% ~
應該是一顆 128K x 16 的閃存,Word Address = 0x3FFFF 是最後的位址。$ u3 ]' U$ h( M- w
- d# A" a: u: w  X, t. a
  • FlashStart + 0x3FFFF% g  ?1 n* ?5 ^7 l( t- a
    是閃存最後一個位址,這要看 CPU 定址,因為有的 CPU 定址是 Internal ROM 或 RAM 在前面,所以閃存位址會有一個 Offset,FlashStart 就是 Offset。
  • i < 52 {  k* F0 ]9 Y$ _% L# z, T( @
    要讀到 5 次最後一個位址的內容等於 0xFFFF 再往下做,閃存內容被抹除後是 0xFFFF。下一段是檢查 0x00000 ~ 0x3FFFF 整顆閃存是否有被清除乾淨。
  • ++TimeOut > 0x1000000# V. c# ?7 w( J, @- O* w9 O! E
    i < 5 的迴圈檢查要設一個計數器,不然閃存有問題無法抹除,程序就會卡死。執行太久,發現最後一個位址都無法清除就不要再做了,回應 return (EraseErr) 告訴主程序閃存有問題。. g7 _! X3 Z7 ~! J$ _! G3 q& K

0 x& }- {+ e: }% y7 G: J1 |; S3 L, e5 {" F  b0 W! H
{:soso_e125:}
哈士奇是一種連主人都咬的爛狗!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2024-12-22 23:13 , Processed in 0.054273 second(s), 32 queries , Gzip On.

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

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

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