GD32F130G6U6 USART DMA REMAP

[复制链接]
1953|7
手机看帖
扫描二维码
随时随地手机跟帖
woshicky|  楼主 | 2017-10-23 18:25 | 显示全部楼层 |阅读模式
芯片是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);
求教各位大神!
shenmu2012| | 2017-10-23 22:43 | 显示全部楼层
看来这个重映射的是个头疼的问题的

使用特权

评论回复
zhangbo1985| | 2017-10-24 18:57 | 显示全部楼层
看来DMA映射的还是很头疼的

使用特权

评论回复
Houtz| | 2017-10-25 09:40 | 显示全部楼层
关于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

使用特权

评论回复
woshicky|  楼主 | 2017-12-26 11:11 | 显示全部楼层
Houtz 发表于 2017-10-25 09:40
关于DMA映射,可以使用库函数:
syscfg_dma_remap_enable(SYSCFG_DMA_REMAP_USART0TX); //remap USART0 Tx  ...

试过了,使用库函数的结果是一样的

使用特权

评论回复
vibra2016| | 2017-12-29 22:14 | 显示全部楼层
DMA的映射有这么复杂么/

使用特权

评论回复
xgfgli| | 2018-1-24 14:59 | 显示全部楼层
重映射,注意时钟

使用特权

评论回复
37772166| | 2018-8-3 10:46 | 显示全部楼层
请问下,重映射解决了吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝