xinxinsky 发表于 2024-11-26 10:11:01

关于QSPI_DLR寄存器的一点疑问

最近研究QSPI相关流程, 发现一个问题比较疑惑, QSPI的FIFO最大为32字节, 看例程收发也是被分成了按32字节进行多次收发, 那么QSPI_DLR做成16位的长度还有意义吗?

我尝试通过判断SR1, SR2相关寄存器来持续读取FIFO, 结果是大于32字节的情况下读取数据是0, 或者有其他方法可以持续读取大量数据?

DebugLab 发表于 2024-11-26 10:29:51

大量数据可以使用P2P DMA

xinxinsky 发表于 2024-11-26 11:03:23

DebugLab 发表于 2024-11-26 10:29
大量数据可以使用P2P DMA

例程中, DMA也是32字节发起一次通信请求, 而非连续读取, 尝试直接DMA连续读取会出错

乘风飞扬 发表于 2024-11-26 12:05:11

QSPI_DLR是累计需要收发的数据长度。
FIFO是收发数据队列,用于提高收发速度。

xinxinsky 发表于 2024-11-26 13:09:00

乘风飞扬 发表于 2024-11-26 12:05
QSPI_DLR是累计需要收发的数据长度。
FIFO是收发数据队列,用于提高收发速度。 ...
进行数据读写之前是需要设置QSPI_DLR值的,
如果超过32字节, 那么从FIFO中读取超出的值为0,
分包读取的话每次该寄存器实际设置的值是不会超过32的
数据手册中的流程:



乘风飞扬 发表于 2024-11-26 17:09:32

本帖最后由 乘风飞扬 于 2024-11-26 17:12 编辑

xinxinsky 发表于 2024-11-26 13:09
进行数据读写之前是需要设置QSPI_DLR值的,
如果超过32字节, 那么从FIFO中读取超出的值为0,
分包读取的话 ...
FIFO就像商场里的自动扶梯,可以加快上下楼的速度,上面最多可以同时站32个人,如果上楼的人总共有100个(DLR),那就排队上扶梯,比爬楼梯的速度快。

xinxinsky 发表于 2024-11-26 17:35:32

乘风飞扬 发表于 2024-11-26 17:09
FIFO就像商场里的自动扶梯,可以加快上下楼的速度,上面最多可以同时站32个人,如果上楼的人总共有100个(D ...
对, 我是这样理解的, 但是按照这个流程去操作的话, 结果是读取不出目标数据的,
另外我按照这个流程是可以一次性写入超过32字节数据的, 但是读取不行

乘风飞扬 发表于 2024-11-26 18:02:04

xinxinsky 发表于 2024-11-26 17:35
对, 我是这样理解的, 但是按照这个流程去操作的话, 结果是读取不出目标数据的,
另外我按照这个流程是可以 ...

读取数据也要到传输目的地读取,而不是在FIFO里面读,FIFO最多只存放了正在传输的32字节。

xinxinsky 发表于 2024-11-26 18:29:12

乘风飞扬 发表于 2024-11-26 18:02
读取数据也要到传输目的地读取,而不是在FIFO里面读,FIFO最多只存放了正在传输的32字节。 ...

设置了也无法一次性读取到超过32字节的...

BeHappy 发表于 2025-1-18 01:36:03

<p>想问下,如果待读取的数据量足够多,在QSPI的FIFO已满的情况下,每从QSPI_DR读出一个字节,那QSPI的FIFO会被自动填充一个字节吗?还是说,在把QSPI的FIFO全部读出并且没有发起下一次读操作命令序列之前,QSPI的FIFO将不会自动填充?</p>
页: [1]
查看完整版本: 关于QSPI_DLR寄存器的一点疑问