利用 CC2530 ADC 檢測芯片溫度

利用 CC2530 ADC 檢測芯片溫度



點擊左上角的“關注”,定期更新Zigbee最新資訊,總有你想要的信息!

目錄

  1. 概述
  2. 代碼分析

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;
}




--- End ---
你可能還想看:

> Zigbee進階:功能模塊
> 免費的Zigbee抓包神器!比Ubiqua還好用!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章