你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
意法半导体官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
积分商城
每日签到
关于DMA搬运和CPU运行是否冲突
[复制链接]
WZGDZWB09
提问时间:2019-7-21 12:49 /
问答
是否解决:
现在设计程序,习惯主程序里面一直运行AD,dma运行搬运到数组;每隔一段时间读取ad值;另外还有串口收发也是dma
如果是dma在一直传输数据,cpu执行其他代码有影响吗?比如dma在写ram的同时,cpu也读该ram;并且是cpu先读了一半(比如16位数据的前8位),此时dam写该ram;怎么保证读到的数据不会出错
赞
0
收藏
0
评论
5
分享
发布时间:2019-7-21 12:49
举报
请先
登录
后回复
5个回答
七哥
最优答案
回答时间:2019-7-22 14:39:08
a0a.1 32b0c
本帖最后由 toofree 于 2019-7-22 14:40 编辑
对于只有一组系统总线的,CPU运行和DMA搬运的确有冲突。CPU操作系统总线时,DMA是不能操作的,但是系统总线也是有仲裁机制的,使得CPU和DMA分时复用系统总线。
以STM32F103系列为例,DMA占用的总线周期最大不能超过总带宽的一半;换句话说,留给CPU的占用系统总线的时候至少超过一半。
赞
1
评论
回复
支持
1
反对
0
子曰好人
回答时间:2019-7-22 13:50:54
a0a.1 32b0c
DMA搬运完了会有标志位或者中断,等DMA搬运完成了再去读值就行了
赞
0
评论
回复
支持
反对
wenyangzeng
回答时间:2019-7-22 13:52:03
a0a.1 32b0c
等待DMA传输结束标志位到来了再读
赞
0
评论
回复
支持
反对
涛哥2035
回答时间:2019-7-22 14:41:29
a0a.1 32b0c
CPU和DMA使用公共资源的时候是有仲裁机制的,这都做到MCU内部了,具体机理是不清楚的也不需要管的,这都涉及到另外的领域了
赞
0
评论
回复
支持
反对
仙景
回答时间:2019-7-22 16:32:21
a0a.1 32b0c
搬运的过程与CPU没有关系,运行完毕产生中断是硬件出发,CPU才去动作
赞
0
评论
回复
支持
反对
所属标签
相似问题
关于
意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
对于只有一组系统总线的,CPU运行和DMA搬运的确有冲突。CPU操作系统总线时,DMA是不能操作的,但是系统总线也是有仲裁机制的,使得CPU和DMA分时复用系统总线。
以STM32F103系列为例,DMA占用的总线周期最大不能超过总带宽的一半;换句话说,留给CPU的占用系统总线的时候至少超过一半。