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

stm32 usart+dma

[复制链接]
猫又又 提问时间:2024-6-15 15:19 / 已解决

image.png

我使用串口+dma进行数据通信,但转运过程中也要死循环检查是否转运完成,但只有不也是占用cpu吗?串口中断发送数据也是占用cpu,两者有什么差距吗?
对于大量数据的传输,DMA通常比串口中断驱动的方式更高效,因为它减少了CPU的负载。但对于少量数量来说是否dma驱动方式与串口中断驱动区别不大(在裸机开发中)?
dma转运的时候是否需要我们程序考虑串口是否发送完成?还是说dma转运会自己考虑?
收藏 评论8 发布时间:2024-6-15 15:19

举报

8个回答
xmshao 最优答案 回答时间:2024-6-17 10:21:03
基于DMA方式进行UART数据通信并不需要基于死循环来检查是否转运完成,我们可以基于DMA传输完成事件
或空闲事件,待事件发生时 才 会基于中断去处理。


基于DMA方式做UART的发送和基于中断方式做数据发送,在CPU的占用上有明显差别。基于中断方式的发送,定会每
发生1个数据得申请中断让CPU来搬运数据到发送寄存器,如果是基于DMA方式,发送过程中CPU可以被完全释放出来。


对于大量数据的传输,使用DMA比串口中断方式更能释放CPU,让其做更重要或紧急的事情。


至于效率的高低,看你站在哪个角度来评价。单从实现传输的角度讲,DMA方式未必就一定比基于中断方式高。


打个比方,你想发个东西给某人,你自己亲历亲为跟选择快递,谁的效率高,不可一概而论。但可以肯定,


若选择快递,你可以释放出来做其它事情。


对于少量数据来说,是否dma驱动方式与串口中断驱动区别不大。很多场合可能差别不大,反正只是种提供数据的方式。


我觉得关键是要看,整个系统中CPU是否忙得过来,CPU响应中断时会不会影响更重要事情的及时处理。
butterflyspring 回答时间:2024-6-17 09:44:05
首先串口传输是很慢的,这时候CPU 查询方式是效率很低的。

其次DMA接收数据的个数是之前设定好的,如果超出来是需要及时处理。

所以,采用DMA完成中断的方式是效率最高的一种方式,在完成中断中决定是否继续接收数据。

另外标准库已经是很古老的方式了,建议与时俱进,采用cube库更加先进好用。
猫又又 回答时间:2024-6-21 15:16:34

xmshao 发表于 2024-6-17 10:21
基于DMA方式进行UART数据通信并不需要基于死循环来检查是否转运完成,我们可以基于DMA传输完成事件
或空闲 ...

我想了想,是不是可以使用dma传输时,设置一个一个标志位置1,在dma完成中断中把标志位清除,每次发送数据时就while判断这个标志位,这样应该比死等待转运效率高些把?

猫又又 回答时间:2024-6-21 15:27:49

butterflyspring 发表于 2024-6-17 09:44
首先串口传输是很慢的,这时候CPU 查询方式是效率很低的。</p>
<p>其次DMA接收数据的个数是之前设定好的,如果超 ...

好的,明白了,感谢大佬。

hal库学了的,但平时还是用的标准库,不是说标准库好找工作吗?

xmshao 回答时间:2024-6-21 15:31:07

猫又又 发表于 2024-6-21 15:16
我想了想,是不是可以使用dma传输时,设置一个一个标志位置1,在dma完成中断中把标志位清除,每次发 ...

DMA传输完成了就会产生相应事件,我们基于该事件的中断决定后续操作,包括标志位的处理,不用死等什么的。

猫又又 回答时间:2024-6-21 17:10:31

xmshao 发表于 2024-6-21 15:31</p>
<p>

[md]但我发送数据不知道dma这时是否在空闲状态啊,不应该等待?或者等待一定时间?

butterflyspring 回答时间:2024-6-21 17:14:31

猫又又 发表于 2024-6-21 17:10
但我发送数据不知道dma这时是否在空闲状态啊,不应该等待?或者等待一定时间?
...

DMA是通过串口的请求的才会响应的。

butterflyspring 回答时间:2024-6-21 17:16:11
猫又又 发表于 2024-6-21 15:27
[md]好的,明白了,感谢大佬。

hal库学了的,但平时还是用的标准库,不是说标准库好找工作吗?

标准库是以前通用的。


但是芯片发展越来越先进,功能越来越多,标准库已经不适应发展了。
你可以留意一下,新出的芯片都没有标准库了。

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版