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

2019-07-20 16:00发布

在测试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可以执行到最后一行。缩小数据量就可以。
我觉得还是请原子哥重新测试一下这个程序的大数据量传输吧。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
正点原子
1楼-- · 2019-07-20 17:46
回复【2楼】Austin:
---------------------------------
这里有误,确实应该是16*1024*1024才对。
Austin
2楼-- · 2019-07-20 21:00
我自己解决了,6000+字节读写测试成功。只需要把大数组放到函数外面就行了。这也是奇葩了。还是想请教原子哥为什么非得把大数组放到函数外才行..(我猜写不进去的原因就是跑程序跑飞了,跑到别的地址里面回不去了)。
不过问题一还是请原子哥解答一下①为什么FLASH_SIZE=128*1024*1024;,不应该是FLASH_SIZE=16*1024*1024;么?
taizonglai
3楼-- · 2019-07-21 02:39
 精彩回答 2  元偷偷看……
Austin
4楼-- · 2019-07-21 06:01
回复【3楼】zuozhongkai:
---------------------------------
果然是这样啊,了解。能否赐教这是哪方面的知识?数据结构吗
taizonglai
5楼-- · 2019-07-21 08:06
回复【5楼】Austin:
---------------------------------
这个不是数据结构的知识,应该数据微机原理的知识吧
Austin
6楼-- · 2019-07-21 10:23
回复【6楼】zuozhongkai:
---------------------------------
受教!

一周热门 更多>