微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > 關於使用ADC量測CC2530的電池電壓問題

關於使用ADC量測CC2530的電池電壓問題

时间:10-02 整理:3721RD 点击:

你好

我目前使用CC2531 USB Dongle

軟體使用的是SampleRemote

而我想加入ADC的功能,想做到的目標如下:

1.  想利用ADC去讀取CC2531本身的電源電壓數值是多少

 

2.  當我額外接一個電壓輸出到P0_2上,並可從1V細微增加至2.5V,利用ADC去讀P0_2的數值時,讀到的數值會隨著我調整電壓值而跟著改變

我增加了以下代碼在SampleRemote Project中的zllSampleRemote_Init尾端

uint16 adc_ain2=0;
uint16 adc_battery = 0;
/*********************************************************************
* @fn zllSampleRemote_Init
              ...
APCFG |= 0x04;
HalAdcSetReference(HAL_ADC_REF_125V);
adc_ain2=HalAdcRead(HAL_ADC_CHN_AIN2,HAL_ADC_RESOLUTION_10);
adc_battery = HalAdcRead(HAL_ADC_CHN_VDD3, HAL_ADC_RESOLUTION_10);

} //zllSampleRemote_Init End

輸入至P0_2的電壓為1.2V,而CC2531的電源供應為3V

而watch窗口讀到的adc_ain2(輸入到P0_2的1.15V)、adc_battery(供應給CC2531的電源3V)分別為511和447

Q1 : 要如何將讀取到的數值轉換成電壓呢? 如上面提到的511447 ?

 

Q2 : 如果想量測大於參考電壓但小於3V的數值,是不是要去修改參考電壓HAL_ADC_REF_125V的數值 ? 如何修改 ?

 

Q3 : 目前ADC讀取的動作只做一次,應該是我將程式放在zllSampleRemote_Init的關係。我需要將程式放在哪裡才能讓我調整輸入電壓值時,讓ADC可以即時讀取電壓 ?

 

Q4 : 除了使用IAR中"Debug without Downloading"的方法一步一步來看參數的數值之外,還有沒有其他方法可以即時監看讀取到的電壓數值 ?

 

不好意思  有人可以回復我嗎?

我使用event,讓程式可連續去監看電壓值

HalAdcSetReference(HAL_ADC_REF_AVDD);

 
adc_ain2=HalAdcRead(HAL_ADC_CHN_AIN2,HAL_ADC_RESOLUTION_10);
adc_power = HalAdcRead(HAL_ADC_CHN_VDD3, HAL_ADC_RESOLUTION_10);
osal_start_timerEx( zllSampleRemote_TaskID, READING_VOLTAGE_EVT , 500 );
return ( events ^ READING_VOLTAGE_EVT );

而CC2531的電源供應為3V

P0_2的輸入電壓為1V

 

當參考電壓使用HalAdcSetReference(HAL_ADC_REF_AVDD);

讀取到的數值為

adc_power = 170

轉換成電壓的值的算法是170*3/511 = 0.99804嗎??

adc_ain2 = 169

 而電源轉換成電壓的值的算法是169*3*3/511 = 2.97651V嗎??

當參考電壓使用HalAdcSetReference(HAL_ADC_REF_125V);

讀取到的數值為

adc_power = 442

轉換成電壓的值的算法是442*1.15/511 = 0.9947嗎??

adc_ain2 = 446

 而電源轉換成電壓的值的算法是446*3*3/511 = 3.0111嗎??

 

讀取到的值轉換成電壓是這樣計算的嗎?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top