打印

AT32F435VMT7基于FAL+QSPI驱动W25Q128。连续读取超过512K字节报错

[复制链接]
5120|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
li460135301|  楼主 | 2023-5-22 14:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用QSPI驱动W25Q128.驱动应该没问题。但是读取的时候,数据超过512K就会失败。
512K以内就正常,1M就失败。
我把FLASH分区,一个512K分区,一个1M分区,同时跑fal bench。结果如下:
```

msh />fal bench 4096 yes
Erasing 524288 bytes data, waiting...
Erase benchmark success, total time: 1.896S.
Writing 524288 bytes data, waiting...
Write benchmark success, total time: 2.048S.
Reading 524288 bytes data, waiting...
Read benchmark success, total time: 0.144S.
msh />fal probe update2
Probed a flash partition | update2 | flash_dev: norflash0 | offset: 1048576 | len: 1048576 |.
msh />fal bench 4096 yes
Erasing 1048576 bytes data, waiting...
Erase benchmark success, total time: 3.844S.
Writing 1048576 bytes data, waiting...
Write benchmark success, total time: 4.096S.
Reading 1048576 bytes data, waiting...
585728 3057 f1 ff.
585728 3058 f2 ff.
585728 3059 f3 ff.
...
...
585728 4090 fa ff.
585728 4091 fb ff.
585728 4092 fc ff.
585728 4093 fd ff.
585728 4094 fe ff.
Data check ERROR! Please check you flash by other command.
Read benchmark has an error. Error code: -1.
This operate has an error. Error code: -1.
msh />
```

不知道什么原因。
而且分区擦除和写入都成功了,读取失败了!
```
msh />sf probe qspi20
[I/SFUD] Find a Winbond flash chip. Size is 16777216 bytes.
[I/SFUD] sf_cmd flash device is initialize success.
[I/SFUD] Probe SPI flash sf_cmd by SPI device qspi20 success.
16 MB sf_cmd is current selected device.
msh />sf bench yes
Erasing the sf_cmd 16777216 bytes data, waiting...
Erase benchmark success, total time: 41.318S.
Writing the sf_cmd 16777216 bytes data, waiting...
Write benchmark success, total time: 65.537S.
Reading the sf_cmd 16777216 bytes data, waiting...
Data check ERROR! Please check you flash by other command.
Read sf_cmd failed, already rd for 788480 bytes, read 256 each time
Read benchmark has an error. Error code: 3.
This flash operate has an error. Error code: 3.
```

我单独做sf bench测试正片flash,也失败了,但是,我测试fal read write少量数据读写都正常。用sf 的read write也正常。


使用特权

评论回复
沙发
林堪堪| | 2023-5-25 09:49 | 只看该作者
可以把代码发出来吗?我这边跑一下看看。

使用特权

评论回复
板凳
caizhiwei| | 2023-5-28 18:04 | 只看该作者
rtt的后遗症还挺多的

使用特权

评论回复
地板
li460135301|  楼主 | 2023-5-30 00:34 | 只看该作者
林堪堪 发表于 2023-5-25 09:49
可以把代码发出来吗?我这边跑一下看看。

之前的测试是自己飞线测试的,我猜测应该是由于qspi速度较快,飞线本身没有等长布线,倒是qspi读数据出错。后来自己做了一块测试样板,打板回来测试之后,发现没有该问题。所以,估计是飞线导致的。但是,发现AT32F435的qspi速度有点慢,不知道是什么原因,详情可见我的帖子,如果可以帮忙验证的话,感激不尽。https://bbs.21ic.com/icview-3305454-1-1.html

使用特权

评论回复
5
084425| | 2023-5-30 22:38 | 只看该作者
li460135301 发表于 2023-5-30 00:34
之前的测试是自己飞线测试的,我猜测应该是由于qspi速度较快,飞线本身没有等长布线,倒是qspi读数据出错 ...

查看一下手上芯片版本是A版还是B版,对照勘误手册qspi部分,有个缓存bypass功能,关闭后可提升性能

使用特权

评论回复
6
li460135301|  楼主 | 2023-6-2 16:59 | 只看该作者
本帖最后由 li460135301 于 2023-6-2 17:07 编辑
084425 发表于 2023-5-30 22:38
查看一下手上芯片版本是A版还是B版,对照勘误手册qspi部分,有个缓存bypass功能,关闭后可提升性能 ...

是直接把bypass位置1就可以了吗?像下文一样。测试了以下,芯片上电bypass为0,看勘误表上写的是置1关闭,但是置1之后和清零没有任何区别!是不是操作有问题?(读取了芯片是A版本)
    at32_msp_qspi_init(qspi_bus->qspi_x);

    /* switch to cmd port */
    qspi_xip_enable(qspi_bus->qspi_x, FALSE);

    /* 关闭缓存bypass功能 */
    qspi_xip_cache_bypass_set(qspi_bus->qspi_x, TRUE);

    /* get clocks and config qspi clock div */
    crm_clocks_freq_get(&clocks);


使用特权

评论回复
7
febgxu| | 2023-6-6 13:00 | 只看该作者
是不是地址有问题呢?              

使用特权

评论回复
8
loutin| | 2023-6-6 13:19 | 只看该作者
正常操作读写没有问题?              

使用特权

评论回复
9
yorkbarney| | 2023-6-6 13:25 | 只看该作者
降低QSPI的速率呢?              

使用特权

评论回复
10
ccook11| | 2023-6-6 13:30 | 只看该作者
可以采用屏蔽分离电源、优化PCB布局等方式来提高接口稳定性和可靠性。

使用特权

评论回复
11
benjaminka| | 2023-6-6 14:11 | 只看该作者
支持高速数据传输?              

使用特权

评论回复
12
saservice| | 2023-6-6 14:24 | 只看该作者
在所有需要配置地址长度的位置都要将QSPI_ADDRESS_32_BITS -> QSPI_ADDRESS_24_BITS。

使用特权

评论回复
13
adolphcocker| | 2023-6-6 14:47 | 只看该作者
需要根据芯片规格和数据手册,了解芯片的最大读取速度和建议的读取时间间隔,并进行相应的设置和测试。

使用特权

评论回复
14
ingramward| | 2023-6-6 14:53 | 只看该作者
保证SPI或QSPI接口的正常工作,避免接口电平失真、信号干扰等问题。

使用特权

评论回复
15
hearstnorman323| | 2023-6-6 14:59 | 只看该作者
之前用过一个W25Q128,部分地址错误。

使用特权

评论回复
16
usysm| | 2023-6-6 15:11 | 只看该作者
在读取数据时,可以将大块数据分成小块进行读取。

使用特权

评论回复
17
bartonalfred| | 2023-6-6 17:05 | 只看该作者
可能会因为数据传输速度过快而导致数据传输不稳定。

使用特权

评论回复
18
ccook11| | 2023-6-6 17:15 | 只看该作者
需要注意读取数据时的地址、起始位置和长度等参数设置,以确保正确读取数据。

使用特权

评论回复
19
sesefadou| | 2023-6-6 17:31 | 只看该作者
延长读取时间间隔               

使用特权

评论回复
20
lzmm| | 2023-6-8 07:29 | 只看该作者
在驱动W25Q128时,如果连续读取超过512K字节会报错,可能是由于缓冲区溢出引起的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

18

帖子

1

粉丝