学习笔记之ADC

这篇博客详细介绍了STM32的ADC功能,包括18个通道的配置、12位精度、扫描和间断模式等。还讨论了规则通道组和注入通道组的区别,以及如何设置单次、连续和扫描转换模式。此外,还涵盖了ADC的双模式、数据对齐和软件配置示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、基础知识

1.  18个通道,可测16个外部和2个内部信号源,可设置成单侧、连续、扫描、间断模式执行

2.  12位精度

3.   扫描模式,通道0到通道n的自动转化

4.  自校准

5.  按通道配置采样时间

6.  间断模式?

7.  双ADC模式?

8.  供电要求2.4~3.6V

9.  输入范围0~3.6V

二、功能描述

1.  通道选择:

     STM32的每个ADC模块通过内部的模拟多路开关,可以切换到不同的输入通道并进行转换。在任意多个通道上以任意顺序进行的一系列转换构成成组转换。例如,可以如下顺序完成转换:通道3、通道8、通道2、通道2、通道0、通道2、通道2、通道15。

    有2种划分转换组的方式:规则通道组和注入通道组。通常规则通道组中可以安排最多16个通道,而注入通道组可以安排最多4个通道。

    在执行规则通道组扫描转换时,如有例外处理则可启用注入通道组的转换。规则转换和注入转换均有外部触发选项,规则通道转换期间有DMA请求产生,而注入转换则无DMA请求,需要用查询或中断的方式保存转换的数据。

    一个不太恰当的比喻是:规则通道组的转换好比是程序的正常执行,而注入通道组的转换则好比是程序正常执行之外的一个中断处理程序。 规则组由多达16个转换组成。规则通道和它们的转换顺序在ADC_SQRx寄存器中选择。规则组中转换的总数写入ADC_SQR1寄存器的L[3:0]位中。
     注入组由多达4个转换组成。注入通道和它们的转换顺序在ADC_JSQR寄存器中选择。注入组里的转换总数目写入ADC_JSQR寄存器的L[1:0]位中。
     如果规则转换

### STM32 ADC 学习教程和笔记 #### 一、STM32 ADC 基本概念 STM32F103ZET6 单片机配备有三个12位精度的模拟数字转换器(ADC),总共提供18个通道,能够处理来自外部的16个信号源以及两个内部信号源。这些通道支持多种工作模式,包括但不限于单次转换、连续转换、扫描模式和间断模式。值得注意的是,为了确保正常运作,ADC模块所需的输入时钟频率不应超过14MHz,该时钟是从APB2总线上的PCLK2经过预分频得到的[^3]。 #### 二、ADC 软件启动机制分析 对于通过软件指令来发起一次新的转换操作而言,在某些情况下可能会涉及到查询`ADC_GetSoftwareStartConvStatus()`函数的状态返回值;然而实际上此方法并不常用,因为其功能较为有限,并未被广泛应用于实际项目开发当中[^2]。 #### 三、触发方式的选择 除了上述提到的纯软件控制之外,还可以利用硬件事件作为触发条件来进行自动化的数据采集过程。这类触发源通常来源于定时器产生的中断请求或者其他外设发出的相关脉冲信号。此外,整个AD转换流程依赖于由RCC配置好的专用时钟源——即所谓的ADC_CLK,它是驱动逐次逼近型A/D变换的核心动力源泉[^4]。 #### 四、性能参数考量 假设当前使用的ADC时钟频率设定为最大允许值14MHz,则完成一轮完整的采样加量化所需时间大约等于1微秒左右。具体计算公式如下所示: \[T_{conv}=(SMPR+12.5)\times\frac{1}{f_{adc}} \] 其中\( SMPR \)代表样本保持阶段所占用的时间长度,默认设置下取值为1.5个周期数[^5]。 ```python # Python代码片段用于验证理论计算结果 def calculate_conversion_time(f_adc, smpr=1.5): """Calculate the conversion time based on given parameters.""" t_conv = (smpr + 12.5) * (1 / f_adc) return round(t_conv, ndigits=9) print(calculate_conversion_time(14e6)) # Output should be close to 1 us ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值