硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2448|回复: 4
收起左侧

[有问必答] 请问个ADC DMA传输的问题

[复制链接]

62

主题

77

回帖

263

积分

高级会员

积分
263
发表于 2018-4-8 19:55:22 | 显示全部楼层 |阅读模式
   adc采用DMA通道循环模式传输到内存变量空间。如果其他函数不停的读取存储到内存空间的ADC值,而DMA不停的搬运转换后的ADC到内存空间,在不断读出和不断写入过程不会发生冲突吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106959
QQ
发表于 2018-4-9 00:31:37 | 显示全部楼层
肯定会冲突的,看你采集的什么了,如果是采集的波形,建议开启下DMA HALF中断,如果是采集电压,这么搞没关系的,缓冲区别太大,直接求平均即可。
回复

使用道具 举报

3

主题

65

回帖

74

积分

初级会员

积分
74
发表于 2018-4-9 09:42:55 | 显示全部楼层
本帖最后由 westzg 于 2018-4-9 09:51 编辑

开启DMA 传输过半中断和 传输完成中断,DMA不停转换就行了。产生传输过半中断,读取 缓冲区前一半的数值处理,产生传输完成中断,读取缓冲区后一半的数值去处理
回复

使用道具 举报

335

主题

2037

回帖

3047

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3047
发表于 2018-4-9 13:55:15 | 显示全部楼层
应该没有问题的。 因为ADC转换速度有限,搬运到内存的时间间隔至少都是1us,其他函数读取这个内存有充分的时间的。 ADC是写入内存,函数是读取内存,不会冲突的。 总线冲突,会有内部的硬件仲裁,没问题的。
回复

使用道具 举报

3

主题

52

回帖

61

积分

初级会员

积分
61
发表于 2018-4-9 15:14:27 | 显示全部楼层
钉钉
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-12 04:57 , Processed in 0.218978 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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