GD32单片机串口DMA发送

这篇具有很好参考价值的文章主要介绍了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串口驱动,单片机,stm32,嵌入式硬件,c语言

gd32串口驱动,单片机,stm32,嵌入式硬件,c语言

三:串口DMA发送与接收

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

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

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

单片机数据发送的过程:

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

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

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

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

通过串口DMA可以直接通过DMA直接完成数据的搬运,搬运完成后,直接从指定地址读取接收内容即可。文章来源地址https://www.toymoban.com/news/detail-656139.html

到了这里,关于GD32单片机串口DMA发送的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • GD32单片机和STM32单片机的对比分析

    GD32单片机和STM32单片机都是基于Arm Cortex-M3/M4内核的32位通用微控制器,广泛应用于各种嵌入式系统和物联网领域。两者之间有很多相似之处,但也有一些不同之处,本文将从以下几个方面对比分析两者的特点、优势和开发成本。 GD32单片机采用的是二代的M3/M4内核,而STM32单片

    2024年02月16日
    浏览(49)
  • 【GD32】从0开始学GD32单片机(10)—— TIMER基本定时器详解+1毫秒延时例程

    在GD32中定时器是非常重要的外设,它可以帮我们精准的控制程序的调度,就如之前讲过的SysTick就是一个定时器,我们可以通过设置这个定时器的寄存器实现延时函数。 GD32的定时器可大致分为3种—— 基本定时器、通用定时器、高级定时器 。 它们之间的区别如下图所示: 这

    2024年01月17日
    浏览(46)
  • GD32单片机远程升级下载,手机在线升级下载程序,GD32在线固件下载升级,手机下载程序固件方法

            GD32、STM32单片机,是我们最常见的一种MCU。通常我们在使用STM32单片机都会遇到程序在线升级下载的问题。         GD32/STM32单片机的在线下载通常需要以下几种方式完成:       1、使用ST/GD提供的串口下载工具,本地完成固件的升级下载。        2、自行完成系统

    2024年02月02日
    浏览(49)
  • 单片机移植freemodbus主机(STM32、GD32、瑞萨、国民技术等)

    从github下载:https://github.com/armink/FreeModbus_Slave-Master-RTT-STM32 无法下载或者下载太慢可以用资源下载,无需积分。freeModbus主机源码下载 示例代码 参考从机代码创建 将FreeModbus主机源代码拷贝到工程中间件-第三方库-freemodbus源码库:即MiddlewaresThird_PartyFreeModbusMaster文件夹中。

    2024年02月11日
    浏览(35)
  • GD32 单片机 硬件I2C死锁解决方法

    在I2C恢复函数下个断点(检测到I2C多次超时之后,应该能跳转到I2C恢复函数) 使用镊子,将SCL与SDA短接,很快就能看到程序停到恢复函数的断点上,此时再执行恢复函数,看能否正常走出(可在回复函数中写个死循环,只有I2C正常才跳出,检测I2C正常的办法,可以读从设备的

    2024年02月05日
    浏览(51)
  • 【GD32】从零开始学GD32单片机高级篇——外部存储器控制器EXMC详解+SDRAM读写例程

    外部存储器控制器EXMC,用来访问各种片外存储器,通过配置寄存器,EXMC可以把AMBA 协议转换为专用的片外存储器通信协议,包括 SRAM,ROM,NOR Flash,NAND Flash,PC Card和SDRAM 。 EXMC的工作原理其实就是把外部储存器的地址映射到内部的特定地址上,用户想访问外部的存储器,我们

    2024年02月10日
    浏览(88)
  • 单片机(STM32,GD32,NXP等)中BootLoader的严谨实现详解

    Bootloader( 引导加载程序 )的主要任务是引导加载并运行应用程序,我们的软件升级逻辑也一般在BootLoader中实现。本文将详细介绍BootLoader在单片机中的实现,包括 STM32、GD32、NXP Kinetis 等等的所有单片机,因为无论是什么样的芯片,它实现的逻辑都是一样的。 注意,本篇文章主

    2024年02月02日
    浏览(50)
  • 如果STM32/GD32一类的ARM单片机解除读写保护的方法

    有时候啊,使用ST-Link给STM32一类的ARM单片机下载程序的时候,发现怎么也下载不了,可能是由于芯片被写保护了。那怎么办呢?可以使用STM32 ST-LINK Utility工具解除芯片的写保护,本篇博文介绍操作步骤,文章最后有工具下载链接。 双击“STM32 ST-LINK Utility.exe”,打开软件。 软

    2024年02月09日
    浏览(41)
  • STM32 GD32 瑞萨 psoc 等单片机 无线wifi蓝牙最佳解决方案

    新联鑫威一系列低功耗高性价比sdio wifi/蓝牙combo的模块CYWL6208 , CYWL6312, CYW6209等可以搭配stm32 各种型号例如以下,支持sta/ap/ap+sta,双模蓝牙的应用,支持ThreadX,rt-thread, freertos, Azure RTOS, Linux, Android系统. 稳定强,功耗低,吞吐量高等优势可以应用在新能源充电桩 安防 工控 智能

    2024年01月17日
    浏览(46)
  • J-Flash J-Link解锁GD32单片机

    提示:本篇所使用的工具为J-Link V9,软件为J-Flash V6.48b 当给GD32单片机Flash上锁,即配置安全保护后,单片机无法再通过keil、J-Link工具J-Flash烧录程序, 可通过J-Link STM32 Unlock或者J-Flash两种方法都可以。 我们先来用J-Link命令行验证下是否是真的开启了安全保护的 打开J-Link Comm

    2024年02月21日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包