www.pudn.com > MAX31855.zip > Max31855.c, change:2014-05-13,size:2755b


/****************************************Copyright (c)************************************************** 
**                                        周泽平   
**                                           
**   
**                                 
**   
**--------------文件信息--------------------------------------------------------------------------------*//**   
* @file	Max31855.c 
* @brief	Max31855驱动模块 
* @version		1.0 
* @date	2014年 5月 9 日   
* @author	周泽平               
** 
**--------------当前版本修订------------------------------------------------------------------------------   
** 修改人:    
** 日 期:    
** 描 述:    
**   
**------------------------------------------------------------------------------------------------------   
**************************************************************************************************************/ 
/** @addtogroup Max31855 
 * @{ 
 */ 
#include "../include/Max31855.h" 
Max31855_DATA ChipOut; 
 /*********************************************************************//** 
 * @fun readdata 
 * @brief 	读取MAX31855电压值 
 * @param 	None 
 * @return 	输出数据 
 ***********************************************************************/ 
static uint8_t readdata(uint32_t *pData) 
{ 
	uint8_t i; 
	uint32_t tmp; 
	static uint16_t timesticke = 0; 
 
	if(timesticke < 2000) 
	{ 
		timesticke++; 
		return 0; 
	} 
	else 
	{	 
		tmp = 0; 
		MAX31855_CLK = LVAR; 
		MAX31855_CS = LVAR; 
		for(i = 0; i < 32; i++) 
		{ 
			asm("nop;"); 
			MAX31855_CLK = HVAR; 
			tmp = tmp<<1; 
			if(MAX31855_DATA == HVAR) 
				tmp |= 1; 
			else 
				tmp &= ~1; 
			MAX31855_CLK = LVAR; 
			asm("nop;"); 
			asm("nop;"); 
			asm("nop;"); 
		} 
		MAX31855_CLK = LVAR; 
		MAX31855_CS = HVAR; 
		*pData = tmp; 
		timesticke = 0; 
		return 1; 
	} 
}  
 /*********************************************************************//** 
 * @fun Max31855_GetTemperatureValue 
 * @brief 	读取热电偶温度值 
 * @param 	None 
 * @return 	热电偶温度值 
 ***********************************************************************/ 
int32_t Max31855_GetTemperatureValue(void) 
{ 
	int32_t retHTe; 
	uint32_t temp; 
	 
	if(readdata(&temp)) 
	{ 
		ChipOut.all = temp; 
	} 
	retHTe = ChipOut.bit.HTemperature; 
	return retHTe; 
} 
/*********************************************************************//** 
 * @fun GetMax31855Fault 
 * @brief 	读取热电偶故障情况 
 * @param 	None 
 * @return 	0:无故障 1:开路 2: 于地短路 3:于VCC短路 
 ***********************************************************************/ 
uint8_t GetMax31855Fault(void) 
{ 
	if(ChipOut.bit.FaultFlg) 
	{ 
		if(ChipOut.bit.OC) 
			return 1; 
		if(ChipOut.bit.SCG) 
			return 2; 
		if(ChipOut.bit.SCV) 
			return 3; 
	} 
	return 0; 
} 
  
/** 
 * @} 
 */