不同的STM32如何使用基准电压芯片

对于100脚及其以上的芯片,把基准电压芯片连接到VREF芯片即可。

对于100脚以下的芯片,STM32没有把VREF引脚引出来,所以,我们只能把基准电压芯片连接到VDDA引脚。注意,STM32单片机上面有好多电源引脚,其中有若干VDD引脚,只有一个VDDA引脚,VDDA引脚就是模拟供电引脚。不过,需要注意,VDDA的电压不是随便定义的。例如,STM32F051系列单片机就规定,VDDA必须要大于或者等于VDD才可以正常工作,所以这时候,最好是给单片机3.0V供电,再给VDDA采用一个3.3V的基准电压芯片供电。

不同的STM32如何使用基准电压芯片

用电压基准电压芯片可以吗?

如果在你的应用中,VDDA引脚和VDD引脚连在一起,都是由电源芯片供电,这时候,如果你能知道VDDA的实际电压,也可以得到精确的ADC结果。例如,你可以用万用表测到VDDA电压,例如,是3.286V,你就可以使用3286来计算。不过,这也只能是在实验的时候,在实际使用中,如果你做了1万个板子,然后需要用万用表量1万个板子的电源电压,然后再给每个板子修改程序,显示是不可能的。

所以,STM32给我们又一个解决方案,STM32在内部都有一个参考电压引脚,可以通过配置,把这个脚连接到ADC输入引脚,是内部连接。然后再计算实际的VDDA值。不过,STM32也存在个体差异,所以,它并没有在手册上给出我们这个参考电压是多大。而是用出厂时调教好的校准值和得到的参考电压值一起使用。如下图:

不同的STM32如何使用基准电压芯片

VREFINT_CAL是校准值,这个值,每个单片机都不一样,被存储到了0X1FFFF7BA和0X1FFFF7BB,使用的时候,需要先读出来。

说多了都是眼泪,不说了,给你个程序看吧,程序当中,有读取VREFINT_CAL和VREFINT_DATA值的语句。你可以看个究竟。这个程序已经实践验证过了,不会有问题,下面是实验结果:

不同的STM32如何使用基准电压芯片

我把测到的VDDA值,发送到了串口查看。然后我用万用表测了一下实际的VDDA值,由于我的万用表精度有限,只能测到小数点后2位数字,万用表得到的是3.32V和3.31V之间跳动。串口发送的值,小数点后第三位四舍五入之后,结果也是3.32V和3.31V。结果是一致的。说明这种方法也是可取的。