利用 CC2530 ADC 檢測芯片溫度
點擊左上角的
“關注”
,定期更新Zigbee最新資訊,總有你想要的信息!
目錄
- 概述
- 代碼分析
1. 概述
這篇文章給出了基於 Z-Stack 3.0.2 協議棧中利用 CC2530 ADC 檢測芯片自身溫度的代碼。
2. 代碼分析
Temperature.h:
#ifndef __TEMPERATURE_H
#define __TEMPERATURE_H
#include "iocc2530.h"
#include "hal_types.h"
#include "ZComDef.h"
/*********************************************************************
* MACROS
*/
/*********************************************************************
* CONSTANTS
*/
/*********************************************************************
* TYPEDEFS
*/
/*********************************************************************
* GLOBAL VARIABLES
*/
/*********************************************************************
* GLOBAL FUNCTIONS
*/
/*********************************************************************
* LOCAL VARIABLES
*/
/*********************************************************************
* LOCAL FUNCTIONS
*/
/*********************************************************************
* EXTERN VARIABLES
*/
/*********************************************************************
* EXTERN FUNCTIONS
*/
int8_t ReadTemperature(void);
#endif
Temperature.c:
#include "Temperature.h"
/*********************************************************************
* MACROS
*/
#define ADC_REF_115V 0x00
#define ADC_DEC_256 0x20
#define ADC_CHN_TEMP 0x0e
/*********************************************************************
* CONSTANTS
*/
/*********************************************************************
* TYPEDEFS
*/
/*********************************************************************
* GLOBAL VARIABLES
*/
/*********************************************************************
* GLOBAL FUNCTIONS
*/
/*********************************************************************
* LOCAL VARIABLES
*/
/*********************************************************************
* LOCAL FUNCTIONS
*/
/*********************************************************************
* EXTERN VARIABLES
*/
/*********************************************************************
* EXTERN FUNCTIONS
*/
/************************************************************************
* 函數名:int8_t ReadTemperature(void)
* 功能:讀取 CC2530 芯片溫度
* 參數:NONE
* 返回值:CC2530 芯片溫度
* 調用函數:
* 引用全局變量:
* 函數全局變量:
* 作者:Jesse_嘉偉
* 時間:2016/02/20
* 最後修改時間:
* 說明:個人主頁:Jesse_嘉偉的專欄(https://blog.csdn.net/u012993936)
*************************************************************************/
int8_t ReadTemperature(void)
{
static uint16_t reference_voltage = 0;
static uint8_t bCalibrate = TRUE;
uint8_t tmpADCCON3 = ADCCON3;
uint16_t value = 0;
int8_t temp = 0;
ATEST = 0x01;
TR0 |= 0x01;
ADCIF = 0;
ADCCON3 = (ADC_REF_115V | ADC_DEC_256 | ADC_CHN_TEMP);
while(!ADCIF);
ADCIF = 0;
value = ADCL;
value |= ((uint16_t)ADCH) << 8;
value >>= 4;
ADCCON3 = tmpADCCON3;
if(bCalibrate)
{
reference_voltage = value;
bCalibrate = FALSE;
}
temp = 22 + ((value - reference_voltage) / 4);
return temp;
}