你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

请问STM32F373的内部基准为什么不准确?

[复制链接]
boy== 提问时间:2024-10-11 15:07 / 未解决

大家好,

我读取VREFINT_CAL校正值,然后校正ADC1后读取ADC值,按文档计算VDDA:

即:电源电压=芯片内部校正值/ADC1读出值(漂移校正后)*3.3V,(代码如下),

用芯片厂3.3V,计算,得到我的VDDA为3.57~3.59V之间,用泰克6位半万用表测量VDDA为3.50V左右,用其它万用表也是测到3.5V左右,比如胜利表,示波器等。

按照计算出的VDDA,重新计算VREFINT=1.251V。文档里面的最大值为1.25V,略超上限。

这意味着电源有2%左右的误差。如果我的电压是准确的,则意味着ST工厂校正时的3.3V电压偏差有2%。当然一般电源芯片误差1~3%很正常,不过芯片厂用来生产芯片的校正电压如果也偏差2%,就有点不好理解?是不是?

现在我不找不到原因,请有经验的大师指点一下,谢谢。(为了减少外部因素干扰,VREFSD+这些脚,都移除了负载,其它模拟功能模块都是关闭的)。

谢谢!!!!!!!!!!!!!!!!!!!!!!!!

串口输出:

u32AdcVcali(offset)= 0x00000047, DataCal32(30)=0x0611, Vadc1Vintref_VccA= 0x0599 fVint by Vcc( 3.576 V) from adc1: 1.251 V

代码:

DataCal32_30 = (__IO uint16_t )(0X1FFFF7BA); //3.3V DataCal32_110 = (__IO uint16_t )(0X1FFFF7BA); //3.3V

HAL_ADCEx_Calibration_Start(&hadc1); u32AdcVcali = HAL_ADC_GetValue(&hadc1); DelayMs(1); HAL_ADC_Start(&hadc1); sum = 0; for (i=0;i<N;i++) { HAL_ADC_PollForConversion(&hadc1, 10); u32AdcV = HAL_ADC_GetValue(&hadc1); // u32AdcV = u32AdcV & 0xfff; sum += u32AdcV; } HAL_ADC_Stop(&hadc1);

Vadc1Vintref_VccA = sum / N;

fVcal = 3.3f; //3.3V fVx = fVcal*DataCal32_30/Vadc1Vintref_VccA; if ((fVx < 4) && (fVx > 2.5f)) { g_fVcc = fVx; }

收藏 评论1 发布时间:2024-10-11 15:07

举报

1个回答
xmshao 回答时间:2024-10-12 15:25:02
STM32芯片内部都内置这个VERFINT电压信号,其值在ST官方数据手册里都写明了范围,
有些系列还给出了给定温度下的校准数据,并存放在特定位置。


有些时候我们可以使用它来监视VDD的变化、或作为内部比较器的比较电压、或作为某些ADC
模块的参考电压。


对它进行测量时,注意保证足够的采样时间、芯片电源尽量稳定。


这里有篇文章针对相应话题做了些实战性介绍,可以参考。



基于STM32片内信号的ADC应用演示 (qq.com)

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版