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

请问个ADC DMA传输的问题

[复制链接]
厦门浪子 提问时间:2018-4-8 19:58 /
adc采用DMA通道循环模式传输到内存变量空间。如果其他函数不停的读取存储到内存空间的ADC值,而DMA不停的搬运转换后的ADC到内存空间,在不断读出和不断写入过程不会发生冲突吗?
<
收藏 评论14 发布时间:2018-4-8 19:58

举报

14个回答
toofree 回答时间:2018-4-9 00:11:21
本帖最后由 toofree 于 2018-4-9 11:03 编辑

关于DMA,在RM0008手册上是这么描述的。见下图:
傲游截图20180409000920.jpg

来个中文版的。
傲游截图20180409000905.jpg

可以说明问题了吗?

就是说DMA的写和CPU的读不会冲突。由于有了总线仲裁器执行循环调度,CPU至少会有一半的时间可以占用系统总线。

CPU有占用系统总线的时间,那么就可以访问SRAM,因为SRAM也是挂在系统总线上的。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

wenyangzeng 回答时间:2018-4-8 21:43:09
根据你设定的DMA数据传输长度,缓冲区满了DMA就停止,可以产生一个中断。不可能发生冲突的。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

厦门浪子 回答时间:2018-4-8 22:15:15
wenyangzeng 发表于 2018-4-8 21:43
根据你设定的DMA数据传输长度,缓冲区满了DMA就停止,可以产生一个中断。不可能发生冲突的。 ...

没设置DMA中断呢
feixiang20 回答时间:2018-4-8 22:53:52
不断读出和不断写入过程不会发生冲突。 你看DMA循环模式就知道了

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

wenyangzeng 回答时间:2018-4-9 07:12:52

没设置DMA中断时ADC转换后的数据在ADC数据寄存器中,需要不断的去读取
hello_bug 回答时间:2018-4-9 08:06:23
不会冲突。DMA设置时有个缓冲区,满了就会中断。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

Dandjinh 回答时间:2018-4-9 09:07:39
把DMA改成循环,开启半长中断,在半长中断里处理

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

厦门浪子 回答时间:2018-4-9 10:24:34
toofree 发表于 2018-4-9 00:11
关于DMA,在RM0008手册上是这么描述的。见下图:

谢谢你的回答。
厦门浪子 回答时间:2018-4-9 10:24:55
Dandjinh 发表于 2018-4-9 09:07
把DMA改成循环,开启半长中断,在半长中断里处理

你好,我的问题是不开设中断的情况
12下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版