灵动MCU的ADC参考电压(V<sub>REF</sub>)通常有以下几种来源,具体取决于芯片型号:
参考源类型 描述
外部 V<sub>REF</sub> 引脚 单独引脚供参考电压(如 VREF+)
V<sub>DDA</sub> 电源电压 使用模拟电源作为参考电压(默认)
内部参考源(VREFINT) 固定值参考(如1.2V),用于内部测量
注意:大部分 MM32 系列不支持在 ADC 采样过程中动态修改参考源,因其通常在 ADC 初始化时一次配置,仅少数型号可能允许关停重配。
二、是否能“动态”切换 V<sub>REF</sub>?
典型限制:
参考电压源通常在 ADC 初始化时配置,并不能每次采样时随意更换;
更换参考电压通常需要关闭ADC → 重新配置参考源 → 重新启动ADC,不适合快速切换;
部分芯片甚至无软件可选 V<sub>REF</sub>,只能使用固定源(如 V<sub>DDA</sub>);
某些高端型号(如 MM32SPIN、MM32L0x)可能具备内部VREFINT切换能力,但需参考具体数据手册或参考代码。
三、应用于“多电压测量”的替代方案
在测量多个电压源,且电压幅值差异较大(如1.5V电池和24V电源)时,我们通常希望有更灵活的动态测量策略,此时可考虑以下方式:
1. 分压匹配 + 固定 V<sub>REF</sub>
使用单一稳定 V<sub>REF</sub>(如3.3V),配合每个测量通道使用不同的前端电阻分压比例,将所有电压统一压降到 ADC 线性范围。
c
复制
编辑
// 不同分压,对应不同通道
ADC1 -> 电池A(通过1:2分压)
ADC2 -> 24V(通过1:10分压)
然后软件中使用每通道不同的“校准/还原系数”即可还原原始电压。
2. 基于 VREFINT 的内部自校准
灵动部分MCU支持测量内部 VREFINT(如 1.2V)通道。通过反推实际 V<sub>DDA</sub> 电压,实现 ADC 精度补偿,特别适合电池供电下V<sub>DDA</sub> 非稳定场景。
c
复制
编辑
// 读取内部1.2V通道
uint16_t adc_vrefint = ADC_ReadChannel(VREFINT_CHANNEL);
float vdda = 1.2 * 4095 / adc_vrefint;
3. 多芯片/多ADC策略(极端场合)
如果需要多个参考电压并且无法满足,可以考虑以下策略:
使用带不同参考电压的外部ADC芯片
使用多个ADC模块(部分MCU具备 ADC1/ADC2)
或干脆 MCU + 模拟开关分时接入不同测量通道
|