找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

关于外扩flash擦除的问题

[复制链接]

21

主题

37

帖子

209

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

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

EDA365欢迎您!

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

x
FLASH擦除程序:( i6 Z' E3 I" ?
Uint16 ChipErase(void)
" d* ]- y0 {) A: f1 M! J{" c& a* I/ z  w
Uint16 Data;4 }# h; Y" m- `. `; m& _  y
Uint32 TimeOut,i;/ b, h2 J2 J" k/ E: T" N6 X3 \6 z
/***********以下过程需要严格遵守**************************/
$ |. G$ n2 V, c' }- C# ]# U*(FlashStart + 0x5555) = 0xAAAA; //需要对FLASH的0x5555单元写0xAAAA' i/ P8 \2 X5 u, ]
*(FlashStart + 0x2AAA) = 0x5555; //需要对FLASH的0x2AAA单元写0x5555
% G- ~" Q1 m4 Y  f' N$ F1 M$ f*(FlashStart + 0x5555) = 0x8080; //随后对FLASH的0x5555单元写0x8080;
. ^; l4 P: E3 n*(FlashStart + 0x5555) = 0xAAAA; //乊后对FLASH的0x5555单元写0xAAAA) {: j' _; F# H* L# ]; {, A% h! u' \4 a
*(FlashStart + 0x2AAA) = 0x5555; //需要对FLASH的0x2AAA单元写0x5555 9 ]* |5 s, F8 b
*(FlashStart + 0x5555) = 0x1010; //需要对FLASH的0x5555单元写0x1010, Q9 w7 B/ I' G; j% b
i = 0;. S! {9 J  W  f5 p) j8 @  d, g
TimeOut = 0;
" l& m, P3 T2 O! Wwhile(i<5)5 l- C8 F; E1 s: b1 [
{
5 x  k8 H; ^& M3 R% vData = *(FlashStart + 0x3FFFF);9 p5 D/ x  p; t  q" }
if (Data == 0xFFFF)
- m- R8 ]2 f9 ?4 v$ o8 Q  I3 ~i++;& `. v  i; {& g4 D) w
else i=0;: U5 I$ J! S2 C2 Z) a
if ( ++TimeOut>0x1000000)
& D5 u6 C* ~! S# j! d" V' lreturn (TimeOutErr);
3 e7 {; }  m9 ~3 Q}
; O& L  o3 l! k+ X0 E! Gfor (i=0;i<0x40000;i++)
" {- ?3 C2 Z4 n{
: }. M1 @, o+ \; ZData = *(FlashStart + i);" T- t7 j$ K  P" z4 P8 z
if (Data !=0xFFFF)1 h  _$ W7 L3 H, T4 {
return (EraseErr);" B* |  z1 D0 O5 |2 y1 q
}
' ^3 P0 y" M2 [3 D& g: T) breturn (EraseOK)
5 |5 C2 Z7 B% j' ?) s+ m为什么i<5,FlashStart + 0x3FFFF,++TimeOut>0x1000000
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!

33

主题

4949

帖子

1万

积分

EDA365特邀版主

Rank: 6Rank: 6

积分
12225
2#
发表于 2013-4-23 20:17 | 只看该作者
能給閃存芯片資料嗎?
! P+ G0 N2 j" J+ i
, |* @& c' T3 k9 L, @9 D{:soso_e132:}
哈士奇是一種連主人都咬的爛狗!

33

主题

4949

帖子

1万

积分

EDA365特邀版主

Rank: 6Rank: 6

积分
12225
3#
发表于 2013-4-23 22:51 | 只看该作者
本帖最后由 超級狗 于 2013-4-23 23:06 编辑 1 e! q! Y3 i9 o/ |6 k; R- h4 J
( l. O! U3 d: f# Z
應該是一顆 128K x 16 的閃存,Word Address = 0x3FFFF 是最後的位址。
6 o! m! a& T* X5 t& e; Z) c% s# z! i0 H, B4 B/ O* E: e* _/ v
  • FlashStart + 0x3FFFF# _7 w3 K2 ]/ T7 V
    是閃存最後一個位址,這要看 CPU 定址,因為有的 CPU 定址是 Internal ROM 或 RAM 在前面,所以閃存位址會有一個 Offset,FlashStart 就是 Offset。
  • i < 5# K  f- P/ P% C: K7 u5 e
    要讀到 5 次最後一個位址的內容等於 0xFFFF 再往下做,閃存內容被抹除後是 0xFFFF。下一段是檢查 0x00000 ~ 0x3FFFF 整顆閃存是否有被清除乾淨。
  • ++TimeOut > 0x1000000
    4 R  X$ f+ H& `' x0 p! [" ki < 5 的迴圈檢查要設一個計數器,不然閃存有問題無法抹除,程序就會卡死。執行太久,發現最後一個位址都無法清除就不要再做了,回應 return (EraseErr) 告訴主程序閃存有問題。3 t, W) z& f8 x8 j  M

& h) g. d( ?) J  V) U. ]; w5 p7 @' I3 g) C
{:soso_e125:}
哈士奇是一種連主人都咬的爛狗!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2025-6-1 11:11 , Processed in 0.054913 second(s), 31 queries , Gzip On.

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

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

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