找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

关于外扩flash擦除的问题

[复制链接]

21

主题

37

帖子

209

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

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

EDA365欢迎您!

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

x
FLASH擦除程序:
: K$ \8 \! Y" J0 O9 f6 qUint16 ChipErase(void)( c+ F/ |5 w& t: ~3 I  M  c3 I
{
$ W6 V5 B$ s+ D3 |* n& PUint16 Data;
1 w; s, a+ m( q8 UUint32 TimeOut,i;
" `5 j9 y, \- m/***********以下过程需要严格遵守**************************/
" q( c4 C2 F' Z0 R6 u, C1 [" H( H*(FlashStart + 0x5555) = 0xAAAA; //需要对FLASH的0x5555单元写0xAAAA
& a( @+ P' U! g1 U4 g*(FlashStart + 0x2AAA) = 0x5555; //需要对FLASH的0x2AAA单元写0x55550 ?0 `* r, @3 y# A
*(FlashStart + 0x5555) = 0x8080; //随后对FLASH的0x5555单元写0x8080;/ K8 H1 G% m+ v, M; C, H. t7 H
*(FlashStart + 0x5555) = 0xAAAA; //乊后对FLASH的0x5555单元写0xAAAA3 O! d" M  Q% |% R- _6 n$ l
*(FlashStart + 0x2AAA) = 0x5555; //需要对FLASH的0x2AAA单元写0x5555
* n5 ~8 S* y8 t7 [7 d+ x9 n*(FlashStart + 0x5555) = 0x1010; //需要对FLASH的0x5555单元写0x1010
" k; H5 c$ T& h4 b9 F& K- c8 pi = 0;
: m$ @7 R; _1 V; s2 I3 Z. _TimeOut = 0;
& G( N- ^  b3 m- T3 f) j; Z1 ]while(i<5)
" n  F% r3 x. K. o! g2 G{
% n: I( Y- e2 m& q6 K# |Data = *(FlashStart + 0x3FFFF);
/ h# L) Y5 U9 {if (Data == 0xFFFF). r: p4 y8 k( p8 |
i++;
( Y6 a7 O3 V2 Z4 [' [7 ~else i=0;
* `& m% F$ P+ i# |( z1 k6 z5 s- d/ fif ( ++TimeOut>0x1000000)$ s0 H, o  w  u! e: |& O
return (TimeOutErr);. h$ B' F1 c1 I. X9 m( ?* P
}
% c8 _8 d9 F% {6 v: zfor (i=0;i<0x40000;i++)! j8 ^' k! H( c7 ]4 h8 v5 O
{1 B- t$ p6 K# X6 O7 I/ K6 D) @
Data = *(FlashStart + i);/ u- u. A# B. |: P! F6 V" O
if (Data !=0xFFFF)  B& g* [' D4 N" G
return (EraseErr);" j/ h; |# U# P! o7 v
}$ `8 t5 a4 w# l8 j8 ?8 s$ ?* q, a0 O
return (EraseOK)
) j3 z# D+ ]6 \8 q- ?2 q为什么i<5,FlashStart + 0x3FFFF,++TimeOut>0x1000000
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!

33

主题

4949

帖子

1万

积分

EDA365特邀版主

Rank: 6Rank: 6

积分
12225
2#
发表于 2013-4-23 20:17 | 只看该作者
能給閃存芯片資料嗎?
# L! T) W5 |6 F! ], w% V, o3 e$ d
0 h- u* F0 J) L+ J{:soso_e132:}
哈士奇是一種連主人都咬的爛狗!

33

主题

4949

帖子

1万

积分

EDA365特邀版主

Rank: 6Rank: 6

积分
12225
3#
发表于 2013-4-23 22:51 | 只看该作者
本帖最后由 超級狗 于 2013-4-23 23:06 编辑 % H" G" J3 u# p$ X

3 D6 q, @, a, Y# c  v應該是一顆 128K x 16 的閃存,Word Address = 0x3FFFF 是最後的位址。
3 k5 ~0 }4 @5 N6 p+ }
! \2 ?( [7 I3 m4 H. z
  • FlashStart + 0x3FFFF" p0 Q' E1 Q; F* H9 c. j7 W3 C
    是閃存最後一個位址,這要看 CPU 定址,因為有的 CPU 定址是 Internal ROM 或 RAM 在前面,所以閃存位址會有一個 Offset,FlashStart 就是 Offset。
  • i < 5
    / Q$ Z" Y# [! G2 c' X3 Y* o( n( Z要讀到 5 次最後一個位址的內容等於 0xFFFF 再往下做,閃存內容被抹除後是 0xFFFF。下一段是檢查 0x00000 ~ 0x3FFFF 整顆閃存是否有被清除乾淨。
  • ++TimeOut > 0x10000005 i, a9 Y+ v: b: ^
    i < 5 的迴圈檢查要設一個計數器,不然閃存有問題無法抹除,程序就會卡死。執行太久,發現最後一個位址都無法清除就不要再做了,回應 return (EraseErr) 告訴主程序閃存有問題。
    , b9 v3 Y1 ~# W/ v" H; A; X9 P3 e( a
. g5 G- E0 z* }" X* l2 S% N" a4 I
  ?2 Q7 a) @1 [
{:soso_e125:}
哈士奇是一種連主人都咬的爛狗!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2024-12-23 09:49 , Processed in 0.054470 second(s), 31 queries , Gzip On.

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

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

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