OpenEdv-开源电子网

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

使用原子哥的关于spi读写W25Q16外设代码和预想中不太一样

[复制链接]

10

主题

161

帖子

0

精华

高级会员

Rank: 4

积分
750
金钱
750
注册时间
2019-9-5
在线时间
134 小时
发表于 2020-3-17 10:00:43 | 显示全部楼层 |阅读模式
5金钱
我用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};
Y7QEU8M4N}1}ATHA1DB[$`5.png

最佳答案

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

是我吧读取地址搞错了,在W25Q16里面一个h能存一个数据,我之前以为一个0xff储存一个数剧,所以将读取地址弄错了。直接提跳过了256个字节读取数据,所以才出错。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

161

帖子

0

精华

高级会员

Rank: 4

积分
750
金钱
750
注册时间
2019-9-5
在线时间
134 小时
 楼主| 发表于 2020-3-17 10:00:44 | 显示全部楼层
正点原子 发表于 2020-3-18 01:04
读取有问题,是不是你写入就没写正确?或者写函数有bug? 先单个地址读写试试看正常不?

是我吧读取地址搞错了,在W25Q16里面一个h能存一个数据,我之前以为一个0xff储存一个数剧,所以将读取地址弄错了。直接提跳过了256个字节读取数据,所以才出错。
回复

使用道具 举报

10

主题

161

帖子

0

精华

高级会员

Rank: 4

积分
750
金钱
750
注册时间
2019-9-5
在线时间
134 小时
 楼主| 发表于 2020-3-17 10:04:36 | 显示全部楼层
读写地址改成0x001000的话,读出数据全是0xff,只有使用每块的块地址从头往后读才能读出数据
回复

使用道具 举报

10

主题

161

帖子

0

精华

高级会员

Rank: 4

积分
750
金钱
750
注册时间
2019-9-5
在线时间
134 小时
 楼主| 发表于 2020-3-17 17:49:01 | 显示全部楼层
帖子别沉下去,让大佬看见
}3_PP$}AZD{S%0XEHP]M~$I.png
回复

使用道具 举报

57

主题

1680

帖子

3

精华

资深版主

Rank: 8Rank: 8

积分
4306
金钱
4306
注册时间
2018-6-30
在线时间
808 小时
发表于 2020-3-17 17:59:46 | 显示全部楼层
帮顶!
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2020-3-18 01:04:54 | 显示全部楼层
读取有问题,是不是你写入就没写正确?或者写函数有bug? 先单个地址读写试试看正常不?
回复

使用道具 举报

10

主题

161

帖子

0

精华

高级会员

Rank: 4

积分
750
金钱
750
注册时间
2019-9-5
在线时间
134 小时
 楼主| 发表于 2020-3-18 10:26:19 | 显示全部楼层

解决了谢谢
回复

使用道具 举报

57

主题

1680

帖子

3

精华

资深版主

Rank: 8Rank: 8

积分
4306
金钱
4306
注册时间
2018-6-30
在线时间
808 小时
发表于 2020-3-18 17:11:25 | 显示全部楼层
黄faxian 发表于 2020-3-17 10:00
是我吧读取地址搞错了,在W25Q16里面一个h能存一个数据,我之前以为一个0xff储存一个数剧,所以将读取地 ...

原来如此
业精于勤荒于嬉;行成于思毁于随!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-22 23:44

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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