| 
在线时间128 小时
UID2091686
注册时间2014-5-7
NXP金币0 
 TA的每日心情|  | 开心 2017-4-27 08:44
 | 
|---|
 签到天数: 64 天 连续签到: 1 天 [LV.6]常住居民II 金牌会员  
 
	积分1703 
最后登录1970-1-1 | 
 
| 如题,读出来的ADC值为245或246,进计算为24°。相关代码如下: 
 #define TEMP_CHANNEL    0x1A     //Temp Sensor is selected as input
 #define BG_CHANNEL    0x1B        //Bandgap  is selected as input
 #define AD_DISABLE      0x1F        //Module Disable
 
 #define ADCR_TEMP25     239     // 25℃时ADC值
 #define TempSlope_Cold      56      //低温时的斜率,ADC值大于ADCR_TEMP25
 #define TempSlope_Hot       60      //高温时的斜率,ADC值小于ADCR_TEMP25
 
 
 void InitADC( void )
 {
 SIM_SCGC6 |= SIM_SCGC6_ADC0_MASK;  // enable ADC0 clock
 
 /*ADC0_CFG1 = ADC_CFG1_ADIV(1)|
 ADC_CFG1_MODE(2)|
 ADC_CFG1_ADICLK(3);*/
 
 ADC0_CFG1 = ADC_CFG1_ADIV(0)|       //The divide ratio is 1 and the clock rate is (input clock)/1.
 ADC_CFG1_MODE(2)|       //It is single-ended 10-bit conversion.
 ADC_CFG1_ADICLK(0)|     //Bus clock
 ADC_CFG1_ADLPC_MASK|
 ADC_CFG1_ADLSMP_MASK;
 
 ADC0_SC2 = 0;
 
 ADC0_SC1A = ADC_SC1_AIEN_MASK | ADC_SC1_ADCH(0X1A);
 
 }
 
 unsigned char TriggerADC(unsigned char Channel)
 {
 
 if(Channel == 0x1B)                                          // Bandgap is selected as input
 PMC_REGSC |= PMC_REGSC_BGBE_MASK;                        // Bandgap buffer enabled
 ADC0_SC1A = Channel;                   // update the channel value
 return 1;
 }
 
 unsigned int ReadADCPoll(void)
 {
 while((ADC0_SC1A & ADC_SC1_COCO_MASK) == 0);
 //ADC0_SC1A &= ~ ADC0_SC1A_COCO_MASK;
 return ADC0_RA;
 }
 
 unsigned int ReadADC_TempChannel(void)
 {
 unsigned int i = 0, adc_value = 0;
 
 for(i=0; i> 4;
 
 TriggerADC(AD_DISABLE);
 
 return adc_value;
 }
 
 int Get_Temperature(void)
 {
 unsigned int adc_temp;
 int value, temp_value;
 
 adc_temp = ReadADC_TempChannel();
 DEBUG_TRACE(MOD_ADC,"adc_temp = %d", adc_temp);
 if (adc_temp >= ADCR_TEMP25)
 {
 value = (adc_temp - ADCR_TEMP25) * 10 / TempSlope_Cold;
 temp_value = (int)(25 - value);
 }
 else
 {
 value = (ADCR_TEMP25 - adc_temp) * 10 / TempSlope_Hot;
 temp_value = (int)(25 + value);
 }
 
 return temp_value;
 }
 
 | 
 |