你好,STM32F373中,12位ADC,即ADC1,可以测量内部基准VREFINT。DATASHEET的值1.23V。 16位的SDADC的参考,可以选择片内VREFINT,但有的地方又用VREFSD表述。 比如在RM中,写成:Internal bandgap: VREFSD = 1.2 V 现在是,我不清楚这个VREFSD和和DATASHEET里的Embedded reference voltage是不是同一个基准源?感觉文档表述比较混乱,无法确定。 请大家指点一下,谢谢。 |
关于STM32F4的ADC测量不准确
STM32G0B1adc+dma采样数据错位
STM32G474 ADC无法正常启动转换
ADC每次开始采样直流电压时,会出现尖峰波形?
ADC各个通道转换
F302R8电机驱动三角函数为什么用定点查表方式
STM32F405使用LL库建立SPI通讯报溢出是什么原因?
cubemx安装HAL库时要账号登录,点击注册,显示错误,ST官网点击注册也是显示错误,请问是什么问题?
基于GCC编译器的initcall在STM32如何实现?
想找一款pin to pin的MCU(参考STM32F105RC),支持CAN FD的,64PIN封装,各位小伙伴们有推荐吗
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.
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(一个特定单位),无法确定。
因为我通过ADC1,SDADC,等去测量内部基准时,通过测量链条互相校正后,倒算VCC,发现VCC电压位3.59V,而用我6位半的万用表测电压位3.50V,这个偏差还是大了一些。正常校正后,应该可以达到0.5%以内.
[md]数据手册里的Embedded reference voltage就是指Vrefint,即1.2v的那个内部电压。
xmshao
不知道你看懂没?
RM 中,Internal bandgap: VREFSD = 1.2 V,有这么一句,看明白,内部,内部。!!!
VREFSD+,是指芯片的管脚信号,外部,外部,外部!!!!!!!
VREFSD不是VREFSD+,两个不同的东西!!!!!!!!
弄明白了吗?文档VREFINT有时指的时1.2V,有时指1.8V,有时指VREF+,或者VDDA,很混乱的。有些根据可以猜测所指,有时不好推断乱下定论。
我是说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.
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);
[md]对的。我们谈重点,不抱怨、不甩锅。
针对你现在的问题,首先 要确定VREFSD到底用的是谁,它是SDADC的参考基准电压,这个先要定下来,因为转换结果跟它直接相关。
具体点说,你使用我上面提到的4种参考电压的哪一种,比方是来自VDDSD? 还是从外部其它地方
经VREFSD+进来?或者说选用VREFINT电压?
这个定下来了,才好查看你的配置或进一步基于你的配置做些验证测试。
如果说你确定通过VREFSD+从外部引进2.5v的参考基准,那就使用这个呗。不知你为何在做参考基准电压的切换?
看了下资料,STM32F373只有一个内部参考电压源(VREFINT,1.23V),可作为12位SAR ADC的参考电压;这个内部参考电压经过缓冲后得到的1.2V电压或者倍乘放大后得到的1.8V电压可以作为16位SIGMA-DELTA ADC的参考电压,这个参考电压连接到VREFSD+引脚用于外接电容进行滤波。
至于Embedded reference voltage指的就是内部参考电压源所提供的这三个参考电压,与Internal reference voltage同义。