本帖最后由 wgcrdg 于 2018-1-22 16:31 编辑 在STM32L053 的ADC转换前,“参考手册上说:ADC 具有校准功能。校准过程中,ADC 会计算校准系数,校准应在启动 A/D 转换之前进行。校准系数会自动添加到模拟 ADC 中”进行校准,ADC正式转换后,使用VDDA的参考电压进行转换,但是转换出来的值,没有感觉到使用了校准系数。参考手册上说还要进行ADC绝对值转换,那么有没有好的方法,在转换时,能取得精确的值啊。我的这个ADC转换是取8次结果的平均,然后进行相对于VREFINT 的ADC绝对值转换,再计算成工程量,但是发现值波动还是很大,用MSP430就没有这种情况,我感觉是不是在8次结果平均前,把8次的ADC结果进行 VREFINT 的ADC绝对值转换,再进行平均,但是这样计算量太大了,我用的电池供电,有6个通道,那么就要计算48次。 |
STM32L011D4芯片用SWD无法下载程序
求助:STM32L0系列标准库哪里下?
STM32L051低温时LPUART串口波特率异常
STM32L051单片机ADC如何彻底关闭?
STM32L051C8进入低功耗模式电流偏大
STM32L052C8T6通过I2C模拟读16位数
STM32L0的VLCD外接5V会有问题吗
求助!!使用STM32L073 IO口模拟IIC接口读写AT24CM01 程序不停...
STM32L072RB写Bank2 EEPROM不响应中断
STM32L031无法进入boot
貌似你目前对ADC值精度不满意,首先确认你的硬件连接、软件代码是否都正常了。
电路上的电源是否稳定、干净。 STM32L0系列里也有带外部参考脚Vref的。
评分
查看全部评分
校准的作用是在VDD值未知的情况下,使用VDD为参考源,来采集内部参考源VREFINT的ADC码值(这个码值 我们称为B,VDD的码值称为A),而VREFINT被认为是一个相对标准的理想电压值。假如VREFINT为0.3V,B的码值是300,而VDD的码值A为3000,那么反推回VDD的电压就是(0.3/300)*3000=3V。
ADC采集的满量程码值就是VDD的3000,ADC以VDD为参考电压源来进行AD采集。那么再假设VDD也是理想不变的3V,如果采集到AD通道的码值为300,那么得出的电压就是0.3V,码值为600,电压就对应0.6V。
但是实际情况是这个VDD如果不稳定的话,那么AD通道采集的电压值也是不正确的。
如果对采集精度有要求的话,那么选用带专用模拟AVDD的片子(这时AVDD必须得准确),或者带外部参考管脚VREF的片子。
评分
查看全部评分
所以说,你要想采得准,VDD必须足够稳定,ADC通道受其它信号干扰必须尽可能小。