OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3025|回复: 7

STM32F0 ADC 内部参考电压使用问题 ,VREFINT_DATA不明白怎么读出来

[复制链接]

49

主题

143

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
390
金钱
390
注册时间
2017-3-24
在线时间
64 小时
发表于 2019-5-17 16:18:07 | 显示全部楼层 |阅读模式
1金钱
未命名1558079660.png

按照这个公式 计算,需要知道 值VREFINT_DATA ,VREFINT_CAL。


其中 VREFINT_CAL,是校准因子,ADC校准后 读寄存器DR 可直接得到。于是我这样读:
        HAL_ADCEx_Calibration_Start(&hadc);
        VREFINT_CAL= HAL_ADC_GetValue(&hadc) ;

       读到该值为0x44 换算十进制 为68。
未命名1558080108.png
最后求 VREFINT_DATA值。数据手册上这样写道:
VREFINT_DATA is the actual VREFINT output value converted by the ADC  
VREFINT_DATA 则为ADC CH17采集到的AD值
所以我这样读
未命名1558080810.png
读到值 ox5FA  十进制为 1530。
然后我去编译运行程序 发现结果很明显不对。
未命名1558079972.png
所以 VREFINT_DATA 这个值 我读的不对 。 我就想知道 VREFINT_DATA 这个值到底怎么读 ?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2019-5-18 02:45:37 | 显示全部楼层
回复

使用道具 举报

0

主题

79

帖子

0

精华

高级会员

Rank: 4

积分
727
金钱
727
注册时间
2016-5-27
在线时间
91 小时
发表于 2019-5-18 12:30:34 | 显示全部楼层
VREFINT_CAL 值应该是读错了,这是个16位的数 ,F030系列在地址:0x1FFF F7BA - 0x1FFF F7BB 。
(3.3xVREFINT_CAL)/FULL_SCALE 应该是1.2左右(不同系列的芯片可能不同),那么公式可以简化为 VCHANNELx=1.2(参考电压)x (你采集的通道数)/CH17的数

回复

使用道具 举报

31

主题

1955

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4521
金钱
4521
注册时间
2018-5-11
在线时间
946 小时
发表于 2019-5-18 13:55:33 | 显示全部楼层
VREFINT_DATA是内部参考电压的ADC转换值,
通过读取VREFINT(内部参考电压通道ch17)可以得到。
如果对AD采样精度要求高,可以将ch17纳入采样序列,
每次采样时将ch17一并采集,用于AD值补偿计算。
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复

使用道具 举报

49

主题

143

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
390
金钱
390
注册时间
2017-3-24
在线时间
64 小时
 楼主| 发表于 2019-5-20 08:49:30 | 显示全部楼层
warship 发表于 2019-5-18 13:55
VREFINT_DATA是内部参考电压的ADC转换值,
通过读取VREFINT(内部参考电压通道ch17)可以得到。
如果对AD ...

那读ch17 怎么写
回复

使用道具 举报

49

主题

143

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
390
金钱
390
注册时间
2017-3-24
在线时间
64 小时
 楼主| 发表于 2019-5-20 08:52:44 | 显示全部楼层
www88988 发表于 2019-5-18 12:30
VREFINT_CAL 值应该是读错了,这是个16位的数 ,F030系列在地址:0x1FFF F7BA - 0x1FFF F7BB 。
(3.3xVREF ...

这个我也觉得可能错了,但是记得看到帖子上,也这样说过 读地址,只我是F070,数据手册上没有提地址,但是说了校准后直接读DR bit[6:0]寄存器为 校准因子
回复

使用道具 举报

49

主题

143

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
390
金钱
390
注册时间
2017-3-24
在线时间
64 小时
 楼主| 发表于 2019-5-20 08:56:26 | 显示全部楼层
顶 !!!!!!!!!!!!!!
我后来不按照这个公式计算 ,就直接读测量值,然后 测量值/4095 *3.3 这样计算 反而值正常。但是只读了3.3v 和GND 的值。不保险,不明白,所以还想解决这个公式计算不对的问题,谢谢大神  ! 顶顶顶
回复

使用道具 举报

49

主题

143

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
390
金钱
390
注册时间
2017-3-24
在线时间
64 小时
 楼主| 发表于 2019-5-20 09:22:33 | 显示全部楼层
www88988 发表于 2019-5-18 12:30
VREFINT_CAL 值应该是读错了,这是个16位的数 ,F030系列在地址:0x1FFF F7BA - 0x1FFF F7BB 。
(3.3xVREF ...

CH17 ,怎么得到,在什么寄存器,因为这不是测量得到值,不知道怎么读
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-18 19:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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