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.
您好。
芯片没有包含DCHMAPN_m寄存器的话,可以尝试使用其他方式来实现DMA通道和参数集的映射。
1.使用芯片提供的其他寄存器或者寄存器组来实现映射。
2.使用软件来实现DMA通道和参数集的映射,编写驱动管理DMA通道和参数集的映射关系
您好,首先谢谢您的解答,其次我还有一个问题想要请教,我在阅读IWR6843的HWA手册的时候,发现了HWA由EDMA触发的情况,是当EDMA完成数据搬移到HWA之后,会自身通过链接的方式,将SIGDMACHXDONE(X=1~16,且SIGDMACHXDONE[X-1]=1)中的其中一个寄存器的数据通过搬移到DMA2ACCTRIG中,来触发HWA的运行,但对于这种搬移方式,我在EDMA的映射空间表中,并没有看见此HWA公共寄存器(SIGDMACHXDONE)所对应的空间,此公共寄存器的空间只出现在了DSP和R4F的空间映射表中,请问我应该如何去编写EDMA的搬移参数。
SIGDMACHXDONE寄存器不是EDMA的直接寄存器,而是与DSP和R4F相关的寄存器。
请问我应该如何去编写EDMA的搬移参数。
我为您写了一段示例,请参考
// 假设SIGDMACHXDONE寄存器的地址为0xXXXXXX #define SIGDMACHXDONE_ADDR 0xXXXXXX // 假设DMA2ACCTRIG寄存器的地址为0xYYYYYY #define DMA2ACCTRIG_ADDR 0xYYYYYY // 假设EDMA搬移通道为通道0 #define EDMA_CHANNEL 0 // 初始化EDMA,配置数据搬移参数 // 示例demo initialize_EDMA(); // 设置EDMA的源地址、目的地址、传输大小等参数 set_EDMA_transfer_parameters(EDMA_CHANNEL, source_address, SIGDMACHXDONE_ADDR, transfer_size); // 启动EDMA进行数据搬移 start_EDMA_transfer(EDMA_CHANNEL); // 在这里等待EDMA完成数据搬移 // 读取SIGDMACHXDONE寄存器的状态 uint32_t sigdmachxdone_status = read_register(SIGDMACHXDONE_ADDR); // 将SIGDMACHXDONE寄存器的状态搬移到DMA2ACCTRIG中,触发HWA的运行 write_register(DMA2ACCTRIG_ADDR, sigdmachxdone_status);