使用的板子为STM32NucleoL476RG。目的是测量给板子供电的电池电压,需要将电源线直接接在vbat引脚上。参考UM1724中的Figure 28,需要断掉SB45,这样vbat的电压来源就是外部电源。
程序上,打开STM32 CubeMX, 选择vbat和vrefint channel。
参数设置这里,其他按照默认设置(右对齐,12bit的精度),主要是通道数要改成2,分别对应vrefint和vbat。
然后生成代码。
工程文件中,可以看到配置了两个channel,采样精度时间都相同。
在main函数中代码
int
- 在使用ADC前先进行校准
- 根据Datasheet - STM32L476xx Page 42,参考电压vref在出厂的时候已经根据标准值3V测量过,存储在0x1FFF 75AA - 0x1FFF 75AB。使用ADC测量vref再根据校准值计算出vdda。
- vbat值为ADC采样值/4095 * vdda
- vbat的采样值为实际vbat电压的三分之一
- 具体参考STM32 之十 供电系统及内部参照电压(VREFINT)使用及改善ADC参考电压