打印
[APM32F1]

求解答DMA控制器占用的疑问

[复制链接]
243|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
梦塑者|  楼主 | 2025-4-22 15:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在阅读极海APM32F103的用户手册时,在第9章 DMA章节里面官方对DMA控制器的说明:


DMA(Direct Memory Access:直接存储器存取)在无须 CPU 干预的情况下,可实现外设与存储器或存储器与存储器之间数据的高速传输,从而节省 CPU 资源来做其他操作。

产品有一个 DMA 控制器共 7 个通道。每个通道可管理多个 DMA 请求,但每个通道同一时刻只能响应 1 个 DMA 请求。每个通道可设置优先级,仲裁器可根据通道的优先级协调各个 DMA 通道对应的 DMA 请求的优先级。


每个DMA通道都有优先级设计,是不是意味着同一时刻仅支持一个DMA通道的运行?比如,如果我开启了Usart的接收功能后,此时,如果在等待接收的过程中,是不是就算是占用了DMA控制器?


有大佬给解释一下吗?或者有网友做过类似的实验吗?

使用特权

评论回复
沙发
真的问题不大| | 2025-4-22 16:48 | 只看该作者
不是吧,你看描述,他是可以设置优先级去协调DMA请求的

使用特权

评论回复
板凳
真的问题不大| | 2025-4-22 16:50 | 只看该作者
而且按照你的例子,等待接受是不算占用的,只有在实际数据传输时才会占用

使用特权

评论回复
地板
jobszheng| | 2025-4-25 19:19 | 只看该作者
我觉得楼上说得有道理。
有时间测试一下

使用特权

评论回复
5
lemonboard| | 2025-4-26 20:05 | 只看该作者
应该不算吧!
要不,这DMA的功能是不是有点浪费了啊

使用特权

评论回复
6
心跳回响| | 2025-4-27 10:52 | 只看该作者
一直在使用,还真没有考虑过楼主的问题。
学习了,学习了

使用特权

评论回复
7
心跳回响| | 2025-4-27 10:53 | 只看该作者
真的问题不大 发表于 2025-4-22 16:50
而且按照你的例子,等待接受是不算占用的,只有在实际数据传输时才会占用 ...

也就是说,这个DMA控制里面的每个通道,还是各干各的。
只是对于总线的访问需要DMA控制来仲裁一下。
我这样理解对吗?

使用特权

评论回复
8
Gfan| | 2025-4-27 11:33 | 只看该作者
本帖最后由 Gfan 于 2025-4-27 13:50 编辑

等待接收过程中,是不占用的;接收到数据了,此时DMA才会搬运UART的数据至指定位置,这个时候就占用了

使用特权

评论回复
9
Gfan| | 2025-4-27 13:53 | 只看该作者
心跳回响 发表于 2025-4-27 10:53
也就是说,这个DMA控制里面的每个通道,还是各干各的。
只是对于总线的访问需要DMA控制来仲裁一下。
我这 ...

对的,这样理解没问题

使用特权

评论回复
10
分形梦想家| | 2025-4-27 14:36 | 只看该作者
这个DMA控制器还有这么多的学问呢呀!

使用特权

评论回复
11
梦塑者|  楼主 | 2025-5-30 23:06 | 只看该作者
谢谢各位的回答

使用特权

评论回复
12
梦塑者|  楼主 | 2025-5-30 23:06 | 只看该作者
Gfan 发表于 2025-4-27 11:33
等待接收过程中,是不占用的;接收到数据了,此时DMA才会搬运UART的数据至指定位置,这个时候就占用了 ...

学习到了。谢谢版主的回复

使用特权

评论回复
13
涡流远见者| | 2025-5-31 08:41 | 只看该作者
学习到了。
第一步先配置,第二步才是DMA执行。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

21

帖子

0

粉丝