请选择 进入手机版 | 继续访问电脑版

你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
y369369 发布时间:2021-4-7 13:22
    直接存储器访问(Direct Memory Access),简称DMADMACPU一个用于数据从一个地址空间到另一地址空间搬运(拷贝)的组件,数据拷贝过程不需CPU干预,数据拷贝结束则通知CPU处理。因此,大量数据拷贝时,使用DMA可以释放CPU资源。在STM32控制器中,芯片采用Cortex-M3架构,总线结构有了很大的优化,DMA占用另外的总线,并不会与CPU的系统总线发生冲突。也就是说,DMA的使用不会影响CPU的运行速度。
2.1.png
   DMA数据拷贝过程,典型的有:
l  内存—>内存,内存间拷贝
l  外设—>内存,如uart、spi、i2c等总线接收数据过程
l  内存—>外设,如uart、spi、i2c等总线发送数据过程
串口有必要使用DMA吗
    串口(uart)是一种低速的串行异步通信,适用于低速通信场景,通常使用的波特率小于或等于115200bps。对于小于或者等于115200bps波特率的,而且数据量不大的通信场景,一般没必要使用DMA,或者说使用DMA并未能充分发挥出DMA的作用。
    对于数量大,或者波特率提高时,必须使用DMA以释放CPU资源,因为高波特率可能带来CPU资源过度浪费的问题。
举个例子
    对于发送,使用循环发送,可能阻塞线程,需要消耗大量CPU资源“搬运”数据,浪费CPU。对于发送,使用中断发送,不会阻塞线程,但需浪费大量中断资源,CPU频繁响应中断。以115200bps波特率,1s传输11520字节,大约69us需响应一次中断,如波特率再提高,将消耗更多CPU资源。
    对于接收,如仍采用传统的中断模式接收,同样会因为频繁中断导致消耗大量CPU资源。
    因此,在高波特率传输场景下,串口非常有必要使用DMA。
文章出处: STM32嵌入式开发
0 ~' ~7 _9 H* g! }. [, u! u
收藏 评论0 发布时间:2021-4-7 13:22

举报

0个回答

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版