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

[复制链接]
597|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 | 显示全部楼层
我觉得楼上说得有道理。
有时间测试一下
lemonboard 发表于 2025-4-26 20:05 | 显示全部楼层
应该不算吧!
要不,这DMA的功能是不是有点浪费了啊
心跳回响 发表于 2025-4-27 10:52 | 显示全部楼层
一直在使用,还真没有考虑过楼主的问题。
学习了,学习了
心跳回响 发表于 2025-4-27 10:53 | 显示全部楼层
真的问题不大 发表于 2025-4-22 16:50
而且按照你的例子,等待接受是不算占用的,只有在实际数据传输时才会占用 ...

也就是说,这个DMA控制里面的每个通道,还是各干各的。
只是对于总线的访问需要DMA控制来仲裁一下。
我这样理解对吗?
Gfan 发表于 2025-4-27 11:33 | 显示全部楼层
本帖最后由 Gfan 于 2025-4-27 13:50 编辑

等待接收过程中,是不占用的;接收到数据了,此时DMA才会搬运UART的数据至指定位置,这个时候就占用了
Gfan 发表于 2025-4-27 13:53 | 显示全部楼层
心跳回响 发表于 2025-4-27 10:53
也就是说,这个DMA控制里面的每个通道,还是各干各的。
只是对于总线的访问需要DMA控制来仲裁一下。
我这 ...

对的,这样理解没问题
分形梦想家 发表于 2025-4-27 14:36 | 显示全部楼层
这个DMA控制器还有这么多的学问呢呀!
 楼主| 梦塑者 发表于 2025-5-30 23:06 | 显示全部楼层
谢谢各位的回答
 楼主| 梦塑者 发表于 2025-5-30 23:06 | 显示全部楼层
Gfan 发表于 2025-4-27 11:33
等待接收过程中,是不占用的;接收到数据了,此时DMA才会搬运UART的数据至指定位置,这个时候就占用了 ...

学习到了。谢谢版主的回复
涡流远见者 发表于 2025-5-31 08:41 | 显示全部楼层
学习到了。
第一步先配置,第二步才是DMA执行。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

50

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部