568 字
3 分钟
ADC DMA TIM三
2023-06-05
2026-03-30

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

前言

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

所需工具:

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

相关文章:

原理简介

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

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

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

开启超频

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

image-20220305181716630

下面是时钟树的配置。

image-20220305173631343

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

image-20220305174424672

冒红了吧,超频需要在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理论上的采样率上限为

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

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

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

image-20220305175408276

实测

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

image-20220305182617344

后记

本文章收录于:

唐承乾的电赛小站

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

配套程序:

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

ADC DMA TIM三
/posts/adc-dma-tim三/
作者
唐承乾
发布于
2023-06-05
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

Personal Site
唐承乾
Profile Image of the Author
技术笔记、长期专题与电子书草稿

嵌入式 & AI 工作流。螺旋式学习,把踩过的坑整理成以后还能复用的东西。

GitHub 知乎
CSDN