你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

关于DMA搬运和CPU运行是否冲突

[复制链接]
WZGDZWB09 提问时间:2019-7-21 12:49 /
现在设计程序,习惯主程序里面一直运行AD,dma运行搬运到数组;每隔一段时间读取ad值;另外还有串口收发也是dma
如果是dma在一直传输数据,cpu执行其他代码有影响吗?比如dma在写ram的同时,cpu也读该ram;并且是cpu先读了一半(比如16位数据的前8位),此时dam写该ram;怎么保证读到的数据不会出错


收藏 评论5 发布时间:2019-7-21 12:49

举报

5个回答
七哥 最优答案 回答时间:2019-7-22 14:39:08
本帖最后由 toofree 于 2019-7-22 14:40 编辑

对于只有一组系统总线的,CPU运行和DMA搬运的确有冲突。CPU操作系统总线时,DMA是不能操作的,但是系统总线也是有仲裁机制的,使得CPU和DMA分时复用系统总线。
以STM32F103系列为例,DMA占用的总线周期最大不能超过总带宽的一半;换句话说,留给CPU的占用系统总线的时候至少超过一半。
子曰好人 回答时间:2019-7-22 13:50:54
DMA搬运完了会有标志位或者中断,等DMA搬运完成了再去读值就行了
wenyangzeng 回答时间:2019-7-22 13:52:03
等待DMA传输结束标志位到来了再读
涛哥2035 回答时间:2019-7-22 14:41:29
CPU和DMA使用公共资源的时候是有仲裁机制的,这都做到MCU内部了,具体机理是不清楚的也不需要管的,这都涉及到另外的领域了
仙景 回答时间:2019-7-22 16:32:21
搬运的过程与CPU没有关系,运行完毕产生中断是硬件出发,CPU才去动作

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版