梦塑者 发表于 2025-4-22 15:21

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

在阅读极海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控制器还有这么多的学问呢呀!
页: [1]
查看完整版本: 求解答DMA控制器占用的疑问