Stm32f103c8t6adc采样频率设置
时间: 2025-05-28 07:43:26 浏览: 27
### STM32F103C8T6 ADC 采样频率的设置与配置
在 STM32F103C8T6 微控制器中,ADC 的采样频率主要受以下几个因素的影响:时钟源的选择、转换模式(单次还是连续)、以及采样时间的设定。以下是对这些关键点的具体分析和实现方法。
#### 1. ADC 时钟源选择
STM32F103C8T6 的 ADC 时钟来源于 APB2 总线时钟。默认情况下,APB2 的最大频率为 72 MHz,但为了保证 ADC 正常工作,其输入时钟不得超过 14 MHz[^2]。因此,通常需要通过 RCC 配置来分频 APB2 时钟以满足这一要求。
```c
RCC->CFGR |= RCC_CFGR_ADCPRE_DIV6; // 将 APB2 时钟分频为 6,得到约 12 MHz 的 ADC 输入时钟
```
#### 2. 转换模式配置
STM32 提供两种基本的转换模式:单次转换模式和连续转换模式。对于高采样率需求的应用场景,推荐使用连续转换模式。
- **单次转换模式**:每次触发后仅执行一次转换。
- **连续转换模式**:一旦启动,将持续不断地进行转换直到停止命令发出。
启用连续模式的方法如下所示:
```c
hadc.Instance->CR2 |= ADC_CR2_CONT; // 开启连续转换模式
```
#### 3. 采样时间调整
每个通道都有独立的采样时间选项,范围从 1.5 到 239.5 个 ADC 时钟周期不等。较长的采样时间能够提升信噪比(SNR),但也相应降低了整体吞吐量。具体设置可通过初始化结构体完成:
```c
hadc.Init.ContinuousConvMode = ENABLE;
hadc.Init.NbrOfConversion = 1;
hadc.Init.DiscontinuousConvMode = DISABLE;
hadc.ChannelConfig[0].Channel = ADC_CHANNEL_0;
hadc.ChannelConfig[0].Rank = 1;
hadc.ChannelConfig[0].SamplingTime = ADC_SAMPLETIME_28CYCLES_5; // 设置第0通道采样时间为28.5个周期
HAL_ADC_Init(&hadc);
HAL_ADC_ConfigChannel(&hadc, &hadc.ChannelConfig[0]);
```
以上代码片段设置了第一个模拟输入端口 (PA0) 并指定它具有相对较短的采样期以便于达到更高的数据获取速率[^3]。
#### 4. 计算实际采样频率
最终的实际采样频率取决于所选的 ADC 时钟频率除以每轮扫描所需的总周期数(包括所有被测信号加上必要的死区时间)。例如,假设我们有三个不同的测量点分别采用不同长度的取样窗口,则整个序列可能看起来像这样:
\[
f_{sample}=\frac{f_{adc\_clk}}{(SMPR+1)\cdot N}
\]
其中 \(N\) 是参与一轮完整读取操作中的全部项目数目;\( SMPR \) 对应当前活动路径下的样本保留间隔值[^4]。
---
###
阅读全文
相关推荐


















