OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2113|回复: 5

求教DMA与CPU的同时工作问题

[复制链接]

3

主题

9

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2015-2-1
在线时间
0 小时
发表于 2015-3-11 20:09:21 | 显示全部楼层 |阅读模式
5金钱
用DMA控制串口发送数据,当DMA得到请求占用地址总线和数据总线时,假如主程序里还有i++,如果产生了DMA请求,CPU没法用到地址与数据总线那如何进行i++呢?
这不就和DMA可以和CPU同时工作背道而驰了吗?求解释,知识浅薄,一直很迷惑!

最佳答案

查看完整内容[请看2#楼]

这问到了CPU的核心内容,ST不会公开。只能靠猜测。 首先可以肯定,二者能够同时运行; 或者,在每个最小周期里,二者各走一步,分时运行,但对用户来说是同时的。 尽管具体做法会很复杂,但可以做到。
原子哥在线教学平台上线啦,数千视频免费在线学习,数十名师与您相约
回复

使用道具 举报

51

主题

6152

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
10498
金钱
10498
注册时间
2014-4-1
在线时间
1022 小时
发表于 2015-3-11 20:09:22 | 显示全部楼层
这问到了CPU的核心内容,ST不会公开。只能靠猜测。

首先可以肯定,二者能够同时运行;
或者,在每个最小周期里,二者各走一步,分时运行,但对用户来说是同时的。

尽管具体做法会很复杂,但可以做到。
回复

使用道具 举报

3

主题

9

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2015-2-1
在线时间
0 小时
 楼主| 发表于 2015-3-12 09:13:10 | 显示全部楼层
回复【2楼】xuande:
---------------------------------
好的谢谢你的解答
回复

使用道具 举报

58

主题

499

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1920
金钱
1920
注册时间
2013-11-18
在线时间
268 小时
发表于 2015-3-12 09:20:17 | 显示全部楼层
回复【2楼】xuande:
---------------------------------
 我之前用STM32F303做实验的时候就猜测过,F303总共5条总线,CPU三个总线,两个DMA各占一条总线,用DMA直接转数据到GPIO来翻转电平,GPIO可以达到14M的速率,
303的总线是72M,72/5 = 14.4M,同时开两个DMA驱动两个不同的GPIO,然后测两个GPIO翻转电平,存在一定的相位差,所以猜测5条总线之间是通过分时来复用的,并不是同时工作,两个DMA都占14.4M的带宽。然后再用CPU翻转电平,速率可以达到22.7M,大于14.4M,说明CPU的三个总线的复用却不是等时复用,猜测应该是CPU占用72/5 *3 =43.2M的总线,至于CPU的三条总线是怎么仲裁这43.2M的总线就不知道了。STM32的参考手册跟M4内核参考手册都没有找到相关的信息
已经放下多年的FPGA,要重新再拾起来,却是如此的陌生
回复

使用道具 举报

3

主题

9

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2015-2-1
在线时间
0 小时
 楼主| 发表于 2015-3-12 10:11:03 | 显示全部楼层
回复【4楼】mzwhhwj:
---------------------------------
很专业,谢谢
回复

使用道具 举报

16

主题

95

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
259
金钱
259
注册时间
2015-1-12
在线时间
32 小时
发表于 2020-10-24 14:36:01 | 显示全部楼层
同问,也遇到了类似疑惑。大家伙能解答下吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

正点原子DS100手持Mini示波器发布上一条 /1 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2021-1-25 03:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表