OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 10516|回复: 4

W25Q64写数据的疑问,为什么要对全扇区?

[复制链接]

3

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2014-7-19
在线时间
30 小时
发表于 2014-9-3 23:05:10 | 显示全部楼层 |阅读模式
5金钱
原子哥看下代码:
    while(1)
    {    
        SPI_Flash_Read(SPI_FLASH_BUF,secpos*4096,4096);//读出整个扇区的内容
        for(i=0;i<secremain;i++)//校验数据
        {
            if(SPI_FLASH_BUF[secoff+i]!=0XFF)break;//需要擦除        
        }
        if(i<secremain)//需要擦除
        {
            SPI_Flash_Erase_Sector(secpos);//擦除这个扇区
            for(i=0;i<secremain;i++)       //复制
            {
                SPI_FLASH_BUF[i+secoff]=pBuffer;      
            }

红色字体部。为什么要读出整个扇区的内容,读一部分不可以么,比如只检测50字节的内容?
读出整个扇区不是使写速度变慢了么

最佳答案

查看完整内容[请看2#楼]

因为要判断需不需要擦除。。。。 你也可以读只需要写的区域出来,这样确实会快一些。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-9-3 23:05:11 | 显示全部楼层
因为要判断需不需要擦除。。。。
你也可以读只需要写的区域出来,这样确实会快一些。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-9-4 12:39:37 | 显示全部楼层
flash擦除是整个扇区擦除的,如果你写入数据的小于4096,就会将之前保存有的数据全部擦除掉了,所以。。。你懂得
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

3

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2014-7-19
在线时间
30 小时
 楼主| 发表于 2014-9-4 14:45:54 | 显示全部楼层
回复【3楼】Badu_Space:
---------------------------------
谢谢
回复

使用道具 举报

3

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2014-7-19
在线时间
30 小时
 楼主| 发表于 2014-9-4 14:46:09 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
谢谢
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-1 23:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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