单片机/MCU论坛
直播中

王锦霞

7年用户 873经验值
私信 关注
[问答]

为什么无法在Psoc6上执行DMA链接?

我正在尝试使用 DMA 读取 ADC 输出寄存器并将其写入内存中的某个位置。 我想通过将 DMA 描述符链接到自己来做到这一点。 这在启动时对已启动的描述符起作用,但无法自行链接。 我收到 “CY_DMA_INTR_CAUSE_DST_BUS_ERROR” 错误。我附上了下面的代码。您可以忽略与WiFi和TCP连接相关的所有代码。计划将由 DMA 写入的数据传输到 TCP 服务器,但这部分尚未完成。

回帖(1)

golabs

2024-2-26 15:58:52
在PSoC6上无法执行DMA链接的问题可能有多种可能原因。以下是一些您可能想要检查的问题:

1. 内存访问权限:请确保您正确配置了DMA的目标内存地址,并且该地址具有正确的读写权限。

2. 内存对齐:某些DMA控制器要求目标内存地址按特定的大小进行对齐。请查看PSoC6的DMA文档以检查所需的对齐方式。

3. 描述符设置:在自行链接DMA描述符时,确保您正确配置了描述符的链接字段,以使其指向适当的下一个描述符。这样,每个描述符都将按顺序链接,以形成一个循环。

4. DMA通道配置:请确保您正确配置了DMA通道的相关参数,例如传输宽度、传输计数等。这些参数应与ADC输出寄存器和目标内存之间的数据匹配。

5. 中断处理:您引用的错误"CY_DMA_INTR_CAUSE_DST_BUS_ERROR"是指目标总线错误。这可能意味着DMA尝试访问的目标地址是无效的或不可访问的。请确保您在中断处理程序中正确处理DMA中断,并仅在所有传输完成后才修改DMA描述符。

如果您仍然无法解决问题,请提供更多的代码和详细的问题描述,以便我们更好地理解和帮助您解决问题。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分