ps:本文基于stm32F407ZGT6单片机
stm32F4单片机单通道采集的最大采样率为2.4M,所以有时会难以满足较高频率的采样,于是查阅芯片手册,发现stm32F4支持多重ADC采集,利用每个通道的转换时间,错位采样,从而提高采样率,最大把采样率开到2.4*3=7.2M. (去年初学ADC时研究的,基于cube和HAL库的三重ADC交错采样参考资料不多,我也是研究了一段时间,写下这篇博客希望可以帮助到更多人。)
示意图如下:
以下是官方例子的说明,
In this example, the system clock is 144MHz, APB2 = 72MHz and ADC clock = APB2 /2.
Since ADCCLK= 36MHz and Conversion rate = 5 cycles
==> Conversion Time = 36M/5cyc = 7.2Msps
这是利用软件触发ADC连续采样的,我试了一下,是可行的。网上为数不多的参考资料也是按上述连续转换模式下的。
但是我是比较习惯使用定时器触发采样的,因为采样率连续可调,比连续转换灵活一些。
所以我开始尝试定时器触发三重ADC!
配置如下:打开TIM8,挂在APB2上,为144M
时钟频率配置多少呢?
打开芯片手册:
由此可知 触发源只需要触发ADC1 ADC2和3是根据芯片设定好的三重模式固有时间后自动开启采集的
故ADC1只需配置2.4M 144M/60=2.4M
ADC如何配置呢?
再看芯片手册!
文章来源地址https://www.toymoban.com/news/detail-659323.html
DMA mode2 !
ADC1配置如下:
(选通道12是因为它纯净 干扰少)
记得打开DMA !
配置类似单通道ADC+定时器触发!
ADC2/3 同上 这里就不赘述了!
完成!
生成代码!
文章来源:https://www.toymoban.com/news/detail-659323.html
代码里如何写呢?
再再再次打开芯片手册!!
原来如此!我感觉我可以!
开启ADC123和TIM8:(注意三重ADC交替模式下,ADC1有固有开启函数)
编译!烧录!
去年测试的,疫情在家就不给测试图了QAQ
去年测试时是用信号发生器给了100khz正弦波信号,一个周期采到了72个点左右。
ps:据学长说这种方式不稳定,单片机工作量大时可能会出bug。
到了这里,关于stm32教程之三重ADC交错采样的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!