CC2430 AD转换——电压转换结果有问题,求高人指点,不胜感激!
zigbee吧
全部回复
仅看楼主
level 1
弥从冬0IK 楼主
CC2430 AD转换——电压转换结果有问题,求高人指点,不胜感激!
#define VDD 33 // 该值要根据AVDD_SOC引脚上的电压来调整
UINT8 scaleValue(UINT8 adc_value)
{
float v;
adc_value = (adc_value > 0 ? adc_value : 0); // 若输入参数adc_value小于0,则adc_value=0
// 因为单端输入的电压值应该在0到正参考电压值之间,不能为负
v = ((float)adc_value / (float)0x7F);
v *= VDD;
return (UINT8)v;
}
uint8 myApp_ReadVoltage( void )
{
UINT8 adc_value;
UINT8 potVoltage=0;
//float v;
ADC_ENABLE_CHANNEL(HAL_ADC_CHN_AIN7); // 使能AIN7为ADC输入通道
/* 配置ADCCON3寄存器以便在ADCCON1.STSEL = 11(复位默认值)且ADCCON1.ST = 1时进行单一转换 */
/* 参考电压:AVDD_SOC引脚上的电压 */
/* 抽取率:64 */
/* ADC输入通道:AIN7 */
ADC_SINGLE_CONVERSION( HAL_ADC_REF_AVDD | HAL_ADC_8_BIT | HAL_ADC_CHN_AIN7);
ADC_SAMPLE_SINGLE(); // 启动一个单一转换
while(!ADC_SAMPLE_READY()); // 等待转换完成
ADC_ENABLE_CHANNEL(HAL_ADC_CHN_AIN7); // 禁止AIN7
adc_value = ADCH; // 读取ADC值
if(potVoltage != scaleValue(adc_value))
potVoltage = scaleValue(adc_value);
return(potVoltage);
// return(adc_value);
}
2014年11月04日 08点11分 1
1