GD32F130G6U6 USART DMA REMAP
芯片是gd32f130g6u6,DMA CH1, CH2分配给了SPI的DMA使用,串口接的PB6,PB7,为USART0,由于USART0的收发DMA默认也是DMA CH1, CH2,所以希望将DMA重新映射下,按照数据手册上的说法,当我把SYSCFG_R1中的对应重映射位置1,DMA请求就可以被重映射到这个通道,但是当我执行*((uint32_t *)0x40010000) = 0x0000060;
时,发现寄存器的值无法被修改,用JLink调试,在线修改寄存器位也没有用,而串口的DMA也一直没有被重映射成功...
即使这样做:
do {
/* remap DEBUG_USART TX RX Channel */
*((uint32_t *)0x40010000) = 0x0000060;
__nop(); __nop(); __nop();__nop(); __nop();
} while(*((uint32_t *)0x40010000) != 0x0000060);
求教各位大神! 看来这个重映射的是个头疼的问题的 看来DMA映射的还是很头疼的 关于DMA映射,可以使用库函数:
syscfg_dma_remap_enable(SYSCFG_DMA_REMAP_USART0TX); //remap USART0 Tx DMA request to channel2(default channel0).
syscfg_dma_remap_enable(SYSCFG_DMA_REMAP_USART0RX); //remap USART0 Rx DMA request to channel3(default channel1)
如有问题可以找我沟通375880228@qq.com Houtz 发表于 2017-10-25 09:40
关于DMA映射,可以使用库函数:
syscfg_dma_remap_enable(SYSCFG_DMA_REMAP_USART0TX); //remap USART0 Tx...
试过了,使用库函数的结果是一样的 DMA的映射有这么复杂么/ 重映射,注意时钟 请问下,重映射解决了吗? 37772166 发表于 2018-8-3 10:46
请问下,重映射解决了吗?
要先配置SYS_CFG的时钟才能重映射,楼主是没开。我今天试了没问题的 寄存器访问权限问题吗 本帖最后由 cr315 于 2024-11-6 15:59 编辑
芯片可能不支持当前外设的DMA重映射 {:sad:}{:smile:} 查阅GD32F130的数据手册,找到正确的SYSCFG寄存器地址以及用于DMA重映射的具体位。 如果您正在使用GD提供的标准外设库(SPL)或硬件抽象层(HAL),那么最好使用库中提供的函数来进行DMA重映射,而不是直接操作寄存器。 根据GD32F130的数据手册,DMA请求的重映射可能需要设置特定的SYSCFG寄存器位。但是,仅仅写入一个值可能不足以触发重映射,还可能需要满足其他条件(如先禁用相关外设的DMA请求,然后再进行重映射操作)。
页:
[1]