找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

关于外扩flash擦除的问题

[复制链接]

21

主题

37

帖子

209

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

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

EDA365欢迎您!

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

x
FLASH擦除程序:# u: R. }. F4 R& Z# c
Uint16 ChipErase(void)8 a$ n& T; i. Y3 \3 ?6 a0 h; s* v/ O
{
( d2 |9 N; \9 m: G, k2 vUint16 Data;0 m( H0 [1 [# y" W+ D; f8 j, o( u
Uint32 TimeOut,i;
2 ?- r+ S! }/ |" ?, S+ L1 n  X+ z/***********以下过程需要严格遵守**************************/- R8 R' G4 H- L
*(FlashStart + 0x5555) = 0xAAAA; //需要对FLASH的0x5555单元写0xAAAA
( J8 P: d8 X" a6 o' Z& C*(FlashStart + 0x2AAA) = 0x5555; //需要对FLASH的0x2AAA单元写0x5555) Z( o. T* C; ^# p( V: m- g
*(FlashStart + 0x5555) = 0x8080; //随后对FLASH的0x5555单元写0x8080;2 O* t% O9 T5 J- W/ q
*(FlashStart + 0x5555) = 0xAAAA; //乊后对FLASH的0x5555单元写0xAAAA8 r- S; \) I4 e0 \
*(FlashStart + 0x2AAA) = 0x5555; //需要对FLASH的0x2AAA单元写0x5555
7 N7 H$ ?8 S) H% W6 @*(FlashStart + 0x5555) = 0x1010; //需要对FLASH的0x5555单元写0x10103 E# b* }, V/ y" J% C/ S1 z
i = 0;2 R1 s' {, k! K% G. p% h* w+ y
TimeOut = 0;
2 t& t/ m4 h6 r* E$ s$ @while(i<5)
3 i$ Q2 @% k, P! c{8 E7 j  N0 z& r7 c, L
Data = *(FlashStart + 0x3FFFF);$ N% U% ]- G; o: A- j
if (Data == 0xFFFF)8 ^% s; S. F+ f0 Q% E, \3 j
i++;  k8 p- l5 l$ i( [4 q& g
else i=0;
0 R7 o0 i5 N: j. R8 Kif ( ++TimeOut>0x1000000)
5 W& [! q7 c. v; Hreturn (TimeOutErr);
9 |/ G7 M. i- V- q4 d4 P}2 H: l9 L8 h7 Q1 {. }  x+ p+ w, s) o
for (i=0;i<0x40000;i++)
) ~/ j6 @  J1 M1 H* m. `. b+ L! q{
  @$ v6 }  E/ C3 X5 y/ P8 b* nData = *(FlashStart + i);
5 Z3 _" P2 V) i. u9 ?if (Data !=0xFFFF)5 F; j6 Y3 U/ K6 x/ b( K3 {# c% Q( R
return (EraseErr);
+ c# }9 |  j) p- W0 W}& x2 b/ G1 \1 F- I
return (EraseOK)
9 t! @$ F! E7 ^# p  e4 B) N9 h为什么i<5,FlashStart + 0x3FFFF,++TimeOut>0x1000000
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!

33

主题

4949

帖子

1万

积分

EDA365特邀版主

Rank: 6Rank: 6

积分
12225
2#
发表于 2013-4-23 20:17 | 只看该作者
能給閃存芯片資料嗎?; O' V. `+ D. E# F2 H& j- K

  {. e* W" D; [{:soso_e132:}
哈士奇是一種連主人都咬的爛狗!

33

主题

4949

帖子

1万

积分

EDA365特邀版主

Rank: 6Rank: 6

积分
12225
3#
发表于 2013-4-23 22:51 | 只看该作者
本帖最后由 超級狗 于 2013-4-23 23:06 编辑
* A8 S) W, D% ^" n! K0 U
# k; x! [) \- H" g, l應該是一顆 128K x 16 的閃存,Word Address = 0x3FFFF 是最後的位址。
- R$ t: F' T4 m  d* `% K! p: j3 s$ L' k  G
  • FlashStart + 0x3FFFF
    ! L' \4 h" T9 H  \是閃存最後一個位址,這要看 CPU 定址,因為有的 CPU 定址是 Internal ROM 或 RAM 在前面,所以閃存位址會有一個 Offset,FlashStart 就是 Offset。
  • i < 5$ `  I/ J0 {" l8 z* D
    要讀到 5 次最後一個位址的內容等於 0xFFFF 再往下做,閃存內容被抹除後是 0xFFFF。下一段是檢查 0x00000 ~ 0x3FFFF 整顆閃存是否有被清除乾淨。
  • ++TimeOut > 0x1000000
    . L  D) M) E% d+ q4 X- w7 O5 vi < 5 的迴圈檢查要設一個計數器,不然閃存有問題無法抹除,程序就會卡死。執行太久,發現最後一個位址都無法清除就不要再做了,回應 return (EraseErr) 告訴主程序閃存有問題。. H  n. C) Z# U

( w; u/ I" f$ s: O2 K
! P& N5 E3 R5 V3 Z' t7 m{:soso_e125:}
哈士奇是一種連主人都咬的爛狗!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2024-10-18 19:28 , Processed in 0.057464 second(s), 31 queries , Gzip On.

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

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

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