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

少年,你渴望力量吗?

前言

本文主要讲解ADC超频工作。

所需工具:

  • 开发板:STM32F103RCT6
  • STM32CubeMX
  • IDE: Keil-MDK
    相关文章:

  • STM32HAL ADC+TIM+DMA采集交流信号

  • STM32cubeHAL ADC+TIM+DMA (二)

    原理简介

    F1中文参考手册上写道ADC的始终不得超过14M,实际使用中是可以超过的,产商在写手册时都会有一定的保留值,稍微超过一点没问题,不只是ADC的时钟,系统总时钟72M也是可以超频到80多兆,甚至是100多兆。

          当然不推荐超频过多,保留值是出于使用稳定性,安全性的考虑。超频超越的过多或者是超频工作太久,单片机都是有可能出现罢工的。

超频是什么意思_超频的好处和坏处_超频的作用-与非网 (eefocus.com)

开启超频

在上一篇文章的工程基础上进行修改。先把定时器的触发频率调节到1.5M。

下面是时钟树的配置。

没有什么不一样的地方。因为cubemx是不允许我们超频的,如果超频就会报错,比如下面修改ADC Prescaler的分频强行改成18M。

冒红了吧,超频需要在keil里面通过编程更改。我们改回12M时钟。生成工程。

在main.c文件下找到SystemClock_Config函数,再在函数末尾处找到

PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV6;

这里的DIV6对应的正是cubemx时钟树里面的ADC Prescaler,这里目前是6分频,我们把他改成2分频,ADC的时钟就是36M了。

PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV2;

现在ADC理论上的采样率上限为

\frac{36M}{1.5+12.5}\approx2.57M

时钟开太高对单片机不好,平时4分频超到18M就行了,不必超到36M,我可不想让他英年早逝。

注意SystemClock_Config不在begin和end之间,会在cubemx生成工程时被更改。

实测

ADC采样率1.5M,信号发生器产生150khz的正弦信号,单片机采集后打印到VOFA上。可以看到一个周期确实是10个点。

后记

本文章收录于:

唐承乾的电赛小站

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

配套程序:

ADC+TIM+DMA超频采样 0积分下载