hpdell 发表于 2017-6-4 19:02:17

不知道为什么,qspi 使用dma模式一次读取数据量大于128KB ...

本帖最后由 hpdell 于 2017-6-5 23:42 编辑

不知道为什么,qspi 使用dma模式,一次读取数据量大于128KB 就出错,

如果把 大于 128KB 的数据量 分包读取,完全没有任何问题;

大于128KB的数据量,跟踪发现是 dma 的接收数据长度赋值为0,不知是为何赋值失败 ??


跟踪发现最终是没有给dam的数据长度赋值 ???

具体如下:

128KB 数据长度赋值跟踪,结果正常,


128KB 的数据量赋值成功





512KB dma的数据长度赋值为 0???






512KB 的数据量赋值失败 ???



不知道为何 > 128KB 的数据值怎么就赋值不成功 ???????????

dma的数据长度的数据类型是__IO uint32_t,数据量也没有超过这个数量类型,怎么会不成功 ??

使用的库版本:

* @file    stm32f7xx_hal.c
* @authorMCD Application Team
* @version V1.2.2
* @date    14-April-2017
* @brief   HAL module driver.
*          This is the common part of the HAL initialization


*********************************************************************************************
*********************************************************************************************

从下图的 128KB 与 512KB 的数据看寄存器,发现出 数据量的变化外,其他寄存器的值都是完全一致的,

为神马会出现这样的情况 ?????????????????????????????????????????











hpdell 发表于 2017-6-5 23:43:11


发布的帖子如何删除啊 ???

hpdell 发表于 2017-6-6 10:30:54

终于找到了问题所在了,原来是 dma的 数据长度寄存器是 16bit,他奶奶的,我看寄存器定义是 32bit,实际使用只使用到了 低 16bit的,所以数据长度大于65536-1 时,就不行了,哎;P;P;P;P:lol:lol:lol:lol:lol:lol

hpdell 发表于 2017-6-6 10:31:21

如果需要一次性读取比较大的数据量的话,需要分包读取才行
页: [1]
查看完整版本: 不知道为什么,qspi 使用dma模式一次读取数据量大于128KB ...