GD32E505 USART and DMA


GD32E505 DMA:

  1. DMA控制器有12个通道,DMA0有7个通道,DMA1有5个通道。
  2. DMA控制器和Cortex-M33内核共享系统总线。传输长度可配置,最大65536.
  3. AHB、APB外设、片上闪存和SRAM都可以作为访问的源端和目的端。
    GD32E505 DMA0请求
    GD32E505 DMA1请求
  4. 支持软件优先级(低、中、高、极高)和硬件优先级(通道号越低,优先级越高)。
  5. 将DMA_CHxCTL寄存器的CHEN位清零,可以停止DMA传输。
  6. 若清零CHEN位时,DMA传输已经完成,之后未对任意寄存器进行操作前便是能DMA通道,则不会触发任何DMA传输。

GD32E505 USART:

  1. 所有USART都支持DMA功能,以实现高速率的数据通信。
  2. IDLE帧检测(IDLEF);
  3. USART0/1/2支持全功能,USART3/4有下面功能未实现:
    智能卡模式
    同步模式
    硬件流操作(CTS/RTS)
    设置数据极性
  4. USART5跟其他的不一样!!

例程分析

  1. Examples\USART 有不少UART的例程,参考DMA的来copy一份改改就可以用了。
  2. 注意:USART5跟其他的不一样!!包括查询状态都不一样!
  3. 填坑:进入空闲中断后的处理也不一样!
  4. 注意USART管脚重映射的配置。RM - P187页
  5. 我用了USART2和USART5做RS485,根据DMA的通道号修改配置DMA模式+IDLE中断,收发都OK了。

文章作者: xArm
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 xArm !
评论