找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

关于外扩flash擦除的问题

[复制链接]

21

主题

37

帖子

209

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

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

EDA365欢迎您!

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

x
FLASH擦除程序:
, p" B  H/ H; ~1 EUint16 ChipErase(void)
, h' W, Z& k$ Y4 l* y/ ]/ p{' K' L  K' v+ d6 F/ J
Uint16 Data;9 g6 e" Y) X" w* I. d  k
Uint32 TimeOut,i;
4 y) g: E: ?! a  }) N7 ^/***********以下过程需要严格遵守**************************/
8 L# a" O% l- ?. a: u: B*(FlashStart + 0x5555) = 0xAAAA; //需要对FLASH的0x5555单元写0xAAAA
/ ?8 l* s& ^1 G6 R% k*(FlashStart + 0x2AAA) = 0x5555; //需要对FLASH的0x2AAA单元写0x5555
! x$ G% R& y# E* q; N% D6 i( A2 O' G*(FlashStart + 0x5555) = 0x8080; //随后对FLASH的0x5555单元写0x8080;" p! f, ^9 Q; `. L: Q
*(FlashStart + 0x5555) = 0xAAAA; //乊后对FLASH的0x5555单元写0xAAAA- Q9 f' Q# J' G7 t. d
*(FlashStart + 0x2AAA) = 0x5555; //需要对FLASH的0x2AAA单元写0x5555
" o2 O2 ]' Z5 m6 N) D* F$ {% V/ a*(FlashStart + 0x5555) = 0x1010; //需要对FLASH的0x5555单元写0x1010: N) f- K, H: s! h
i = 0;" H* B4 Z6 a& i4 L  q
TimeOut = 0;) E. K% a! o! j4 A8 y3 u
while(i<5)! [# \. k+ D+ H" V7 p
{: V# J- D# Q9 N, K0 {9 V
Data = *(FlashStart + 0x3FFFF);) E& {# K$ f6 V# o1 F5 @/ M
if (Data == 0xFFFF)
9 J! a" N; L' Di++;
' Q4 N3 C) ?( ~else i=0;2 Z. t( W+ ?7 A5 r
if ( ++TimeOut>0x1000000)
9 H; x# |9 Y% S# V# B: R3 Freturn (TimeOutErr);3 p. \* I6 m) w) }0 G* I
}3 O! H- u0 H. A) X8 v# o# f; P
for (i=0;i<0x40000;i++)8 i" `( [$ R4 J  u6 ]7 l* H
{& I1 t3 {0 v+ b, p4 K- p
Data = *(FlashStart + i);
; @; i, x$ n, A# ]# sif (Data !=0xFFFF)
$ d8 Z( i* e+ W5 \- i0 Zreturn (EraseErr);
  k' D* S1 o' I+ S}& v3 Y% [% F6 O# x/ P, c! |5 Z
return (EraseOK)  T# C: R* ^  f+ m! U7 y8 ?
为什么i<5,FlashStart + 0x3FFFF,++TimeOut>0x1000000
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!

33

主题

4949

帖子

1万

积分

EDA365特邀版主

Rank: 6Rank: 6

积分
12225
3#
发表于 2013-4-23 22:51 | 只看该作者
本帖最后由 超級狗 于 2013-4-23 23:06 编辑
. E! @7 j/ {( N1 J) d) `
; }  m1 D6 A+ C1 `應該是一顆 128K x 16 的閃存,Word Address = 0x3FFFF 是最後的位址。
3 k' C- [' v7 h
* ]; K- d# }3 f
  • FlashStart + 0x3FFFF
    8 M' @" ^2 {+ G( x! n1 D是閃存最後一個位址,這要看 CPU 定址,因為有的 CPU 定址是 Internal ROM 或 RAM 在前面,所以閃存位址會有一個 Offset,FlashStart 就是 Offset。
  • i < 5' f4 p; p9 i1 X0 {4 ]% E
    要讀到 5 次最後一個位址的內容等於 0xFFFF 再往下做,閃存內容被抹除後是 0xFFFF。下一段是檢查 0x00000 ~ 0x3FFFF 整顆閃存是否有被清除乾淨。
  • ++TimeOut > 0x10000007 }/ [- d5 i$ d6 h/ B/ W
    i < 5 的迴圈檢查要設一個計數器,不然閃存有問題無法抹除,程序就會卡死。執行太久,發現最後一個位址都無法清除就不要再做了,回應 return (EraseErr) 告訴主程序閃存有問題。$ w6 C0 k! T8 `' m

9 P0 h+ W1 \& m1 _
( l& Z5 {1 l, A- v% |{:soso_e125:}
哈士奇是一種連主人都咬的爛狗!

33

主题

4949

帖子

1万

积分

EDA365特邀版主

Rank: 6Rank: 6

积分
12225
2#
发表于 2013-4-23 20:17 | 只看该作者
能給閃存芯片資料嗎?
: K4 R! U! Y7 [
0 F' S' Y" H8 @9 R{:soso_e132:}
哈士奇是一種連主人都咬的爛狗!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2024-12-23 04:24 , Processed in 0.056559 second(s), 32 queries , Gzip On.

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

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

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