GD32单片机串口DMA发送

一:在使用GD32单片机进行串口DMA发送时,需要进行以下配置:

  1. 使能DMA时钟和串口时钟

  2. 配置DMA通道,包括数据方向、数据宽度、传输模式等参数。

  3. 配置串口发送端口GPIO的模式和引脚。

  4. 配置串口的基本参数,如波特率、数据位、停止位、校验位等。

  5. 配置串口DMA发送所需要的DMA缓冲区

  6. 初始化DMA传输,启动发送数据。

  7. 等待DMA传输完成的中断或者轮询方式,根据需要来进行处理。

二;GD32单片机有两个DMA,分别是DMA0和DMA1

每个DMA有8个地址通道,每个通道可选择8个外设地址,当然除了外设以外其他所有内存地址DMA可以进行直接搬运:两个DMA在工作时,每次只能搬运一个通道的内容,所以当多个通道同时触发DMA时,会根据优先级进行仲裁,判断哪个通道先进性搬运,

GD32单片机串口DMA发送_第1张图片

GD32单片机串口DMA发送_第2张图片

三:串口DMA发送与接收

串口DMA 发送与接收需要定义一个缓冲区用于存放需要发送和接收未处理的数据,通常做法为给发送和接受各自定义一个字节数组BUFFER,用于存放临时数据。

四:为什么要用DMA传输数据,DMA传输有什么优点:

单片机传统数据发送与接收由两个核心硬件寄存器实现,一个是移位寄存器,用于将数据一位一位的往tx引脚发送出去,另一个是data寄存器,主要起到一个数据缓冲的作用。

单片机数据发送的过程:

单片机cpu将一个数据字节拷贝纸值串口发送的data寄存器中,data数据寄存器会将数据传输给移位寄存器等待数据发送完成,在此过程中需要等待一个标志位,表示数据完成发送,然而这个等待过程单片机无法处理其他数据内容,只能在while中循环,这是一个非常消耗性能的过程。

通过DMA发送就可以省去主cpu等待单个数据发送完成的过程,通过硬件触发DMA实现数据自动搬运到data寄存器中

常规的串口发送主要是等待上一个数据发送完成过程中比较占用单片机运行的时间。

而常规串口接收通过中断实现,当数据量较大是,单片机频繁处于串口中断过程中,单片机cpu频繁调度

通过串口DMA可以直接通过DMA直接完成数据的搬运,搬运完成后,直接从指定地址读取接收内容即可。

你可能感兴趣的:(单片机,stm32,嵌入式硬件,c语言)