|

|
内部的参考电压VREF难道不应该是4096吗?
小弟现在遇到这样一个问题:外接VREF是3.3V,但用这两句读内部的参考电压VREF不是4096,哪位大哥能帮忙解释原因呀?
/* Enable the temperature sensor and vref internal channel */
ADC_TempSensorVrefintCmd(ENABLE);
/* ADC1 regular channel14 configuration */
ADC_RegularChannelConfig(ADC1, ADC_Channel_17, 1, ADC_SampleTime_239Cycles5); |
|
|
暖风
|
|
|
|
|
|
  
 
|
2楼
发表于 2010-3-15 19:36
| 只看该作者
和ADCx_IN17相连接不是参考电压,它是内部参照电压VREFINT,测量它的结果当然不是4096了。另外:12位的AD转换是不可能输出4096的结果,最大值只能是4095
关于内部参照电压VREFINT与参考电压的贴子请看:STM32内部参照电压VREFIN的使用 |
|
|
|
|
|
|
|
|

|
3楼
发表于 2010-3-15 19:43
| 只看该作者
2# binglin
原来是这样啊,还有一个问题:为什么用温度传感器的时候要使能温度传感和参考电压信道?
void ADC_TempSensorVrefintCmd(FunctionalState NewState)
{
/* Check the parameters 检查参数 */
assert_param(IS_FUNCTIONAL_STATE(NewState));
if (NewState != DISABLE)
{
/* Enable the temperature sensor and Vrefint channel[使能温度传感和参考电压信道]*/
ADC1->CR2 |= CR2_TSVREFE_Set;
}
else
{
/* Disable the temperature sensor and Vrefint channel[禁止温度传感和参考电压信道]*/
ADC1->CR2 &= CR2_TSVREFE_Reset;
}
} |
|
|
暖风
|
|
|
|
|
|
  
 
|
4楼
发表于 2010-3-15 20:05
| 只看该作者
寄存器ADC_CR2中的AWDEN位是激活温度传感器及内部参照电压VREFINT的使能位,它们共用同一个位来设置。
你看看CR2_TSVREFE_Set及CR2_TSVREFE_Reset的定义就清楚了。
#define CR2_TSVREFE_Set ((u32)0x00800000)
#define CR2_TSVREFE_Reset ((u32)0xFF7FFFFF)
执行了“ADC1->CR2 |= CR2_TSVREFE_Set; ”后的结果就是将ADC_CR2中的AWDEN位(置23位为1),即启内部参照电压VREFINT及温度传感器
执行了“ADC1->CR2 &= CR2_TSVREFE_Reset; ”后的结果就是将ADC_CR2中的AWDEN位(置23位为0),即禁止内部参照电压VREFINT及温度传感器 |
|
|
|
|
|
|
|
|
  
 
|
5楼
发表于 2010-3-15 20:11
| 只看该作者
再一次提醒你,你所说的“使能温度传感和参考电压信道”是翻译错了,别再引用了,以免被误导。
VREFINT是内部参照电压,STM32没有内部参考电压。
|
|
|
|
|
|
|
|