硬汉嵌入式论坛

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

[ADC] 求助:STM32H743的电压参考缓冲器 (VREFBUF)用不了

  [复制链接]

25

主题

68

回帖

143

积分

初级会员

积分
143
QQ
发表于 2020-9-27 10:34:17 | 显示全部楼层 |阅读模式
根据STM32H7参考手册的描述:
STM32H7x3 器件内置有电压参考缓冲器,既可用作 ADC 和 DAC 的参考电压,也可通过VREF+ 引脚用作外部元件的参考电压。


2020-09-27_102557.jpg
2020-09-27_102831.jpg

现在我把VREF+ 引脚悬空,设置:VREFBUF->CSR = 0x11;  即选择内部2.048V参考电压,作为ADC的参考基准电压。

然后,我等待VRR位就绪,就死在while循环了:while((VREFBUF->CSR & (1<<3)) == 0);


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107034
QQ
发表于 2020-9-27 10:59:07 | 显示全部楼层
早期的测记录。

实测使用H7自带的电压基准是绝对不可以让VREF+继续外接其它稳压,否则无法工作
http://www.armbbs.cn/forum.php?m ... id=89360&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

25

主题

68

回帖

143

积分

初级会员

积分
143
QQ
 楼主| 发表于 2020-9-27 11:05:25 | 显示全部楼层
eric2013 发表于 2020-9-27 10:59
早期的测记录。

实测使用H7自带的电压基准是绝对不可以让VREF+继续外接其它稳压,否则无法工作

现在我把VREF+ 引脚悬空,肯定没有给其它元器件提供参考电压的。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107034
QQ
发表于 2020-9-27 11:15:23 | 显示全部楼层
pnhywyb 发表于 2020-9-27 11:05
现在我把VREF+ 引脚悬空,肯定没有给其它元器件提供参考电压的。

如果硬件你确保没问题了额,基本就是你程序问题了,因为我测试过,确实是可以使用的。
回复

使用道具 举报

2

主题

9

回帖

15

积分

新手上路

积分
15
发表于 2020-9-27 12:54:03 | 显示全部楼层
估计是没有使能吧
回复

使用道具 举报

25

主题

68

回帖

143

积分

初级会员

积分
143
QQ
 楼主| 发表于 2020-9-27 18:52:48 | 显示全部楼层
wow1919 发表于 2020-9-27 12:54
估计是没有使能吧

VREFBUF->CSR = 0x11;  //设置最低位ENVR为1,就使能内部参考电压模式了。
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2020-12-2 15:46:52 | 显示全部楼层
这CSR寄存器配置完是不是,还是0;仿真调试看一下寄存器状态。
回复

使用道具 举报

9

主题

16

回帖

43

积分

新手上路

积分
43
发表于 2021-3-1 13:17:52 | 显示全部楼层
请问楼主解决这个问题了吗,我现在也设置参考电压失败
回复

使用道具 举报

25

主题

68

回帖

143

积分

初级会员

积分
143
QQ
 楼主| 发表于 2021-3-1 16:50:55 | 显示全部楼层
齐焉Qy 发表于 2021-3-1 13:17
请问楼主解决这个问题了吗,我现在也设置参考电压失败

我没能解决这个问题。后来我另外加了2.048V基准电压芯片到VREF+ 引脚,不用H7内部的电压基准了,解决问题。
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2021-7-19 13:27:59 | 显示全部楼层
__HAL_RCC_VREF_CLK_ENABLE()  在ST的论坛里面看到了 这个函数 实测有效  ,其余代码与楼主一样 先开时钟 再赋值检测。2.5V Vref+引脚为2.41v  2.048v 引脚为1.91V  不知道是万用表垃圾  还是芯片测试的话就这样了。。。。。。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107034
QQ
发表于 2021-7-19 15:50:58 | 显示全部楼层
我是废物 发表于 2021-7-19 13:27
__HAL_RCC_VREF_CLK_ENABLE()  在ST的论坛里面看到了 这个函数 实测有效  ,其余代码与楼主一样 先开时钟  ...

这个误差貌似有点大。
回复

使用道具 举报

0

主题

35

回帖

35

积分

新手上路

积分
35
发表于 2022-11-3 14:02:03 来自手机 | 显示全部楼层
eric2013 发表于 2021-7-19 15:50
这个误差貌似有点大。

16674552898362332454697132054774.jpg
这是什么意思啊
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107034
QQ
发表于 2022-11-4 10:42:58 | 显示全部楼层
yelu 发表于 2022-11-3 14:02
这是什么意思啊

H7用的是最新版的软件包3.0.0吧,然后CubeMX也用最新的。
这样就没问题了

回复

使用道具 举报

0

主题

35

回帖

35

积分

新手上路

积分
35
发表于 2022-11-5 12:08:35 | 显示全部楼层
eric2013 发表于 2022-11-4 10:42
H7用的是最新版的软件包3.0.0吧,然后CubeMX也用最新的。
这样就没问题了

好的,回去试一下
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2023-3-18 16:36:29 | 显示全部楼层
我是H743,也用不了内部参考,已经把Vref+悬空,但是CSR寄存器的Hiz位一直是1,无法根据我写入的值变为0;
回复

使用道具 举报

1

主题

12

回帖

15

积分

新手上路

积分
15
发表于 2023-3-18 23:38:07 | 显示全部楼层
allley 发表于 2023-3-18 16:36
我是H743,也用不了内部参考,已经把Vref+悬空,但是CSR寄存器的Hiz位一直是1,无法根据我写入的值变为0;

__HAL_RCC_VREF_CLK_ENABLE();//使能VREF时钟       
               
HAL_SYSCFG_DisableVREFBUF();//失能VREFBUF
               
HAL_SYSCFG_VREFBUF_VoltageScalingConfig( SYSCFG_VREFBUF_VOLTAGE_SCALE0 );//设置内部参考电压为2.5V
               
HAL_SYSCFG_VREFBUF_HighImpedanceConfig( SYSCFG_VREFBUF_HIGH_IMPEDANCE_DISABLE );//VREF+ 从内部连接到电压参考缓冲器输出
               
HAL_SYSCFG_EnableVREFBUF();


VerF+引脚浮空加电容

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-15 04:32 , Processed in 0.237892 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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