OpenEdv-开源电子网

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

W25Q FLASH芯片不能正常读写问题

[复制链接]

11

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
174
金钱
174
注册时间
2018-2-24
在线时间
44 小时
发表于 2021-12-29 15:49:15 | 显示全部楼层 |阅读模式
8金钱
     求助一下用过W25Q芯片的大佬。我想通过串口接收浮点数据,一次100个,每个数据格式为000.0000,数据之间有空格。接收到以后将写入FLASH。
然后再读出来,还原为浮点数。部分代码如下:

    写FLASH:

         if(USART_RX_STA&0x8000)//收到数据了
                {   
                  if(i<102)
                   {   
                        i++;//标记接收到的数据次数,每次只接收101个
                        len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
                        printf("第%d次写W25Q64....",i);
                        W25QXX_Write((u8*)USART_RX_BUF,FLASH_SIZE-100000+len*i,len);        //从倒数第100000个地址处开始,写入len长度的数据
                        printf("W25Q64数据写入完成!");    //提示传送完成
                        USART_RX_STA=0;//清空接收数据状态标记                             
                  }

     读FLASH:
                n=(int)(*p*2)*101+((int)*q)+1;              //表格,二维坐标转一维
                W25QXX_Read((u8 *)data,FLASH_SIZE-100000+n*9,9);                    //从倒数第100000个地址处开始,往后偏移n*9个字节,读出9个字节(1个数据),放入data
                cpr=(data[0]-48)*100+(data[1]-48)*10+(data[2]-48)+(data[4]-48)*0.1+(data[5]-48)*0.01+(data[6]-48)*0.001+(data[7]-48)*0.0001; //减48是为了将ASCⅡ码转为十进制
                printf("输出为: %.4f \r\n",cpr);          //显示读到的数据


      但是串口打印出来读出的结果是28888.9903这种非常大的数字,不是我写的内容。一直未找到原因,求高手指教!非常感谢!


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

12

主题

3387

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8638
金钱
8638
注册时间
2020-5-11
在线时间
4090 小时
发表于 2021-12-29 16:05:11 | 显示全部楼层
先别管浮点、表格,直接往指定位置存入一串字符串,再读出来,看对不对。别只觉得程序有问题,万一芯片坏了呢。
专治疑难杂症
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2021-12-29 21:44:09 | 显示全部楼层
任何数都是u8存的 串口也是 结构体打包下直接读写就行了 别转换了
回复

使用道具 举报

11

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
174
金钱
174
注册时间
2018-2-24
在线时间
44 小时
 楼主| 发表于 2022-1-4 11:57:08 | 显示全部楼层
LcwSwust 发表于 2021-12-29 16:05
先别管浮点、表格,直接往指定位置存入一串字符串,再读出来,看对不对。别只觉得程序有问题,万一芯片坏了 ...

用例程测试了一下,目前是能写,但读出来啥也没有。芯片是W25Q64,怀疑是不是定义容量为FLASH_SIZE=64*1024*1024;时FLASH已经搞坏了。
回复

使用道具 举报

5

主题

134

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1793
金钱
1793
注册时间
2015-3-13
在线时间
273 小时
发表于 2022-1-12 21:19:59 | 显示全部楼层
楼主的问题解决了吗?    我也是W25Q128只能读不能写?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-20 16:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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