GD32E505 DMA:
- DMA控制器有12个通道,DMA0有7个通道,DMA1有5个通道。
- DMA控制器和Cortex-M33内核共享系统总线。传输长度可配置,最大65536.
- AHB、APB外设、片上闪存和SRAM都可以作为访问的源端和目的端。
- 支持软件优先级(低、中、高、极高)和硬件优先级(通道号越低,优先级越高)。
- 将DMA_CHxCTL寄存器的CHEN位清零,可以停止DMA传输。
- 若清零CHEN位时,DMA传输已经完成,之后未对任意寄存器进行操作前便是能DMA通道,则不会触发任何DMA传输。
GD32E505 USART:
- 所有USART都支持DMA功能,以实现高速率的数据通信。
- IDLE帧检测(IDLEF);
- USART0/1/2支持全功能,USART3/4有下面功能未实现:
智能卡模式
同步模式
硬件流操作(CTS/RTS)
设置数据极性 - USART5跟其他的不一样!!
例程分析
- Examples\USART 有不少UART的例程,参考DMA的来copy一份改改就可以用了。
- 注意:USART5跟其他的不一样!!包括查询状态都不一样!
- 填坑:进入空闲中断后的处理也不一样!
- 注意USART管脚重映射的配置。RM - P187页
- 我用了USART2和USART5做RS485,根据DMA的通道号修改配置DMA模式+IDLE中断,收发都OK了。