This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

用cc2530测量电池电压的问题

Other Parts Discussed in Thread: CC2530

大家好,这两天在用cc2530做电池电压测量的实验,碰到一个问题,详细描述如下:
测试方法:写一段裸机程序,将测量值通过串口发送到串口助手上查看,主要代码在下面,完整代码见附件.


while(1)
{
uint16 voltage=0;

ADCCON3 = 0x3f;//根据手册可知:512抽取率,测量的是vdd/3的值
ADCIF = 0 ;//貌似没用
while (!(ADCCON1 & 0x80));//等待转换结束

//赋值
voltage = ADCH;
voltage = (voltage<<8)|ADCL;
voltage >>=2;

//发送值
sprintf(str,"vol=%d 0x%04x \n",voltage,voltage);
UartSendString(str,sizeof(str));
//每1s重复一次
Delay_ms(1000);
}

测量结果:1.当用仿真器供电时,有数据且数据有效,接近满值8191,
2.当用直流电源供电时,分两种情况:
电压在 3.15V以下3.60V以上 时,数值为满值8191,显然是错误的,无效数据
电压3.15~3.60V左右,有值,但是值有问题,解释:cc2530内部基准电压为1.15V(来自手册),也就是说1.15V对应的值是8191,所以如果我测的值是8191,即是说我的VDD/3 = 1.15 ---->VDD=3.45 ,但是我现在的现象是在3.15~3.60V之内我测的值是波动的,并且我把电源供电调整到3.45V出来的也并不是8191这个数,所以说我对此值的有效性有怀疑,但是即使这个值是正确的,对我来说也没有任何用处:范围太窄我需要测量的范围在2.5-3.3V左右,所以现在咨询各位出现这个情况的原因是什么?我在网上也看到好多网友有这样的情况,但是都没有找出答案,希望TI官方能给个说法,难道说2530的这个功能就只能达到这个程度吗?

另外:我用0.7脚作为输入,以AVDD5为基准电压测试外部电压是可用的,误差没计算,说明如果作为电压表,2530是可行的.
各位大神,求帮忙