打印

STM32内部ADC校准问题

[复制链接]
16832|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
foolkun|  楼主 | 2012-6-21 11:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
手册中讲到:上电后需要校准一次ADC来减小误差,校准码存储在ADC_DR寄存器中。
问题1:这样的话,是不是应该把这个结果保存起来,以后每次转换得到的数据减去这个校准值,才能得到一个相对正确的结果。(对于规则通道)
问题2:对于注入通道,它有个注入通道数据偏移寄存器(ADC_JOFRx),注入通道转换结束后会自动减去这个寄存器的值,最终结果放在ADC_JDRx寄存器中。这样的话,写入ADC_JOFRx的值是不是应该在做系统校准(不仅是ADC)时,得到的系统0偏值。
问题3:ST对于上面讲的这两种模式为啥要做成不同呢?(假设我的理解是正确的)

希望高手指点,不知道我的理解是否正确。
沙发
foolkun|  楼主 | 2012-6-21 11:53 | 只看该作者
自己顶起来@

使用特权

评论回复
板凳
foolkun|  楼主 | 2012-6-21 14:41 | 只看该作者
怎么没有关心这个问题呢?

使用特权

评论回复
地板
foolkun|  楼主 | 2012-6-27 08:52 | 只看该作者
用实验数据说话,但是真搞不懂STM32内部ADC是怎么自校准的。
校准完成后,在ADC_DR寄存器读到的结果为60,后面正常测量的结果约1226;假如不校准,正常测量时读到的结果约1166。
这样不是很奇怪吗?按照通常的理解:如果不校准,得到的结果应该是60+1226(假设只是校准0偏)。由此推断:ST的ADC自校准不仅仅是校准0偏,应该还包括增益,然后算了一个结果出来。在测量的时候加上这个值。
不知上面的理解是否正确,请高手指正。

使用特权

评论回复
5
figo20042005| | 2012-6-27 09:07 | 只看该作者
应该是对的,系统电压可能不稳定,所以校准后的AD很准确,保存基值,在采样的结果里减去基值

使用特权

评论回复
6
tpyu| | 2012-6-27 13:13 | 只看该作者
應該是ADC 有offset issue, 且跟隨製程不同有偏差之因.所以要個別校正

使用特权

评论回复
7
598330983| | 2016-1-8 16:28 | 只看该作者
STM32内部参照电压VREFIN的使用


STM32的内部参照电压VREFINT和ADCx_IN17相连接,它的作用是相当于一个标准电压测量点,内部参照电压VREFINT只能出现在主ADC1中使用。

内部参照电压VREFINT与参考电压不是一回事。ADC的参考电压都是通过Vref+提供的并作为ADC转换器的基准电压。

当我们使用的Vref+是直接取自用VCC电压时,当VCC电压波动比较大时或稳压性能比较差时,可以借用STM32的内部参照电压VREFINT校正测量精度。

以测量1通道的电压值为例,先读出参照电压的ADC测量结果,记为ADre;再读出要测量通道1的ADC转换结果,记为ADch1;则要测量的电压为:

Vch1 = VREFINT* (((ADch1*(VREF/4096))/(ADre*(VREF/4096)))  

注:VREFINT=1.2V,VREF为参考电压值=3.3V

公式简化:

Vch1 = VREFINT*(ADch1/ADre)  

这种方法等于变相将内部参照电压VREFINT当成是ADC参考电压,也就是说,此时Vref参考电压的准确度已在此已对结果影响不大了,ADC的转换结果基本由VREFINT的精度决定。

注:一般情况下,这种办法只适合于当Vref+参考电压(其实也就是VCC电压)离散性实在太差的情况下使用。

我们知道,STM32中64脚和小于64脚的型号,Vref+在芯片内部与VCC信号线相连,没有引到片外,这样AD的参考电压就是VCC上的电压,那么我们可以使用一个高精度的外部参照电压,然后用上面的方法,也许可以解决因VCC电源电压精度不高带来的ADC测量不准确的问题。





建议采用以下方法结合使用:
1,采用内部参考
内部参考在芯片出厂时已经校准过精度了!(不清楚是否所有型号都校准过)
其厂内校准过程是在外部供3V电源,将采样内部参考的ADC值写入校准寄存器VREFINT_CAL!
因此,我们可以使用以下公式算出实际电压:
V=(3*VREFINT_CAL*ADC_DATA)/(VREFINT_DATA*FULL_SCALE)
根据这个公式,程序需要获取VREFINT_DATA和ADC_DATA!
不过我们实际测试这个电压参考在低温下偏差比较大,可能是芯片本身的问题,目前还不清楚是全系列,还是个别型号有这个问题!
2,使用过采样!

使用特权

评论回复
8
598330983| | 2016-1-8 16:33 | 只看该作者
stm32中开始指定ADC的校准状态是是否是是0点位误差校正

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

125

帖子

1

粉丝