STM32cubeHAL ADC+TIM+DMA (二)

ADC+TIM+DMA采集交流(二)

前言

本文是《STM32HAL ADC+TIM+DMA采集交流信号》的续篇,这一篇我们将让ADC以1M的速度去采集。过程中会学习到ADC时钟,采样率控制的概念。

所需工具:

  • 开发板:STM32F103C8T6
  • STM32CubeMX
  • IDE: Keil-MDK

相关文章:

模式简介

前文介绍了ADC+TIM+DMA采集交流,以100k去采集交流信号,可是这样的配置是没法让ADC工作在1M采样率的。这里面需要更改时钟树,来开发ADC的采样上限。

ADC的时钟与采样率上限

ADC的时钟

image-20211216163707732

​ 这就是ADC的时钟,12M。我们可以更改前面的分频器ADC Prescaler来增大或者减小时钟大小。

STM32F1的ADC时钟上限是14M,如果超过了,就会报错。

转换时间

​ 每一次采样都需要一定的时间。他们符合这个公式:
转 换 时 间 = 采 样 时 间 + 12.5    ( 周 期 ) 转换时间=采样时间+12.5\ \ (周期) =+12.5  ()
周期

​ ADC时钟的倒数,比如12M的ADC时钟,那么一个周期为 1 12 M ≈ 0.0833 u s \frac{1}{12M}\approx0.0833us 12M10.0833us

采样时间

采样时间

图上所示就是采样时间,这里选择的是1.5个周期,此时的转换时间是 1.5 + 12.5 = 14 ( 周 期 ) 1.5+12.5=14(周期) 1.5+12.5=14对应 14 ∗ 1 12 M ≈ 1.166 u s 14*\frac{1}{12M}\approx1.166us 1412M11.166us

采样率上限

采 样 率 上 限 = A D C 时 钟 采 样 时 间 + 12.5 采样率上限=\frac{ADC时钟}{采样时间+12.5} =+12.5ADC

比如前一个文章的12MADC时钟,采样时间1.5周期,那么采样率上限为:
12 M 1.5 + 12.5 ≈ 857 k \frac{12M}{1.5+12.5}\approx{857k} 1.5+12.512M857k
如果我们如图把采样时间设置成7.5个周期呢?

image-20211216205702492

那么采样率上限:
12 M 7.5 + 12.5 = 600 k \frac{12M}{7.5+12.5}={600k} 7.5+12.512M=600k

提高采样率上限

​ 相信大家已经注意到了,采样率上限没能达到1M的原因是ADC的时钟只有12M,没有达到上限14M。我们可以通过更改时钟树来让ADC的时钟达到上限14M。

我在后面的处理中,发现F1的ADC的TIM形式触发,正常操作没法开到1M。这一点我在开发F4,H7的过程中没有碰到,可能是我的能力不够理解,也可能是一个BUG。

更改时钟树

image-20211216210214397

更改定时器

image-20211220173630325

触发信号TRGO频率为: 56 M 64 = 875 k \frac{56M}{64}=875k 6456M=875k

特别注意,TIM的时钟在上一步更改系统时钟树的时候,改成了56M。

实际测量发现,900k一下都没有问题。但是900k-1M会碰到触发异常的情况。

采样结果查看

image-20211220174108945

​ 让ADC去采集信号发生器产生的87.5k正弦信号,可以看到一个周期采集到了10个点,到推出采样率就是 87.5 k ∗ 10 = 875 k 87.5k*10=875k 87.5k10=875k。和我们设置的采样率相符。

如何开到1M采样率

不建议这样设置,因为900k和1M的采样效果相差不大。ADC连续模式下,采样率不可控,为了开到1M而牺牲采样率的可控不值得。

我将会在《STM32HAL ADC+TIM+DMA采集交流信号(三)》讲另外一种可行的方案。

更改时钟树

image-20211216210214397

ADC配置

image-20211220174401291

​ 其他配置和ADC配置更改为连续采样,触发方式选择软件触发。

采样结果查看

image-20211220174108945

​ 让ADC去采集信号发生器产生的100k正弦信号,可以看到一个周期采集到了10个点,到推出采样率就是 100 k ∗ 10 = 1 M 100k*10=1M 100k10=1M。和我们预算一样。

后记

本文章收录于:

唐承乾的电赛小站

本文为系列文章中的冰山一角,欢迎进入小站查看。

配套程序:

STM32的ADC+DMA+TIM采集交流信号.zip-嵌入式文档类资源-CSDN文库

  • 32
    点赞
  • 116
    收藏
    觉得还不错? 一键收藏
  • 22
    评论
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值