工具/软件:
我一直在尝试使用 DMA 外设、但遇到了一些问题。
可以看到地址配置相应、但没有传输数据。
我的目标:每个 ADCA1事件用于触发从源地址到目标地址的 DMA 复制。
我正在尝试复制32位 uint32_t 数据类型。
数据复制应该是循环的-配置完成后、我不想重新配置 DMA。
我还可以告诉 ADCA1事件函数-我可以进入也从 ADCA1事件触发的 ISR 函数。
这是我的 DMA 配置:
有什么我遗漏的吗? 此配置是否符合我的需求?
谢谢、
Ariel
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:
我一直在尝试使用 DMA 外设、但遇到了一些问题。
可以看到地址配置相应、但没有传输数据。
我的目标:每个 ADCA1事件用于触发从源地址到目标地址的 DMA 复制。
我正在尝试复制32位 uint32_t 数据类型。
数据复制应该是循环的-配置完成后、我不想重新配置 DMA。
我还可以告诉 ADCA1事件函数-我可以进入也从 ADCA1事件触发的 ISR 函数。
这是我的 DMA 配置:
有什么我遗漏的吗? 此配置是否符合我的需求?
谢谢、
Ariel
尊敬的 Ariel:
我看到的一个问题是步长设置为0、这意味着 src 和目标地址对于每次突发将保持相同。 现在的方式是、每个 Ariel_Test_ Ariel_Test_触发都将使 u32_ADCS.src 变量的前16位移到上面(仅为零)、并将其移动到 u32_ADCS-dest 变量的前16位、这就是您没有看到任何实际更新内容的原因。 在该设置中、您需要将突发大小更改为1。 您还将绕回大小设置为零、这意味着在此基础上、它将在每次突发后绕回第一个地址、这意味着它永远不会到达底部16位。 如果您实际上不想换行、则应将换行大小设置为65535。
但是、如果使用32位变量来 DMA 读取写操作、我建议使用32位设置。 然后、突发数据大小和传输数据大小均可设置为1。 在这种情况下、可以将阶跃大小设为0、因为无论如何都只有一个突发。
如果回答了您的问题、请支持此回答。 μ s
此致、
Delaney
可悲的是-仍然不工作。
DmaRegs DMA 寄存器
DMACTRL 0x0000 DMA 控制寄存器[存储器映射]
DEBUGCTRL 0x0000 调试控制寄存器[存储器已映射]
PRIORITYCTRL1 0x0000 优先级控制1寄存器[存储器已映射]
PRIORITYSTAT 0x0000 优先级状态寄存器[存储器已映射]
Dmach1Regs DMA CH 寄存器
模式 0x4901 模式寄存器[存储器映射]
控制 0x0100 控制寄存器[存储器已映射]
BURST_SIZE 0x0000 突发大小寄存器[存储器映射]
BURST_COUNT 0x0000 突发计数寄存器[存储器映射]
SRC_BURST_STEP 0x0000 源突发步长寄存器[存储器映射]
DST_BURST_STEP 0x0000 目标突发步长寄存器[存储器已映射]
transfer_size 0x0000 传输大小寄存器[存储器已映射]
TRANSFER_COUNT 0x0000 传输计数寄存器[存储器已映射]
SRC_TRANSFER_STEP 0x0000 源传输步长寄存器[存储器已映射]
DST_TRANSFER_STEP 0x0000 目标传输步长寄存器[存储器已映射]
src_wrap_size 0xFFFE 源绕回大小寄存器[已映射存储器]
SRC_WRAP_COUNT 0x0000 源绕组计数寄存器[存储器已映射]
src_wrap_step 0x0000 源绕回步长寄存器[存储器已映射]
DST_WRAP_SIZE 0xFFFE 目标绕回大小寄存器[已映射存储器]
DST_WRAP_COUNT 0x0000 目标绕组计数寄存器[存储器已映射]
DST_WRAP_STEP 0x0000 目标绕回步长寄存器[存储器已映射]
SRC_Beg_ADDR_SHADOW 0x000252D2 源开始地址影子寄存器[存储器已映射]
SRC_ADDR_SHADOW 0x000252D2 源地址影子寄存器[存储器已映射]
SRC_Beg_ADDR_ACTIVE 0x00000000 源起始地址活动寄存器[存储器已映射]
SRC_ADDR_ACTIVE 0x00000000 源地址活动寄存器[存储器已映射]
DST_Beg_ADDR_SHADOW 0x000252D4 目标开始地址影子寄存器[已映射存储器]
DST_ADDR_SHADOW 0x000252D4 目标地址影子寄存器[存储器已映射]
DST_Beg_ADDR_ACTIVE 0x00000000 目标起始地址活动寄存器[已映射存储器]
DST_ADDR_ACTIVE 0x00000000 目标地址活动寄存器[存储器已映射]