stm32f0的参考电压与基准电压的理解
stm32f0内部有基准电压,范围在1.18~1.24之间,并且芯片出厂前已经加了标准的3.3V,并且把基准电压读到的AD值放入0x1FFFF7BA地址。
在AD采样的应用中,参考电压至关重要,如果参考电压差异较大,在相同的两个板子上参考电压都不一致的话,读到的AD值就没有一致性,批量产品的误差不可控,所以一般情况下,都需要一个准确的参考电压给AD采样使用。
stm32f0芯片的低成本版本中,参考电压直接和VCC在内部连在一起,就是说常规的3.3V就直接作为ADC的参考电压使用。一般的通用3.3V电源芯片(基准专用芯片就很准了)输出的3.3V都有1-5%的误差范围,两个相同的芯片,之间的差就很明显了,作为ADC参考电压,用同样的软件测到的值就不同了。
stm32f0可以利用片内基准可以在使用通用3.3V芯片时达到不错的精度效果。片内的基准电压很稳定,不受外界的影响而改变读数,只是两个相同芯片的基准电压不一致而已,但是在出厂时已经以标准的3.3V为满量程参考,然后读到片内基准的AD值,以只读形式保存在0x1FFFF7BA地址。那么我们就可以每次在未知片外满量程参考的前提下,读取ad_ch17的值,该值就是在外部满量程参考电压下的基准电压AD读数,那么就得到如下公式:
ad_ch17 / 出产标定在0x1FFFF7BA的只读值 = 3.3V / 片外参考值
片外参考值就是片外电压,结果就是:3.3V * 出产标定在0x1FFFF7BA的只读值 / ad_ch17
有了片外参考的准确电压值,其他通道的ADC电压值也就很准确地测量出来了。
虽然在计算上饶了好几个大圈,但是这样做减低了硬件成本,屏弃所有专业的芯片,使用低成本的stm32f0配合通用电源芯片就可以达到专业级的效果,这样确实是stm32f0芯片的设计师的良苦用心。
5 个回复
admin
赞同来自:
赞一个
魚在天上飛
赞同来自:
就是这么用的
zwhhdhb
赞同来自:
uouo00 - 80后精辟
赞同来自:
毛色顿开,还不知道这么用呢
夏天的味道
赞同来自:
你的公式:
ad_ch17 / 出产标定在0x1FFFF7BA的只读值 = 3.3V / 片外参考值
片外参考值就是片外电压,结果就是:3.3V * 出产标定在0x1FFFF7BA的只读值 / ad_ch17
我感觉有点问题,应该是这样吧:
ad_ch17 / 出产标定在0x1FFFF7BA的只读值 = 片外参考值 / 3.3V
片外参考值就是片外电压,结果就是:3.3V * ad_ch17 / 出产标定在0x1FFFF7BA的只读值
不知道我理解的对不对?