硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2655|回复: 2
收起左侧

[技术讨论] STM32内部参考电压的使用的疑問

[复制链接]

42

主题

81

回帖

207

积分

高级会员

积分
207
发表于 2022-7-19 17:34:30 | 显示全部楼层 |阅读模式
本帖最后由 justdying 于 2022-7-19 17:38 编辑

一、STM32的内部参照电压VREFINT和ADCx_IN17相连接,它的作用是相当于一个标准电压测量点(和MSP430不一样。。),内部参照电压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测量不准确的问题。

企业微信截图_1658222886353.png

手册上面VREFINT 在1.202-1.242之间  查阅资料说出厂前这个值都会做一个标定,然后写进

企业微信截图_16582230372510.png

要想得到比较精准的VREFINT值,我们需要去0x1ffff7ba  这个地址直接读取VREFINT的值

我是用STM32F103C8T6去读取这个地址

[C] 纯文本查看 复制代码
#define VREFINT_CAL_ADR     0x1ffff7ba    //定义地址
#define pVREFINT_CAL        ((uint16_t*)VREFINT_CAL_ADR)    //定义指针

uint16_t VrefInt = *pVREFINT_CAL;    //读取

企业微信截图_16582231967632.png

读出来竟然是 0xFFFF,有点不太理解


回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2022-7-21 09:53:26 | 显示全部楼层
测了下F1的,这个好像不能直接读取。

而H7的这个可以直接读取。
回复

使用道具 举报

42

主题

81

回帖

207

积分

高级会员

积分
207
 楼主| 发表于 2022-7-25 18:26:54 | 显示全部楼层
eric2013 发表于 2022-7-21 09:53
测了下F1的,这个好像不能直接读取。

而H7的这个可以直接读取。

那这样只能用  经验值了么     H7读的是对应的校准值么
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-14 01:09 , Processed in 0.039340 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表