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

stm32f373中SDADC和ADC的1.2V片内基准是不是同一个?

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

你好,STM32F373中,12位ADC,即ADC1,可以测量内部基准VREFINT。DATASHEET的值1.23V。

16位的SDADC的参考,可以选择片内VREFINT,但有的地方又用VREFSD表述。

比如在RM中,写成:Internal bandgap: VREFSD = 1.2 V

现在是,我不清楚这个VREFSD和和DATASHEET里的Embedded reference voltage是不是同一个基准源?感觉文档表述比较混乱,无法确定。

请大家指点一下,谢谢。

收藏 评论10 发布时间:2024-10-10 15:48

举报

10个回答
xmshao 回答时间:2024-10-10 17:03:01
原理上讲,VREFSD跟内部的那个1.2v的vrefint没有任何关系。
VREFSD是sigmaDelta ADC的参考电压,而Vrefint就是片内自带的
一个比较稳定的电压信号源。


不过,Vrefint可以作为VREFSD,即SD-ADC的参考电压。


手册里有清晰描述:


VREFSD+, VREFSD- = 1.1 to 3.6 V


VREFSD+ and VREFSD- correspond to the reference voltage for SDADCx converters.
They define the input conversion range for all SDADCx converters.


If SDADCx is configured in external reference voltage mode, the external voltage
reference source must be connected to these pins.


If the external reference voltage is not enabled, then the selected SDADC internal
reference voltage source (VREFINT, SDADC_VDD) is present on VREFSD+.
A 10 nF+1 μF capacitor must be placed between VREFSD+ and VREFSD- for
decoupling purposes.


VREFSD+ must be lower than SDADC power supply:
VREFSD+ < min(VDDSD12, VDDSD3).
VREFSD- must be connected to ground.
boy== 回答时间:2024-10-10 18:11:26

xmshao,

从DS和RM两个资料,都无法确定SDADC可以使用Embedded reference voltage,即VREFIN。

SDADC所说的内部带隙参考VREFSD,和外部脚VREFSD+,VREFSD-是不同的。

SDADC有两个内部基准,1.2V和1.8。不清楚这个1.2V和Embedded reference voltage是不是一个东西。因为文档混乱,VREFINT究竟是个泛指内部基准(一类)还是特指Embedded reference voltage(一个特定单位),无法确定。

boy== 回答时间:2024-10-10 18:25:44

因为我通过ADC1,SDADC,等去测量内部基准时,通过测量链条互相校正后,倒算VCC,发现VCC电压位3.59V,而用我6位半的万用表测电压位3.50V,这个偏差还是大了一些。正常校正后,应该可以达到0.5%以内.

xmshao 回答时间:2024-10-10 19:28:45

boy== 发表于 2024-10-10 18:11
xmshao,</p>
<p>从DS和RM两个资料,都无法确定SDADC可以使用Embedded reference voltage,即VREFIN。

[md]数据手册里的Embedded reference voltage就是指Vrefint,即1.2v的那个内部电压。

image.pngimage.png

xmshao 回答时间:2024-10-10 19:28:45

image.png

image.png
boy== 回答时间:2024-10-10 22:27:08

xmshao

不知道你看懂没?

RM 中,Internal bandgap: VREFSD = 1.2 V,有这么一句,看明白,内部,内部。!!!

VREFSD+,是指芯片的管脚信号,外部,外部,外部!!!!!!!

VREFSD不是VREFSD+,两个不同的东西!!!!!!!!

弄明白了吗?文档VREFINT有时指的时1.2V,有时指1.8V,有时指VREF+,或者VDDA,很混乱的。有些根据可以猜测所指,有时不好推断乱下定论。

xmshao 回答时间:2024-10-11 08:24:01
其实我并没有将VREFSD和VREFSD+管脚及信号简单等同,更没有将VREFSD等同VREFINT.

我是说VREFSD是sigmaDelta ADC的参考电压。


但VREFSD可以有多种选择:


1、来自 VDDSDx: 此时VREFSD = analog supply, 2.4 V-3.6 V (2.2 V-3.6 V in Slow mode)。


2、来自外部VREFSD+和VREFSD-管脚的压差,VREFSD-管脚必须接地。我之前的回复中也强调了。


3、来自内部VREFINT电压,这里又分两种情形:
A:直接使用VREFINT电压作为VREFSD, 此时VREFSD = 1.2 V,即你提到的: Internal bandgap: VREFSD = 1.2 V的情形;
B:将VREFINT电压放大1.5倍后再用作VREFSD,此时VREFSD = 1.8 V,显然1.8v是1.2v的1.5倍。


数据手册中Embedded reference voltage就是VREFINT,即内部的那个1.2v电压,我在前面也贴图出来了。


简而言之,VREFSD是泛指,VREFINT是特指内部1.2v电压,即那个embedded reference voltage.

boy== 回答时间:2024-10-11 13:35:31

xmshao:

你好,感谢你的回复。

其实文档混乱也时很正常的,毕竟生产和设计是不同两个公司,写文档的人也不是研发人员。

不纠结这个地方。

我现在查到的问题是,SDADC这个基准参考,VREFSD+,如果不连接,浮接,SDADC可以选1.2V内部基准,如果VREFSD+连接了电阻,比如10K电阻接地,则测量不准确,有10%误差,如果接外部2.5V基准,则无论配置内部1.2V,1.8V或VDDA,计算结果都错,如果用2.5V计算测量结果就可以。这意味着VREFSD+和SDADC内部参考信号是直连的,切换其它基准是,无法断开和VREFSD+管脚的连接。

不知道是不是这样?

我不清楚是器件本身就是这样,还是我配置有问题。

请你帮我看一下,谢谢

HAL_SDADC_DeInit(&hsdadc1);

SDADC_ConfParamTypeDef ConfParamStruct; HAL_SDADC_Stop(&hsdadc1); memset(&ConfParamStruct, 0, sizeof(ConfParamStruct)); hsdadc1.hdma = 0;

hsdadc1.Init.IdleLowPowerMode = SDADC_LOWPOWER_NONE; hsdadc1.Init.FastConversionMode = SDADC_FAST_CONV_DISABLE; hsdadc1.Init.SlowClockMode = SDADC_SLOW_CLOCK_DISABLE; hsdadc1.Init.ReferenceVoltage = SDADC_VREF_EXT; HAL_SDADC_Init(&hsdadc1);

HAL_SDADC_SelectRegularTrigger(&hsdadc1, SDADC_SOFTWARE_TRIGGER);

ConfParamStruct.InputMode = SDADC_INPUT_MODE_SE_OFFSET; ConfParamStruct.Gain = SDADC_GAIN_1_2; ConfParamStruct.CommonMode = SDADC_COMMON_MODE_VSSA;//SDADC_COMMON_MODE_VDDA_2; ConfParamStruct.Offset = 0; HAL_SDADC_PrepareChannelConfig(&hsdadc1, SDADC_CONF_INDEX_1, &ConfParamStruct); HAL_SDADC_AssociateChannelConfig(&hsdadc1, SDADC_CHANNEL_4, SDADC_CONF_INDEX_1) ; HAL_SDADC_ConfigChannel(&hsdadc1, SDADC_CHANNEL_4, SDADC_CONTINUOUS_CONV_ON);

HAL_SDADC_CalibrationStart(&hsdadc1, SDADC_CALIBRATION_SEQ_1); HAL_SDADC_PollForCalibEvent(&hsdadc1, 10);

xmshao 回答时间:2024-10-11 16:10:06

boy== 发表于 2024-10-11 13:35
xmshao:</p>
<p>你好,感谢你的回复。

[md]对的。我们谈重点,不抱怨、不甩锅。

针对你现在的问题,首先 要确定VREFSD到底用的是谁,它是SDADC的参考基准电压,这个先要定下来,因为转换结果跟它直接相关。

具体点说,你使用我上面提到的4种参考电压的哪一种,比方是来自VDDSD? 还是从外部其它地方

经VREFSD+进来?或者说选用VREFINT电压?

这个定下来了,才好查看你的配置或进一步基于你的配置做些验证测试。

如果说你确定通过VREFSD+从外部引进2.5v的参考基准,那就使用这个呗。不知你为何在做参考基准电压的切换?

zhoupxa 回答时间:2024-10-11 23:49:24

看了下资料,STM32F373只有一个内部参考电压源(VREFINT,1.23V),可作为12位SAR ADC的参考电压;这个内部参考电压经过缓冲后得到的1.2V电压或者倍乘放大后得到的1.8V电压可以作为16位SIGMA-DELTA ADC的参考电压,这个参考电压连接到VREFSD+引脚用于外接电容进行滤波。

至于Embedded reference voltage指的就是内部参考电压源所提供的这三个参考电压,与Internal reference voltage同义。

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版