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.

IWR6843: DMA Channel to PaRAM Mapping

Part Number: IWR6843

在手册中,DMA通道映射对应参数集是通过DCHMAPN_m寄存器实现的,但上板测试在CCS中发现芯片中并未包含DCHMAPN_m寄存器,要怎么实现DMA通道和参数集的映射?

  • 您好。

    芯片没有包含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);
    

  • 您好,谢谢您的回复,请问是EDMA可以访问手册中规定的EDMA地址映射表以外的地址吗