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

關於CC2530中ADC的使用

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

你好

我目前使用CC2531 USB Dongle

軟體使用的是SampleRemote

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

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

 

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

 

我在hal_adc.c中有看到關於ADC的API

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

uint16 adc_ain2=0;
HalAdcSetReference(HAL_ADC_REF_125V);
adc_ain2=HalAdcRead(HAL_ADC_CHN_AIN2,HAL_ADC_RESOLUTION_10);

使用View -> Watch -> Watch1來監看adc_ain2的值,但出現了如下圖中的錯誤,請問代碼或是操作上有那裡出問題嗎?

变量定义不规范么,定义个简单的变量 a b这类的

vv 你好! 謝謝你的回覆

我將程式修改如下

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.2V)、adc_battery(供應給CC2531的電源3V)分別為511和447

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

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

问题解决了?

是否可以把问题的原因和解决方法分享下,谢谢!

preprocessor中加入HAL_ADC=TRUE


在zll-sampleRemote-CC2531EMK.c中加入下列程式

#include "hal_adc.h"


float adc_ain2=0;

float adc_battery = 0;

float ain2 = 0;

float power_voltage = 0;



define READING_VOLTAGE_EVT                  0x0004

zllSampleRemote_Init中加入

osal_start_timerEx( zllSampleRemote_TaskID, READING_VOLTAGE_EVT , 500 );

zclSample_event_loop中加入

if ( events & READING_VOLTAGE_EVT )

  {

    HalAdcSetReference(HAL_ADC_REF_AVDD);      //Set the Reference Voltage to HAL_ADC_REF_AVDD (3V)

    adc_ain2=HalAdcRead(HAL_ADC_CHN_AIN2,HAL_ADC_RESOLUTION_10);   //Read the input signal from AIN2(P0_2)

    ain2 = (float)adc_ain2*3/511;                                  //Convert the input signal into voltage

   

    adc_battery = HalAdcRead(HAL_ADC_CHANNEL_VDD, HAL_ADC_RESOLUTION_10);        //Read the input signal from VCC

    power_voltage = (float)adc_battery*3*3/511;                        //Convert the signal into voltage

   

    osal_start_timerEx( zllSampleRemote_TaskID, READING_VOLTAGE_EVT , 500 );   //Call the event every 0.5s

    return ( events ^ READING_VOLTAGE_EVT );

  }


可在power_voltageain2看到到CC2531電源供應的電壓值,以及HAL_ADC_CHN_AIN2輸入的電壓值

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

网站地图

Top