你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
对于只有一组系统总线的,CPU运行和DMA搬运的确有冲突。CPU操作系统总线时,DMA是不能操作的,但是系统总线也是有仲裁机制的,使得CPU和DMA分时复用系统总线。
以STM32F103系列为例,DMA占用的总线周期最大不能超过总带宽的一半;换句话说,留给CPU的占用系统总线的时候至少超过一半。