STM32串口收发数据为什么要使用DMA

发布者:千变万化最新更新时间:2023-09-01 来源: elecfans关键字:STM32  串口  收发数据  DMA 手机看文章 扫描二维码
随时随地手机看文章

直接存储器访问(Direct Memory Access),简称DMA。DMA是CPU一个用于数据从一个地址空间到另一地址空间“搬运”(拷贝)的组件,数据拷贝过程不需CPU干预,数据拷贝结束则通知CPU处理。因此,大量数据拷贝时,使用DMA可以释放CPU资源,相关文章推荐:详解STM32中的DMA原理。


在STM32控制器中,芯片采用Cortex-M3架构,总线结构有了很大的优化,DMA占用另外的总线,并不会与CPU的系统总线发生冲突。也就是说,DMA的使用不会影响CPU的运行速度。


STM32串口收发数据为什么要使用DMA


DMA数据拷贝过程,典型的有:

内存—>内存,内存间拷贝

外设—>内存,如uart、spi、i2c等总线接收数据过程

内存—>外设,如uart、spi、i2c等总线发送数据过程

串口有必要使用DMA吗

串口(UART)是一种低速的串行异步通信,适用于低速通信场景,通常使用的波特率小于或等于115200bps。PC与STM32单片机通信实例推荐:按下按键,通过串口发送数据实例。

对于小于或者等于115200bps波特率的,而且数据量不大的通信场景,一般没必要使用DMA,或者说使用DMA并未能充分发挥出DMA的作用。

对于数量大,或者波特率提高时,必须使用DMA以释放CPU资源,因为高波特率可能带来CPU资源过度浪费的问题。


举个例子

对于发送,使用循环发送,可能阻塞线程,需要消耗大量CPU资源“搬运”数据,浪费CPU。对于发送,使用中断发送,不会阻塞线程,但需浪费大量中断资源,CPU频繁响应中断。以115200bps波特率,1s大约传输11520字节,大约69us需响应一次中断,如波特率再提高,将消耗更多CPU资源。

对于接收,如仍采用传统的中断模式接收,同样会因为频繁中断导致消耗大量CPU资源。

因此,在高波特率传输场景下,串口非常有必要使用DMA。


关键字:STM32  串口  收发数据  DMA 引用地址:STM32串口收发数据为什么要使用DMA

上一篇:STM32单片机串口接收数据的方法
下一篇:stm32嵌入式操作系统的特点以及不足

推荐阅读最新更新时间:2024-11-10 20:30

串口0作为调试端口,怎么改变为接收数据接口
我们在使用嵌入式linux调试板子时候必须要有调试接口,一般是串口0. 我就以我使用的S3C2416的板子为例: 启动u-boot打印如下: SMDK2416 # printenv bootcmd=nand read c0008000 900000 300000;bootm c0008000 bootdelay=3 baudrate=115200 ethaddr=00:40:5c:26:0a:5b gatewayip=192.168.1.1 netmask=255.255.255.0 bootargs=root=/dev/mtdblock3 rootfstype=yaffs2 init=/init console=ttySAC
[单片机]
STM32单片机的通用定时器定时时间的计算
STM32中的定时器有多种,按功能分成2个高级控制器定时器,4个普通定时器,2个基本定时器,2个看门狗定时器,1个系统滴答定时器SysTICk。 定时器的关键是定时时间的计算。比如用定时器控制继电器的开关的时候,需要延时一段时间才关闭或者开启,这时候离不开定时器定时。 通用定时器定时时间计算。1秒中断的基本实现: 通用定时器模块的入口时钟经过分频得到计数器的时钟,用CK_CNT表示,预分频器的系数为:TIMx_PSC,当TIMx_PSC=0时,表示不分频,=1时,2分频。以此类推。 公式为:CK_CNT=fclk_PSC/(PSC +1),其中PSC最大为65535. 其次是TIM5计数器的计数值的设置
[单片机]
毕业设计| STM32+UART HMI,玩扫雷游戏
每年毕设,STM32出现的频率最高,很多都是“老实本分”的设计,但也有不走寻常路,比如今天分享的这个毕设——扫雷游戏。不知道这位同学在毕业答辩时,有没有被老师为难,当着这么多评委老师,来几盘扫雷,是不是很刺激。 系统的硬件: 指南者开发板和4.2英寸的UATRT HMI串口屏组成,其实可以用最小的核心板,单片机外设也就用到了串口而已,但是要求使用开发板,只好有点浪费了。 软件部分: 软件部分是这个项目的核心。 刚开始参考了网上一些扫雷代码。在单片机上很多地方不一样,但大体思路还是一样的,主要解决的就是与串口屏之间的通信协议,贴一段简单的通信代码。 具体完成功能: 1.扫雷基本功能 2.当周围的雷都标记完时,打开剩余
[单片机]
STM32串口一键下载电路
在做基于STM32的多功能MP3播放器的课题时,在程序下载这部分时借鉴了正点原子开发板上的一键下载电路,采用CH340G这款芯片设计。 在画PCB初期原理图部分,对采用CH340G设计的一键下载电路不甚了解,于是花了一些时间来研究一下这个电路。 引用正点原子的一键下载电路: CH340芯片版本: PL2303芯片版本: boot跳线帽: 我们通过RTS#和DTR#两个输出信号来控制STM32 IC的BOOT0和BOOT1两引脚来选择启动模式,如下表: 当烧写程序时,我们希望BOOT0=1,BOOT1=0。当烧写完成后我们希望BOOT0=0,BOOT1=0(这个模式BOOT1可以是0可以是1,这里我们让
[单片机]
STM32 USB NAND FLASH 模拟U盘
这次是做一个SD卡的USB读卡器的功能,我们就在上次NAND Flash模拟出的U盘的工程上修改了,这样的话只要修改一小部分了。 工程的绝大部分不需要修改,只要将fsmc_nand.c文件移除工程,添加上官方的关于SDIO的SD卡的驱动代码文件stm32_eval_sdio_sd.c,我讨厌出现eval,所以将该文件直接改为sdio_sdcard.c。同时,既然我们使用SDIO来驱动SD卡,所以在外设库文件组里要添加stm32_sdio.c文件,否则会出现很多未定错误。 我们接下去修改的就只有mass_mal.c这个文件了。更NAND Flash工程一样,我们改成简洁点: uint32_t Mass_Memory_Size ;
[单片机]
<font color='red'>STM32</font> USB NAND FLASH 模拟U盘
STM32----GT9157触摸IC驱动
一、硬件环境 野火F429第一代开发板,5寸触摸屏,触摸IC为GT9157,支持5点触控(但IC是支持10点触控的) 二、GT9157初始化 总的流程:1、初始化GPIO -- 2、初始化I2C -- 3、复位GT9157以确定IC从地址 -- 4、写配置寄存器(0x8047~0x8100) (1)初始化GPIO与I2C 这个不详述,I2C可用模拟,也可用硬件I2C。STM32F4的硬件I2C稳定性还行,最重要的是,需要设置I2C等待时间 与等待次数,超时跳出等待防止卡死。野火的I2C读取移植自GT9157的Linux驱动,使用一个i2c_msg结构体控制读写 static
[单片机]
STM32----GT9157触摸IC驱动
STM32学习——GPIO的操作
写在前面 1.应项目要求,要迅速熟悉stm32的GPIO、串口以及TIM高级定时器(输出PWM) 2.初步了解stm32学习方法以及编程要领(疯狂地赋值粘贴库函数,学会看库函数的函数介绍以及参数选择,注意现在h文件里看函数声明,再goto到相应的函数处) 正文 (一)GPIO的初始化过程 //主要用来点亮LED void LED_GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; /*使能时钟,去库函数的rcc源文件里找*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
[单片机]
Linux 下PL2302 USB转串口的使用
现在市面上的USB转串口线非常便宜,而且现在大部分机器都没有串口.因此在嵌入式LINUX下开发使用USB转串口的线相当普遍.而我测试最稳定是 PL2303芯片,即一般是黑色不透明那种.在WINDOWS XP下使用比较稳定.学生一般问我,我都推荐这种,反而是市面上那种绿色透明的转换线,相当不稳定. 以下是推荐的串口转USB线,采用PL2303芯片 Y-105 Usb转串口线 Usb转Com USB 转 Rs232 9.5元 以下是不推荐的HL340芯片,在LINUX下尽量不要使用. a 五钻 USB转RS232(COM) USB转串口数据线 HL-340芯片 串口线 6.5元 关于PL230
[单片机]
Linux 下PL2302 USB转<font color='red'>串口</font>的使用
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved