TI中文支持网
TI专业的中文技术问题搜集分享网站

CC2530测量内部电压VDD/3

使用Z-Stack,CC2530多EndDevice和一个Coordinator组网,组网成功。仿照Z-Stack中hal_adc.c文件下面的bool HalAdcCheckVdd (uint8 limit)函数,改了一个uint16 HalAdcGetVdd(void)函数,区别如下。

原来的函数bool HalAdcCheckVdd (uint8 limit)判断供电电压是否在某个门限;

新改的函数uint16 HalAdcGetVdd(void)输出供电电压的测量值。

代码如下。

uint16 HalAdcGetVdd(void)
{uint16 value;uint8 tmpADCCON3 = ADCCON3;  // Save ADCCON3 to restore later/* Clear ADC interrupt flag */ADCIF = 0;/* Setup the new value for conversionInternal reference 1.15V for CC2530, 7 bits ENOB, VDD/3*/ADCCON3 = (HAL_ADC_REF_125V | HAL_ADC_DEC_064 | HAL_ADC_CHN_VDD3);/* Wait for the conversion to finish */while ( !ADCIF );/* Get the result */value = ADCL;value |= ((uint16) ADCH) << 8;value >>= 2;// Restore ADCCON3ADCCON3 = tmpADCCON3;return value;
}

几乎都是抄原来的函数,因为是8位测量,最终期望value测到的值是VDD/3/1.15*256。也有可能是VDD/3/1.15*128。

烧写到CC2530,VDD供电电压3.3V,串口输出value的低8位,发现value值0x68,0x4A,0x8F这样的范围波动,与期望不符。请问从何入手调试?

PS: 如果不用Z-Stack,直接裸机写一个ADC测量VDD/3的程序,输出正常。

Kevin Qiu1:

VDD是多少,不同参考电压会有变化

user6008379:

回复 Kevin Qiu1:

在哪里修改?

Kevin Qiu1:

回复 user6008379:

VDD为3V的参考电压是1.15V,VDD不为3V时可能会有些偏差
参考e2echina.ti.com/…/345951

YiKai Chen:

CC2530 ADC测量电压可以參考 sunmaysky.blogspot.com/…/cc2530-adc-howto-in-ti-z-stack.html

user6008379:

回复 Kevin Qiu1:

供电电压为3.3V,内部产生的参考电压不是1.15V没有关系,但应该是稳定的吧?我现在的问题是测出来的ADC值不稳定。

user6008379:

回复 YiKai Chen:

这个例子是用外部AIN管脚来测量电压,我现在直接想用ADC测内部VDD/3。现在的问题在于,不用Z-Stack,直接写代码可以,但是在Z-Stack里面老是测不准。

YiKai Chen:

回复 user6008379:

要不要接著示波器看看VDD電壓是不是有在飄

user6008379:

回复 YiKai Chen:

有微小波动,因为VDD=3.3是用LDO产生的,很稳定啦。而且不用Z-Stack,直接写ADC测量程序可以测出稳定的3.3V的。

赞(0)
未经允许不得转载:TI中文支持网 » CC2530测量内部电压VDD/3
分享到: 更多 (0)