stm32cubemx ADC+TIM+DMA超频采样
Posted 四臂西瓜
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了stm32cubemx ADC+TIM+DMA超频采样相关的知识,希望对你有一定的参考价值。
ADC+TIM+DMA采集交流(三)
少年,你渴望力量吗?
前言
本文主要讲解ADC超频工作。
所需工具:
- 开发板:STM32F103RCT6
- STM32CubeMX
- IDE: Keil-MDK
相关文章:
原理简介
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理论上的采样率上限为
36
M
1.5
+
12.5
≈
2.57
M
\\frac36M1.5+12.5\\approx2.57M
1.5+12.536M≈2.57M
时钟开太高对单片机不好,平时4分频超到18M就行了,不必超到36M,我可不想让他英年早逝。
注意SystemClock_Config不在begin和end之间,会在cubemx生成工程时被更改。
实测
ADC采样率1.5M,信号发生器产生150khz的正弦信号,单片机采集后打印到VOFA上。可以看到一个周期确实是10个点。
后记
本文章收录于:
本文为系列文章中的冰山一角,欢迎进入小站查看。
配套程序:
以上是关于stm32cubemx ADC+TIM+DMA超频采样的主要内容,如果未能解决你的问题,请参考以下文章
STM32HAL ADC+TIM+DMA采集交流信号 基于cubemx
STM32HAL ADC+TIM+DMA采集交流信号 基于cubemx
STM32HAL ADC+TIM+DMA采集交流信号 基于cubemx