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

STM32H743II芯片ADC的Vrefbuf配置问题

[复制链接]
豌豆佛 提问时间:2018-4-3 09:53 /
本帖最后由 豌豆佛 于 2018-4-3 10:55 编辑

最近在使用H7的ADC功能时,将Vrefbuf配成了使用内部电源做参考的模式,没有外接参考电压源。此时使用AD通道采集的模拟量基本上都是满量程的0xFFFF,使用万用表测量Vref引脚的电压,发现只有0.8V。使用仿真器查看Vrefbuf寄存器的值,结果为0x00000000:
寄存器地址:
12341234.png
寄存器数据:
jicunqi.png
寄存器定义:
QQ图片20180403095002.png

并不是我使用CubeMX配的模式,而且寄存器的值无法手动修改。使用CubeMX将Vrefbuf配置成外部参考电压模式时,外接一个3.3V的参考电压,此时模拟量采集才算正常。继续观察Vrefbuf的寄存器配置,依然是0x00000000;我想问下有没有遇到跟我一样情况的?此部分寄存器无法修改是不是被保护了?



vref3.png
收藏 1 评论10 发布时间:2018-4-3 09:53

举报

10个回答
maxtch 回答时间:2018-4-3 21:28:10
手册里面其实讲的很明白了:最低两位 00 代表 VREF+ 内部接地。如果你要用 ADC,这两位不应该都是 0。如果在这种情况下你依然强行灌入 3.3V 恐怕会有烧东西的风险。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

feixiang20 回答时间:2018-4-3 22:12:43
内部参照电压VREFINT和ADCx_IN17相连接,它的作用是相当于一个标准...ADC的参考电压都是通过Vref+提供的,貌似输入电压只能限制在2.5V。你把寄存器的配置修改下看看呢,修改vref有附接电容看看呢

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

豌豆佛 回答时间:2018-4-4 09:52:09
maxtch 发表于 2018-4-3 21:28
手册里面其实讲的很明白了:最低两位 00 代表 VREF+ 内部接地。如果你要用 ADC,这两位不应该都是 0。如果 ...

不管把Vrefbuf配成什么模式,初始化之后,查看这个Vref寄存器的值都是0;
测量Vref的电压值是0.8V,这时候外接电压的话,AD采样的结果是正确的;
也就是说 ,AD采样正不正确跟Vref的配置没关系,只跟外部接不接基准源有关,这个跟手册里的描述是不一致的。现在怀疑是芯片内部的Vref有损坏的可能。
豌豆佛 回答时间:2018-4-4 09:53:03
feixiang20 发表于 2018-4-3 22:12
内部参照电压VREFINT和ADCx_IN17相连接,它的作用是相当于一个标准...ADC的参考电压都是通过Vref+提供的,貌 ...

初始化修改寄存器没效果,手动修改也改不了。
还有一种可能是,这个Vrefbuf 就仅仅是个buffer,并不能提供电压。
maxtch 回答时间:2018-4-4 14:36:54
豌豆佛 发表于 2018-4-4 09:52
不管把Vrefbuf配成什么模式,初始化之后,查看这个Vref寄存器的值都是0;
测量Vref的电压值是0.8V,这时 ...

内部 VREF 应该是要从某处打开的

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

maxtch 回答时间:2018-4-4 14:37:23
豌豆佛 发表于 2018-4-4 09:52
不管把Vrefbuf配成什么模式,初始化之后,查看这个Vref寄存器的值都是0;
测量Vref的电压值是0.8V,这时 ...

内部 VREF 应该是要从某处打开的
wenbo 回答时间:2018-10-17 17:11:29
STM32H750也是这个样子
longjun 回答时间:2018-12-29 16:22:16
wen1121 发表于 2018-10-17 17:11
STM32H750也是这个样子

各位,我也遇到类似的问题,VRFBUF寄存器不能修改,请问有人解决这个问题吗?
li4671 回答时间:2019-8-2 15:54:07
所以这个问题最终结论就是VREFBUF不可以用是吗?
li4671 回答时间:2019-8-3 00:23:32
经过一天的探索,发现了一个神奇的东西——__HAL_RCC_VREF_CLK_ENABLE()
就是VREF的时钟

正常情况下,使用CubuMX配置好VREFBUF后,没有函数会打开VREF时钟,所以内部VREFBUF不能工作,相关的寄存器就始终是0x0000 0000.
只需要在初始化代码里打开VREF的时钟,即调用__HAL_RCC_VREF_CLK_ENABLE(),时钟打开后,VREFBUF相关的寄存器就可以正常配置了,VREFBUF也能提供基准电压了。
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版