打印
[STM32F1]

STM32 多路ADC 定时触发

[复制链接]
955|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wangwei0|  楼主 | 2019-7-17 15:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,现在有这么一个问题想寻求一个思路
我要实现的目的是,100us循环点亮6个LED,每次只有一个亮,在LED亮的时候开启对应对通道的ADC采集数据(每个LED对应一路ADC,开启LED后,ADC的电压会根据环境变化而变化)

问题一、我用定时器触发LED点亮,同时触发ADC采样,这样在初始化的时候就初始化6路ADC,用DMA中断来收集数据,这样做就是要需要收集6路的ADC数据。我在根据需要采集其中的一路
             这样的做法就是会收集很多无用数据。
问题二、就是关于DMA中断来的时间问题。如开启6路ADC,缓存BUFF为20*6,例如ADC采样频率239.5,这样第一次DMA中断来的时间大概在2520us,这个时间是正确的。但是如果第二次                     DMA中断很快就来了。我理解是DMA也是先进先出的。ADC转换完一次就来一次DMA中断。
请教下各位大神有没有好的方法来实现我的目的的。 如果只配置一路ADC,每次定时器中断来了点亮LED后  切换下一路ADC  这样不知是否可行。这样就是要频繁配置ADC。




使用特权

评论回复
沙发
香水城| | 2019-7-18 12:57 | 只看该作者
你可以通过定时器触发,ADC配置在间断触发模式。每触发一次就转换一个ADC通道。

这样的话 让各路ADC结果放在固定的内存地址。一轮6路转换完成后产生DMA传输完成中断。

你按需提取结果。

使用特权

评论回复
板凳
keaibukelian| | 2019-8-9 11:52 | 只看该作者
不用dma也可以吧

使用特权

评论回复
地板
labasi| | 2019-8-9 11:56 | 只看该作者
可以自己试一下

使用特权

评论回复
5
paotangsan| | 2019-8-9 12:03 | 只看该作者
我也想试试

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

1

粉丝