硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3481|回复: 5
收起左侧

[有问必答] 求教:关于W25Q16无法按页地址读写问题

[复制链接]

4

主题

23

回帖

35

积分

新手上路

积分
35
发表于 2020-3-17 10:44:01 | 显示全部楼层 |阅读模式
我用STM32F030C8外接w25q16做项目,程序开始前我调试过代码能读取到W25Q16的id值表示焊接没出错。然后我要输入的数据比较多大概81个数字为一个组,共有10个组,而W25Q16每块只能存256个数字(0xff),为了不让数字中断也为了超找方便,我将十个组分成4分(3331),使用“void W25QXX_Write_Page(uint8_t* pBuffer,uint32_t WriteAddr,uint16_t NumByteToWrite)”函数,然后使用“void W25QXX_Read(uint8_t* pBuffer,uint32_t ReadAddr,uint16_t NumByteToRead)”读取数据。之后我发现两个问题:1读取的时候我只能从每个块的首地址开始往后读,不能使用页地址读。2每次读取的时候第一个和第二个数据都时255.
按资料图所说,w25q16应该有63块,每块有256页,每页存一个数据才对,那我应该可以按照页地址读写数据才对,如果我有错,请问要如何才能按照页地址读写数据
我按照块的首地址读写(81*3 = 243)数据的时候,读写形参中的WriteAddr 和 ReadAddr都是0x000000,比如写入数据数据 mcu_w25q16_bufff[243] = {0,1,2,3,---------  7,8,9};那么读出数据就是
w25q16_mcu_buff[243] = {0xff,0xff,0,1,2,3,---------7};数组扩大的画w25q16_mcu_buff[246] = {0xff,0xff,0,1,2,3----------7,8,9,0xff};

W25Q16资料

W25Q16资料

读写函数

读写函数
回复

使用道具 举报

4

主题

23

回帖

35

积分

新手上路

积分
35
 楼主| 发表于 2020-3-17 11:10:07 | 显示全部楼层
我用STM32F030C8外接w25q16做项目,程序开始前我调试过代码能读取到W25Q16的id值表示焊接没出错。然后我要输入的数据比较多大概81个数字为一个组,共有10个组,而W25Q16每块只能存256个数字(0xff),为了不让数字中断也为了超找方便,我将十个组分成4分(3331),使用“void W25QXX_Write_Page(uint8_t* pBuffer,uint32_t WriteAddr,uint16_t NumByteToWrite)”函数,然后使用“void W25QXX_Read(uint8_t* pBuffer,uint32_t ReadAddr,uint16_t NumByteToRead)”读取数据。之后我发现两个问题:1读取的时候我只能从每个块的首地址开始往后读,不能使用页地址读。2每次读取的时候第一个和第二个数据都时255. 按资料图所说,w25q16应该有63块,每块有256页,每页存一个数据才对,那我应该可以按照页地址读写数据才对,如果我有错,请问要如何才能按照页地址读写数据 我按照块的首地址读写(81*3 = 243)数据的时候,读写形参中的WriteAddr 和 ReadAddr都是0x000000,比如写入数据数据 mcu_w25q16_bufff[243] = {0,1,2,3,---------  7,8,9};那么读出数据就是 w25q16_mcu_buff[243] = {0xff,0xff,0,1,2,3,---------7};数组扩大的画w25q16_mcu_buff[246] = {0xff,0xff,0,1,2,3----------7,8,9,0xff};
回复

使用道具 举报

4

主题

23

回帖

35

积分

新手上路

积分
35
 楼主| 发表于 2020-3-17 11:11:33 | 显示全部楼层
图片在这                  
@H6DH``2G0NQEU47$BY2Z}B.png
Y7QEU8M4N}1}ATHA1DB[$`5.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107431
QQ
发表于 2020-3-17 12:56:35 | 显示全部楼层
F1的话,使用我们的吧,此贴:
http://www.armbbs.cn/forum.php?m ... &extra=page%3D1
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107431
QQ
发表于 2020-3-17 12:56:38 | 显示全部楼层
F1的话,使用我们的吧,此贴:
http://www.armbbs.cn/forum.php?m ... &extra=page%3D1
回复

使用道具 举报

4

主题

23

回帖

35

积分

新手上路

积分
35
 楼主| 发表于 2020-3-18 10:31:29 | 显示全部楼层
已经解决了,谢谢各位。是我自己弄错了。在W25Q16里面一个h可以储存一个数据,但是我一直以为是一个0xff储存一个数据,所以在在选择读取地址时总是跳过256位读取。导致读出空白。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-31 10:20 , Processed in 0.299746 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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