野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14642|回复: 3

关于外部flash读写出错的问题

[复制链接]
发表于 2016-11-15 14:02:29 | 显示全部楼层 |阅读模式
本帖最后由 李海林 于 2016-11-15 14:04 编辑

一个flash例程的问题
擦除两个扇区并写入数据
  1.         SPI_Erase_Sector(0);
  2.         for(i=0;i<25;i++)
  3.         {
  4.                 writeBuff[i]=i+25;
  5.         }
  6.         SPI_Write_Data(0,writeBuff,25);

  7.         SPI_Erase_Sector(1);
  8.         for(i=0;i<25;i++)
  9.         {
  10.                 writeBuff[i]=i;
  11.         }
  12.         SPI_Write_Data(4096,writeBuff,25);
复制代码

读出数据
  1.         printf("\r\n 这是一个SPI-FLASH读写测试例程 \r\n");
  2.         SPI_Read_Data(0,readBuff,4096);
  3.         for(i=0;i<40;i++)
  4.         {
  5.                 printf("0x%x ",readBuff[i]);
  6.                 if(i%10==0)
  7.                         printf("\r\n");
  8.         }
  9.         
  10.         printf("\r\n 这是一个SPI-FLASH读写测试例程 \r\n");
  11.         SPI_Read_Data(4096,readBuff,4096);
  12.         for(i=0;i<40;i++)
  13.         {
  14.                 printf("0x%x ",readBuff[i]);
  15.                 if(i%10==0)
  16.                         printf("\r\n");
  17.         }
复制代码

输出结果应该是QQ1图片

可是实际的输出结果为QQ2图片

为什么?
QQ1.png
QQ2.png
回复

使用道具 举报

发表于 2016-11-15 14:11:40 | 显示全部楼层
你写入的代码写了之后又擦除,再重新写入0 1 2 3.。没有问题啊,最后读出来的就是这样
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-15 19:49:00 | 显示全部楼层
本帖最后由 李海林 于 2016-11-15 19:56 编辑
flyleaf 发表于 2016-11-15 14:11
你写入的代码写了之后又擦除,再重新写入0 1 2 3.。没有问题啊,最后读出来的就是这样

我是先擦0 扇区,写入地址是0-24,又擦1扇区,写入地址是4096-4120,然后读0扇区,再读1扇区。没有再把0扇区擦除呀
回复 支持 反对

使用道具 举报

发表于 2016-11-16 08:47:28 | 显示全部楼层
李海林 发表于 2016-11-15 19:49
我是先擦0 扇区,写入地址是0-24,又擦1扇区,写入地址是4096-4120,然后读0扇区,再读1扇区。没有再把0 ...

看函数的说明,它的输入参数是地址,不是扇区号,输入1地址也是擦除扇区0,要擦除扇区1要输入4096
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-29 14:04 , Processed in 0.038039 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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