ADC的参考电压和基准电压
ADC(模数转换器)是将模拟信号转换为数字信号的设备。转换过程中,需要一个参考电压(Vref)作为转换的基准。这个参考电压决定了ADC的输入范围,通常ADC输出的数字值表示输入电压相对于参考电压的比例。
1. ADC基准电压和参考电压是什么?
1.1 参考电压(ADC Reference Voltage, Vref)
-
• 参考电压定义 :ADC转换时实际使用的电压基准 ,通常称为
Vref,决定了ADC能容忍的输入电压范围 ,即定义了ADC的满量程输入电压。例如,对于一个12位ADC,如果Vref=3.3V,那么输入电压0V对应数字输出0,3.3V对应4095即(2^12-1)。 -
• 数学关系 :
数字输出 = (Vin / Vref) × (2^N - 1)-
• Vin:输入电压
-
• Vref:参考电压
-
• N:ADC分辨率(位数)
-
关键结论:参考电压直接决定了ADC的测量范围,但并非完全等于测量范围。
-
• 对于单端输入的ADC:
-
• 当输入电压为0V时,ADC输出码 = 0
-
• 当输入电压 = Vref(参考电压)时,ADC输出码 = 满量程码
-
• 测量范围 = 0, Vref
-
-
• 对于差分输入的ADC:
-
• 当输入电压差 = -Vref/2 时,ADC输出码 = 0
-
• 当输入电压差 = +Vref/2 时,ADC输出码 = 满量程码
-
• 测量范围 = -Vref/2, +Vref/2
-
1.2 基准电压(Voltage Reference)
-
• 基准电压定义 :通常指一个高精度、高稳定性的电压源,用于提供参考电压(可以不局限于为ADC提供参考电压)。基准电压源可以是内部的(芯片内置)或外部的(外部电路提供)。内部基准电压通常由带隙基准(Bandgap)电路产生,外部基准则可以使用专门的基准电压芯片(如TL431、REF系列等)。
-
• 特性:
-
• 低温度系数(通常<50ppm/℃)
-
• 低噪声(微伏级别)
-
• 长期稳定性好
-
• 可以是内部电路或外部专用芯片
-
1.3 基准电压与参考电压的关系
-
• 基准电压 :是一个高精度、高稳定度的电压源,它可以是ADC参考电压的来源,也可以用于系统其他部分(如DAC、比较器等)。基准电压可以是内部的(如芯片内置的带隙基准)或外部的(如专用基准芯片)。
-
• 参考电压 :是ADC转换时使用的实际参考电压,它可以直接来自于基准电压,也可以来自电源电压或其他电压。
基准电压既可以作为参考电压直接使用,也可以用于校准和修正。
-
• 情况一:基准电压作为参考电压
- • 当ADC的参考电压选择为内部基准或外部基准时,这个基准电压就是参考电压,直接决定ADC的测量范围。例如,STM32的ADC可以选择内部基准VREFINT(约1.2V)作为参考电压,此时ADC的测量范围就是0~1.2V。
cpp
// STM32L4内部基准作为参考电压的配置
void ADC_UseInternalRefAsVref(void)
{
// 1. 使能内部基准电压(VREFINT)
ADC->CCR |= ADC_CCR_VREFEN;
// 2. 配置ADC使用内部基准作为参考电压
ADC->CCR |= ADC_CCR_VSEL_0;// 选择2.5V内部基准
// 3. 此时ADC的测量范围变为0~2.5V
//而不是默认的0~VDDA
// 优势:提高低电压测量精度
// 例如:测量0~1V的传感器信号
// 使用VDDA(3.3V):分辨率为3.3V/4096 ≈ 0.8mV
// 使用内部基准(2.5V):分辨率为2.5V/4096 ≈ 0.61mV
// 分辨率提升了约30%
}
-
• 情况二:基准电压用于修正
- • 当ADC使用其他参考电压(如VDDA)时,内部基准电压(VREFINT)可以用来校准VDDA的实际值,从而修正ADC的测量结果。这种情况下,内部基准电压并不直接作为参考电压,而是作为一个已知的、稳定的电压来测量VDDA的波动,从而计算出实际的参考电压值。
cpp
// 当使用VDDA作为参考电压时,用内部基准校准
void ADC_CalibrateWithInternalRef(void)
{
// 情况:ADC使用VDDA作为参考电压
// 但VDDA的实际值可能不是精确的3.3V
// 1. 测量内部基准电压通道
uint16_t vrefint_raw = ADC_ReadChannel(ADC_CHANNEL_VREFINT);
// 2. 读取出厂校准值(在3.3V VDDA下测量的VREFINT值)
uint16_t vrefint_cal = *(uint16_t*)0x1FFF75AA;
// 3. 计算实际VDDA
// 已知:出厂时VDDA=3.3V,VREFINT典型值=1.2V
// 公式:实际VDDA = (3.3V × vrefint_cal) / vrefint_raw
float vdda_actual = (3.3f * vrefint_cal) / vrefint_raw;
// 4. 用实际VDDA校准所有测量值
// 原来:电压 = (ADC码/4095) × 3.3V(假设值)
// 现在:电压 = (ADC码/4095) × vdda_actual(实际值)
}
cpp
基准电压(Voltage Reference)
↓(可以作为)
参考电压(ADC Reference, Vref)
↓(决定)
ADC测量范围
↓(影响)
ADC分辨率(LSB = Vref / (2^N - 1))
1.4 ADC参考电压的来源
-
• 内部基准电压(如带隙基准,1.2V、2.5V等)
-
• 外部基准电压引脚接入的电压(通过VREF+引脚接入)
-
• 电源电压(如VDD)等
| 来源类型 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 内部基准 | 集成度高、成本低、简单 | 精度较低(±1-2%)、温漂大、噪声较高 | 一般精度要求、消费电子 |
| 外部基准 | 精度高(±0.1%以下)、温漂小、噪声低 | 增加成本、占用PCB面积、设计复杂 | 精密测量、工业控制 |
| 电源电压 | 无需额外电路、成本最低 | 精度最差、随电源波动 | 低成本应用、比例测量 |
-
• 参考电压决定了ADC的测量范围,参考电压是多少,ADC的输入范围就是0到该电压(单端情况下)。
-
• 基准电压可以是参考电压的来源,也可以仅用于校准。
-
• 内部基准电压既可以直接作为参考电压使用,也可以用来校准其他参考电压(如VDDA)。
2. 实际工程中的三种场景
场景一:内部基准直接作为参考电压
适用于:需要固定、稳定的测量范围
-
• 优点:不依赖外部电源质量
-
• 缺点:基准电压值固定,可能不满足所有需求
例如:使用STM32内部1.2V基准
-
• ADC测量范围:0~1.2V
-
• 分辨率:1.2V/4096 ≈ 0.29mV(12位ADC)
-
• 适合测量小信号传感器
场景二:外部基准作为参考电压
适用于:高精度测量
-
• 优点:精度高、温漂小、噪声低
-
• 缺点:增加成本和PCB面积
例如:使用外部REF5025基准芯片
-
• 基准电压:2.500V ± 0.05%
-
• ADC测量范围:0~2.500V
-
• 精度:主要取决于基准精度
场景三:电源作为参考电压,内部基准用于校准
适用于:低成本、中等精度应用
-
• 优点:节省成本
-
• 缺点:精度受电源影响
流程:
-
• ADC使用VDDA(3.3V)作为参考
-
• 定期测量内部基准电压通道
-
• 计算VDDA实际值
-
• 用实际VDDA校准所有测量

3. 不同MCU的片上ADC参考电压
不同MCU的ADC参考电压来源可能不同,通常可以通过寄存器配置选择。
3.1 STM32F1
STM32的ADC参考电压来源取决于具体型号。对于有Vref+和Vref-引脚的型号,参考电压可以由外部提供;对于没有这些引脚的型号,参考电压通常来自电源电压(VDDA和VSSA)。

参考电压来源
-
• 外部参考电压:通过Vref+和Vref-引脚接入。Vref+接正参考电压,Vref-接负参考电压(通常是地)。
-
• 内部参考电压:STM32内部有一个内置的参考电压(VREFINT),但这个电压并不是直接作为ADC的参考电压,而是用于校准或测量内部参考电压值 ,以便进行更精确的转换。实际上,ADC的参考电压仍然是VDDA(模拟电源电压)或外部Vref+。注意:有些STM32型号内部有可选的参考电压源,但通常还是需要外部参考电压来获得高精度。

-
• 在STM32中,ADC的参考电压默认是VDDA(模拟电源电压)。如果使用外部参考电压,需要将Vref+连接到外部基准电压源电路,并且VDDA也必须供电(通常VDDA和Vref+可以连接在一起,但为了精度,有时会分开)。
-
• 内部参考电压(VREFINT):STM32内部有一个带隙基准电压,大约1.2V(具体值见数据手册),它连接到ADC的一个内部通道(通常为通道17)。用户可以通过读取这个通道的值来反推VDDA的电压,从而校准ADC的测量。但注意,这个内部参考电压并不是直接作为ADC的参考电压(即ADC的参考电压仍然是VDDA或外部Vref+),它只是用于校准。
-
• 配置:在STM32中,ADC的参考电压来源通常由硬件电路决定,软件上不能随意选择参考电压来源(除了少数系列,如STM32L0,可以通过配置选择内部参考电压作为ADC的参考电压)。对于大多数STM32,参考电压是固定的(VDDA或外部Vref+),软件只能选择是否使用内部参考电压通道进行校准。
-
• 例如,在STM32F1中,ADC的参考电压就是VDDA和VSSA。没有寄存器可以选择其他参考电压。而在STM32L系列中,ADC支持可编程的参考电压,可以选择内部参考电压(VREFINT)作为参考电压,但需要注意内部参考电压的精度和温度漂移。
3.2 ARM类型

-
• 可以控制内部基准电压值,但是AD只能使用1.45V的基准电压作为内部参考电压

-
• AD可通过配置选择参考电压来源:常见的选择VDD即MCU供电电源或者片上AD的单独供电电源。如果需要更高精度,则需要搭建外部基准源电路;如果需要简单,可以选择内部基准作为AD的参考电压,但导致AD的输入采集范围受限制。
内部基准(VREFINT)的双重作用
-
- 校准用途(主要功能)
cpp
// 读取内部基准通道值来校准VDDA
float VDDA_actual = 3.3; // 假设标称值
uint16_t VREFINT_CAL = *((uint16_t*)0x1FFF7A2A); // 出厂校准值@3.3V
uint16_t VREFINT_DATA = ADC_ReadChannel(ADC_CHANNEL_VREFINT);
float VREFINT_VOLT = 1.20; // 典型值1.20V
// 计算实际VDDA
VDDA_actual = (VREFINT_CAL * VREFINT_VOLT) / VREFINT_DATA;
// 校准其他通道测量值
float voltage_measured = (adc_raw * VDDA_actual) / 4095.0f;
-
- 直接作为参考电压(部分型号支持)
cpp
// STM32L等支持内部基准作为ADC参考
// 设置ADC参考电压为内部基准
ADC1->CCR |= ADC_CCR_VREFEN; // 使能内部基准
ADC1->CCR |= ADC_CCR_VSEL_0; // 选择VREFINT作为参考
// 注意:内部基准电压通常较低(1.2V或2.5V)
// 会减小ADC输入范围,但提高低电压测量精度
- • 会减小ADC输入范围,但提高低电压测量精度
配置经验
cpp
// 高精度配置示例(使用外部基准)
void ADC_Config_HighPrecision(void)
{
// 硬件:VREF+连接外部2.5V基准(如REF5025)
// VDDA必须≥VREF+ + 0.2V
// 软件配置
ADC->CCR &= ~ADC_CCR_VREFEN; // 禁用内部基准输出
// 无需特殊配置,ADC自动使用VREF+引脚电压
// 注意:ADC参考电压范围需符合芯片规格
// STM32F4:2.4V ≤ VREF+ ≤ VDDA
}
3.3 DSP28335(TI C2000系列)
参考电压
-
• 根据TI的官方文档,DSP28335的ADC模块有一个内部参考电压源,它产生两个电压:REFHI和REFLO。这两个电压是内部带隙基准产生的,典型值为REFHI = 2.048V,REFLO = 1.248V,因此内部参考电压差为0.8V(2.048V - 1.248V = 0.8V)。但是,ADC的输入范围并不是由这个0.8V直接决定的,因为内部有一个放大器,可以将输入信号进行缩放。
-
• 实际上,ADC的模拟输入电压范围是由内部参考电压和外部电路共同决定的。DSP28335的ADC模块可以工作在两种模式:单端模式和差分模式。在单端模式下,ADC的输入电压范围是0到3V(相对于地)。在差分模式下,输入电压范围是-0.5V到3.5V(差分对的两个引脚之间的电压差)。
-
• 那么,为什么内部参考电压是2.048V和1.248V这样的特殊值呢?这主要是为了满足ADC的输入范围要求,同时提供稳定的参考。内部参考电压源产生的0.8V差分参考电压,经过内部放大电路,可以使得ADC的输入范围达到0-3V(单端)。具体来说,内部放大器将输入信号放大(或衰减)到0.8V的参考电压范围内,然后进行转换。
cpp
输入信号范围 (0~3V)
│
↓ 除以3.75(实际上是电平移位+缩放)
│
ADC核心输入 (0~0.8V)
│
↓ 与0.8V参考比较
│
数字输出 (0~4095)
-
• 关键点:输入放大器/衰减器的作用
-
• 不是简单的增益为1的放大器
-
• 而是将0-3V映射到0~0.8V的线性转换器
-
• 这种设计允许使用低电压、高精度的ADC核心
-
-
• 外部参考电压引脚(ADCREFP和ADCREFM)是用来接收外部参考电压的,但通常不推荐直接使用外部参考电压,因为内部参考电压已经足够稳定 。如果需要使用外部参考,那么需要将外部参考电压连接到这两个引脚,并且外部参考电压的值必须满足一定的要求(具体见数据手册)。但是,请注意,即使使用外部参考,ADC的输入范围也不是直接由外部参考电压决定的,因为内部放大器的增益是固定的,所以外部参考电压必须与内部电路匹配。
-
• 根据数据手册,外部参考电压必须满足:ADCREFP - ADCREFM = 1V(典型值),并且ADCREFM通常接1V,ADCREFP接2V。但是,为什么在数据手册中又提到内部参考是2.048V和1.248V呢?这里有一个关键点:内部参考电压和外部参考电压是两套不同的系统。内部参考电压是芯片自带的,而外部参考电压是用户提供的。当使用内部参考时,芯片内部会将REFHI和REFLO连接到ADCREFP和ADCREFM引脚,并且需要在ADCREFP和ADCREFM引脚上连接外部电容(通常为10µF和0.1µF)来稳定参考电压。当使用外部参考时,用户需要提供稳定的1V差分参考电压(即ADCREFP比ADCREFM高1V),并且ADCREFM通常为1V,ADCREFP为2V。

-
• 那么,为什么参考电压是2.048V和1.248V这样的特殊值呢?实际上,外部参考电压并不一定是2.048V和1.248V,而是要求ADCREFP比ADCREFM高1V。但是,内部参考电压源产生的电压是2.048V和1.248V,所以当使用内部参考时,ADCREFP和ADCREFM引脚上的电压就是这两个值 。因此,2.048V和1.248V是内部参考电压源的输出电压,而外部参考电压要求是1V的电压差,但电压值可以不同(例如ADCREFM=1V,ADCREFP=2V)。

-
• 为什么外部参考电压不决定ADC输入电压范围?因为ADC的输入电压范围是由内部放大器的增益和参考电压差共同决定的。内部参考电压差是0.8V(2.048V-1.248V),而外部参考电压差要求是1V。但是,无论使用内部参考还是外部参考,ADC的输入范围都是0-3V(单端)。这是因为内部放大器的增益是固定的,它将输入信号调整到参考电压的范围内。具体来说,对于单端输入,ADC的转换公式为:
- • 数字输出 = (输入电压 - 地) / (3V) * 4095
-
• 这里的3V是ADC的满量程输入电压,而不是参考电压。参考电压(无论是内部0.8v还是外部1v)是用来产生内部比较器的参考电平的,但是通过内部放大器的增益,使得输入电压范围被映射到0-0.8V从而能够和AD的参考电压进行比较得到AD码值。
-
• 因此,我们可以这样理解:DSP28335的ADC模块内部有一个固定的增益,使得在单端模式下,0-3V的输入电压被转换到内部ADC核心的0-0.8V(或0-1V,取决于参考电压差)范围内。然后,内部ADC核心(12位)将这个0-0.8V(或0-1V)的电压转换为数字量。

总结一下
-
• DSP28335的ADC内部参考电压源产生REFHI=2.048V,REFLO=1.248V,差值为0.8V。
-
• 当使用内部参考时,需要在ADCREFP和ADCREFM引脚上连接电容,此时这两个引脚上的电压就是2.048V和1.248V。
-
• 当使用外部参考时,需要提供1V的差分电压(例如ADCREFM=1V,ADCREFP=2V)。
-
• ADC的输入电压范围(单端0-3V)是由内部放大器的增益和参考电压差共同决定的,而不是直接由参考电压值决定。
cpp
DSP28335 ADC参考电压系统三要点:
1. 双参考电压架构
- REFHI和REFLO提供差分参考
- 典型值:2.048V和1.248V(差0.8V)
- 这个0.8V是ADC核心的基准
2. 输入范围固定
- 前端模拟电路固定输入为0~3V
- 与参考电压值无关
- 这是硬件设计决定的
3. 参考电压作用
- 只影响ADC核心的转换精度
- 不决定输入信号范围
- 提供稳定的转换基准
为什么DSP28335的参考电压不决定输入范围?
-
• 因为TI采用了输入范围固定的架构设计。前端模拟电路将0-3V输入信号线性映射到ADC核心的0~0.8V范围,参考电压只提供这个0.8V基准的精度。这种设计简化了用户接口,保证了系统稳定性,是TI DSP的经典设计之一。
-
• 精度与范围分离:参考电压影响精度,前端电路决定范围
2.048V等特殊电压的来源?
- • 来自内部带隙基准和缓冲放大器的组合,选择这些值是为了二进制计算的便利性和历史兼容性。它们不是ADC工作的必要条件,但提供了良好的系统兼容性和计算便利性。
参考电压配置寄存器
cpp
// ADC参考电压选择(AdcRegs.ADCCTL1)
#define ADC_REF_SEL_INTERNAL 0x0000
#define ADC_REF_SEL_EXTERNAL 0x0020
// 配置示例
void ConfigureADC28335(void)
{
// 选择内部参考电压
AdcRegs.ADCCTL1.bit.REF_SEL = ADC_REF_SEL_INTERNAL;
// 使能内部参考电压电路
AdcRegs.ADCCTL1.bit.REF_ENA = 1;
// 等待参考电压稳定(数据手册要求)
DELAY_US(100);// 至少50µs
// 注意:使用内部参考时,REFHI/REFLO引脚
// 必须连接推荐的外部电容网络
}
- • 使用内部参考时,REFHI/REFLO引脚必须连接推荐的外部电容网络
外部基准连接方式
cpp
// 使用外部基准时的配置
void ADC_ExternalRef_Config(void)
{
// 1. 禁用内部基准
AdcRegs.ADCCTL1.bit.REF_ENA = 0;
// 2. 选择外部参考
AdcRegs.ADCCTL1.bit.REF_SEL = ADC_REF_SEL_EXTERNAL;
// 3. 硬件连接:
//REFHI引脚 ← 外部基准芯片(如REF3030)
//REFLO引脚 ← 外部基准芯片地或偏置电压
//注意:外部基准电压必须在规定范围内 REFHI-REFLO
}
3.4 MPC5xxx(PowerPC架构)
-
• ADC是12位逐次逼近型(SAR)ADC。
-
• 参考电压可以选择内部参考电压(内部带隙基准)或外部参考电压(通过VREFH和VREFL引脚)。
-
• 内部参考电压有两种选择:1.5V或2.5V(通过配置选择)。
-
• 外部参考电压通过VREFH和VREFL引脚提供,VREFH是正参考电压,VREFL是负参考电压(通常是地)。
ADC的输入电压范围由参考电压决定。对于MPC5xxx,ADC的模拟输入电压范围是VREFL到VREFH。也就是说,当使用内部参考电压时,输入电压范围是0V到内部参考电压(1.5V或2.5V)。当使用外部参考电压时,输入电压范围是外部VREFL到VREFH。
但是,这里有一个重要的点:MPC5xxx的ADC输入通道可以配置为单端输入或差分输入。在单端输入模式下,输入电压范围是VREFL到VREFH。在差分输入模式下,输入电压范围是-(VREFH-VREFL)/2到+(VREFH-VREFL)/2,即正负一半的参考电压差。
因此,MPC5xxx的ADC参考电压(无论是内部还是外部)确实决定了ADC的输入电压范围。这与DSP28335不同,DSP28335的输入电压范围是固定的0~3V,与参考电压无关。
参考电压来源
-
• 内部参考电压:由芯片内部的带隙基准电路产生,可以选择1.5V或2.5V。这个电压通过内部缓冲器连接到ADC的参考电压输入。
-
• 外部参考电压:通过VREFH和VREFL引脚从外部提供。外部参考电压必须满足一定的条件,例如VREFH必须大于VREFL,且电压差在规定的范围内(具体见数据手册)。
-
• ADC的输入电压范围由参考电压决定。对于MPC5554,ADC的模拟输入电压范围是VREFL到VREFH。也就是说,当使用内部参考电压时,输入电压范围是0V到内部参考电压(1.5V或2.5V)。当使用外部参考电压时,输入电压范围是外部VREFL到VREFH。
-
• 因此,MPC5554的ADC参考电压(无论是内部还是外部)确实决定了ADC的输入电压范围。这与DSP28335不同,DSP28335的输入电压范围是固定的0~3V,与参考电压无关。
参考电压配置
-
• MPC5554的ADC参考电压配置通过ADC模块的配置寄存器完成。具体来说,需要配置ADC的CR0寄存器中的REF_SEL位和REF_VOLT位。
-
• 例如,选择内部参考电压2.5V:
-
• REF_SEL = 0 (内部参考)
-
• REF_VOLT = 1 (2.5V)
-
-
• 选择外部参考电压:
- • REF_SEL = 1 (外部参考)
输入电压范围与参考电压的关系
对于单端输入
-
• V_in 的范围是 VREFL 到 VREFH。
-
• 当使用内部参考电压时,VREFL通常接地(0V),VREFH为内部参考电压(1.5V或2.5V)。
-
• 因此,输入电压范围是0V到1.5V或0V到2.5V。
对于差分输入
-
• 正输入和负输入之间的电压差 V_diff = V_in+ - V_in-。
-
• V_diff 的范围是 -(VREFH-VREFL)/2 到 +(VREFH-VREFL)/2。
-
• 例如,如果使用内部2.5V参考,则VREFH=2.5V,VREFL=0V,那么差分输入范围是-1.25V到+1.25V。
4. 内部基准电压是否可以直接给AD用?
内部参考电压通常可以直接作为ADC的参考电压使用,但需要注意以下几点:
-
• 精度:内部参考电压的精度通常不如外部专用基准电压芯片。内部基准电压一般初始精度在±1%左右,且受温度影响较大。外部基准电压芯片的精度可以达到±0.1%甚至更高。
-
• 稳定性:内部基准电压的温漂和长期稳定性可能较差,而外部基准电压芯片通常具有更好的温度系数和长期稳定性。
-
• 噪声:内部基准电压可能受到芯片内部数字电路的噪声干扰,外部基准电压通常噪声较低。
-
• 灵活性 :内部参考电压的电压值通常是固定的(如1.2V、2.5V等),而外部基准电压可以选择不同的电压值,以适应不同的输入范围。
因此,内部参考电压可以直接用作ADC的参考电压,但一般用于对精度要求不高的场合。对于高精度测量,建议使用外部基准电压。
另外,内部参考电压也常用于校准。例如,在STM32中,内部参考电压(VREFINT)连接到ADC的一个通道,通过测量这个固定电压,可以推算出实际VDDA的电压,从而校准其他通道的测量值。这种方法可以提高ADC的测量精度,尤其是在VDDA波动或未知的情况下。
开始
↓
测量精度要求?
├─ 要求<0.1% → 必须使用外部基准
├─ 要求0.1-1% → 评估温度和成本
│ ├─ 温度变化大 → 外部基准
│ └─ 温度稳定 → 可考虑内部基准
└─ 要求>1% → 优先使用内部基准
↓
电源稳定性?
├─ 电源噪声大/波动大 → 外部基准或加强滤波
└─ 电源稳定 → 内部基准可行
↓
成本与空间限制?
└─ 严格限制 → 内部基准
└─ 不严格 → 根据精度决定
5. 软硬件设计要点
5.1 去耦电容选择原则
-
• 大容量电容:10-100µF,提供储能,应对低频波动
-
• 小容量电容:0.1µF,滤除高频噪声,尽可能靠近MCU引脚
-
• 材质选择:X7R或X5R陶瓷电容,避免使用Y5V
5.2 软件配置
cpp
void ADC_Reference_Init_Sequence(ADC_RefConfig_t *cfg)
{
// 1. 上电延时,等待电源稳定
delay_ms(10);
// 2. 配置GPIO(如果需要)
if(cfg->source == REF_EXTERNAL)
{
configure_ref_pins_as_analog();
}
// 3. 使能基准电压电路
enable_reference_circuit(cfg);
// 4. 等待基准稳定(关键!)
// 内部基准:50µs - 10ms(数据手册查具体值)
// 外部基准:看基准芯片手册,通常1-10ms
delay_ms(cfg->settling_time_ms);
// 5. 执行校准(如果支持)
if(cfg->auto_calibrate)
{
adc_calibrate();
}
// 6. 验证基准电压(可选但推荐)
if(validate_reference_voltage() == FAIL)
{
handle_error();
}
}
5.3 常见问题
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| ADC读数不稳定 | 基准噪声大 | 增加去耦电容、远离噪声源 |
| 读数随温度漂移 | 基准温漂大 | 使用外部低温漂基准、软件温度补偿 |
| 读数整体偏差 | 基准电压不准 | 外部基准或软件校准 |
| 小信号分辨率差 | 基准电压过高 | 使用更低的基准电压(如2.5V代替3.3V) |
| 基准无法启动 | 负载电容太大 | 减少电容值、增加串联电阻 |
5.4 检查清单
在ADC设计时,依次检查:
-
1.确定精度和温度要求
-
2.选择基准类型(内/外)
-
3.设计基准电路(含去耦)
-
4.配置MCU寄存器
-
5.添加足够稳定时间
-
6.实现校准机制
-
7.验证基准电压实际值
-
8.测试全温度范围性能
6. 总结与经验
-
• "基准定精度,参考定范围":基准电压决定测量精度,参考电压决定输入范围
-
• "内部方便外部准":内部基准使用方便,外部基准精度更高
-
• "三要三不要":
-
• 要高精度→要外部基准
-
• 要低温漂→要外部基准
-
• 要低成本→要内部基准
-
• 不要忽略基准的稳定时间
-
• 不要忘记基准的去耦电容
-
• 不要混用数字地和模拟地
-
-
• "STM32看VDDA,28335配电容,5xxx灵活选":
-
• STM32:关注VDDA质量,VREF+可外接。大多数系列的参考电压由VDDA或外部Vref+提供,内部VREFINT用于校准。少数系列(如STM32L0、F3)可以选择内部参考电压作为ADC参考电压。
-
• DSP28335:内部基准必须配外部电容。可以通过软件配置选择内部或外部参考电压。内部参考电压需要外部电容滤波。建议在高精度应用中使用外部基准。
-
• MPC5xxx:软件可选择内外基准,电压可调。可以配置内部参考电压(1.5V或2.5V)或外部参考电压。内部参考电压可以直接使用,但外部基准能提供更好的性能。
-