OpenEdv-开源电子网

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

基于W25Q128的SPI实验例程发现严重问题。数据问题。地址问题。

[复制链接]

9

主题

44

帖子

2

精华

中级会员

Rank: 3Rank: 3

积分
402
金钱
402
注册时间
2014-8-15
在线时间
0 小时
发表于 2015-4-5 12:02:55 | 显示全部楼层 |阅读模式
5金钱
在测试F4的SPI(W25Q128) 实验的时候遇上了点麻烦。
我有两个问题,

①为什么FLASH_SIZE=128*1024*1024;,不应该是FLASH_SIZE=16*1024*1024;么?
②经过测试,我试了两种数据量,当1083个字节时完全没有问题,可是传输量到达1571的时候出问题,写不进去(不提示W25Q128 Write Finished!),当然这两个数字不是固定的,应该是超过了某一个临界值导致这个问题。然后我打开以前F1的例程,发现区别在于W25QXX_Write函数,F1下没有定义新的U8*,如下图:


因为F1的例程只有4096的数组,然后我就尝试F4的例程也就是上面例程的U8*去掉直接用4096的数组作为地址。然后一切正常。
测试过程中出现了问题,我就用printf打印如下:


第一个prinf正常,第二个无语了,是一个负的很大很大的数,完全超过了65535,我知道这里就完全超出了我的知识范围,请大神赐教。我觉得这是个很严重的问题,根本上制约了向W25Q128里写大容量数据。
解决了上面的问题后我尝试些3141个数据,完全写不进去。


printf根本不执行。但是测试W25QXX_Read可以执行到最后一行。缩小数据量就可以。
我觉得还是请原子哥重新测试一下这个程序的大数据量传输吧。

最佳答案

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

回复【2楼】Austin: --------------------------------- 这里有误,确实应该是16*1024*1024才对。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2015-4-5 12:02:56 | 显示全部楼层
回复【2楼】Austin:
---------------------------------
这里有误,确实应该是16*1024*1024才对。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

9

主题

44

帖子

2

精华

中级会员

Rank: 3Rank: 3

积分
402
金钱
402
注册时间
2014-8-15
在线时间
0 小时
 楼主| 发表于 2015-4-5 20:30:32 | 显示全部楼层
我自己解决了,6000+字节读写测试成功。只需要把大数组放到函数外面就行了。这也是奇葩了。还是想请教原子哥为什么非得把大数组放到函数外才行..(我猜写不进去的原因就是跑程序跑飞了,跑到别的地址里面回不去了)。
不过问题一还是请原子哥解答一下①为什么FLASH_SIZE=128*1024*1024;,不应该是FLASH_SIZE=16*1024*1024;么?
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2015-4-5 20:37:56 | 显示全部楼层
回复【2楼】Austin:
---------------------------------
放到函数内用的话用的就是栈空间,默认情况下STM32启动文件的栈空间就是512或者1k字节 ,你直接来了一个6000多的字节肯定放不下,将大数组定义为全局变量的话用的是堆,可用的RAM就很多了!
开往春天的手扶拖拉机
回复

使用道具 举报

9

主题

44

帖子

2

精华

中级会员

Rank: 3Rank: 3

积分
402
金钱
402
注册时间
2014-8-15
在线时间
0 小时
 楼主| 发表于 2015-4-6 09:26:51 | 显示全部楼层
回复【3楼】zuozhongkai:
---------------------------------
果然是这样啊,了解。能否赐教这是哪方面的知识?数据结构吗
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2015-4-6 11:38:45 | 显示全部楼层
回复【5楼】Austin:
---------------------------------
这个不是数据结构的知识,应该数据微机原理的知识吧
开往春天的手扶拖拉机
回复

使用道具 举报

9

主题

44

帖子

2

精华

中级会员

Rank: 3Rank: 3

积分
402
金钱
402
注册时间
2014-8-15
在线时间
0 小时
 楼主| 发表于 2015-4-6 15:31:31 | 显示全部楼层
回复【6楼】zuozhongkai:
---------------------------------
受教!
回复

使用道具 举报

9

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
154
金钱
154
注册时间
2014-12-2
在线时间
21 小时
发表于 2015-4-7 08:03:50 | 显示全部楼层
我想问一下为什么不是128*1024*1024?
回复

使用道具 举报

9

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
154
金钱
154
注册时间
2014-12-2
在线时间
21 小时
发表于 2015-4-7 10:20:19 | 显示全部楼层
看了一下手册,确实是16m字节的,128应该是MB
回复

使用道具 举报

15

主题

46

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
283
金钱
283
注册时间
2014-11-21
在线时间
48 小时
发表于 2015-4-7 13:34:00 | 显示全部楼层
回复【9楼】hh406:
---------------------------------
回复【9楼】hh406:
---------------------------
16MB=128Mb
回复

使用道具 举报

9

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
154
金钱
154
注册时间
2014-12-2
在线时间
21 小时
发表于 2015-4-7 13:57:21 | 显示全部楼层
回复【10楼】yzhanghe:
---------------------------------
谢谢,呵呵
回复

使用道具 举报

0

主题

5

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
231
金钱
231
注册时间
2016-8-3
在线时间
31 小时
发表于 2016-10-4 14:06:45 | 显示全部楼层
正点原子 发表于 2015-4-5 12:02
回复【2楼】Austin:
---------------------------------
这里有误,确实应该是16*1024*1024才对。

那怎么从最后100Byte写入数据,还能够写进去,而且读出来的数据居然和写进去的数据一致
回复

使用道具 举报

0

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
122
金钱
122
注册时间
2016-8-3
在线时间
42 小时
发表于 2016-10-7 16:01:48 | 显示全部楼层
370251047 发表于 2016-10-4 14:06
那怎么从最后100Byte写入数据,还能够写进去,而且读出来的数据居然和写进去的数据一致

我也比较好奇为啥FLASH_SIZE为128*1024*1024时,FLASH_SIZE-100的地址不是超出W25Q128的范围了么,为啥正常正常呢?
回复

使用道具 举报

3

主题

55

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
318
金钱
318
注册时间
2017-1-27
在线时间
34 小时
发表于 2017-3-10 22:12:54 | 显示全部楼层
liyuanxh 发表于 2016-10-7 16:01
我也比较好奇为啥FLASH_SIZE为128*1024*1024时,FLASH_SIZE-100的地址不是超出W25Q128的范围了么,为啥正 ...

W25Q128的起止地址是 000000h——FFFFFFh 正好的
回复

使用道具 举报

11

主题

85

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2016-3-16
在线时间
15 小时
发表于 2017-3-22 18:28:25 | 显示全部楼层
我现在把用户RFID的卡号和密码全部事先存入W25Q128中,当有卡进入RC522的天线区域内时读取卡号和事先存储的所有卡号进行对比, 现在我不太明白怎么样寻找flash中和读到的卡号一样的卡号
回复

使用道具 举报

5

主题

35

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
298
金钱
298
注册时间
2017-12-23
在线时间
76 小时
发表于 2022-1-11 19:22:19 | 显示全部楼层
学习了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-26 06:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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