不知道为什么,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 的数据看寄存器,发现出 数据量的变化外,其他寄存器的值都是完全一致的,
为神马会出现这样的情况 ?????????????????????????????????????????
发布的帖子如何删除啊 ??? 终于找到了问题所在了,原来是 dma的 数据长度寄存器是 16bit,他奶奶的,我看寄存器定义是 32bit,实际使用只使用到了 低 16bit的,所以数据长度大于65536-1 时,就不行了,哎;P;P;P;P:lol:lol:lol:lol:lol:lol 如果需要一次性读取比较大的数据量的话,需要分包读取才行
页:
[1]