野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10299|回复: 5

关于flash擦除,怎么只擦除指定地址

[复制链接]
发表于 2015-6-8 10:31:49 | 显示全部楼层 |阅读模式
spi——flash,怎么只擦除指定地址呢,如0xffff12——0xffff17, 擦除.png

回复

使用道具 举报

发表于 2015-6-8 10:38:40 | 显示全部楼层
不知道你的图想说明什么???
SPI-Flash擦除指令有三条(芯片本身性质,改不了的),扇区擦除,块擦除,还有整片擦除,整片擦除不用讲了,就是擦除整片
至于扇区还有块擦除的话你就要指定地址了,不然哪知道你要擦除哪里
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-8 10:51:47 | 显示全部楼层
亽亼 发表于 2015-6-8 10:38
不知道你的图想说明什么???
SPI-Flash擦除指令有三条(芯片本身性质,改不了的),扇区擦除,块擦除, ...

那flash,可以不擦除原地址的数据,在这个地址上写数据吗,如在0xffff01上写了0x01,我要写0x02到0xffff01里面,我要擦除0xffff01,再写吧,不然数据有问题,我就想擦除0xffff01,不影响其他的地址数据,但是扇区擦除是4k
回复 支持 反对

使用道具 举报

发表于 2015-6-8 11:27:42 | 显示全部楼层
这个是芯片本身特性决定的事,就是没有单独一个地址的擦除指令,只有上面那三个擦除指令
对于你所要实现的功能,只有先把整个扇区(4K)的先读出来缓存起来,然后擦除该扇区,再然后就是在你缓存起来的数组中改变你的数据,然后再写入到Flash中
简单一句话就是先读出来修改,然后擦除,然后再写入
回复 支持 反对

使用道具 举报

发表于 2015-6-8 11:28:32 | 显示全部楼层
星空的sai 发表于 2015-6-8 10:51
那flash,可以不擦除原地址的数据,在这个地址上写数据吗,如在0xffff01上写了0x01,我要写0x02到0xffff0 ...

只能4k读写,如果你只改一个地址的内容也要擦写整个扇区,你可以在擦除前把那个扇区的数据先读出来,然后修改你要改写的位置,再把整个4k数据写回去
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-11 10:47:40 | 显示全部楼层
flyleaf 发表于 2015-6-8 11:28
只能4k读写,如果你只改一个地址的内容也要擦写整个扇区,你可以在擦除前把那个扇区的数据先读出来,然后 ...

我就是这样解决的,擦完再把有用的写进去
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-26 06:24 , Processed in 0.030265 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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