ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
1 июня
1521503 Топик полностью
IBAH (30.05.2025 15:27, просмотров: 102) ответил AlexBi на Вопрос по температуре, измеряемой встроенным датчиком у STM32F030. Как ее правильно вычислить?
давно это было 
//
//вычисление истинных значений
void AnalogInTru(void)
  {
  //Копируем 
  AnalogInV_t AnalogInTmp;
  AnalogInTmp.In0=AnalogInF.In0;
  AnalogInTmp.In1=AnalogInF.In1;
  AnalogInTmp.Vref=AnalogInF.Vref;
  AnalogInTmp.TempSensor=AnalogInF.TempSensor;
  
  //Вычисление истинных значений
  //напряжение питания
  AnalogInV.Vref=(VREFINT_CAL_VREF*(*VREFINT_CAL_ADDR))/AnalogInTmp.Vref;

#if AnalogIn0Delit==0  
  //напряжение 0
  AnalogInV.In0=((unsigned long)AnalogInV.Vref*AnalogInTmp.In0)>>12;
#else
  //напряжение 0 с учетом делителя
  AnalogInV.In0=((((unsigned long)AnalogInV.Vref*AnalogInTmp.In0)>>12)*(AnalogIn0R1+AnalogIn0R2))/(AnalogIn0R2);
#endif  

#if AnalogIn1Delit==0    
  //напряжение 1
  AnalogInV.In1=((unsigned long)AnalogInV.Vref*AnalogInTmp.In1)>>12;
#else
  //напряжение 1 с учетом делителя
  AnalogInV.In1=((((unsigned long)AnalogInV.Vref*AnalogInTmp.In1)>>12)*(AnalogIn1R1+AnalogIn1R2))/AnalogIn1R2;
#endif    
  
  //температура
  signed short TempSensor=(AnalogInTmp.TempSensor*AnalogInV.Vref)/TEMPSENSOR_CAL_VREFANALOG;
  AnalogInV.TempSensor=(
                       (TEMPSENSOR_CAL2_TEMP-TEMPSENSOR_CAL1_TEMP)*
                       (TempSensor-(*TEMPSENSOR_CAL1_ADDR))
                       )
                       /
                       ((*TEMPSENSOR_CAL2_ADDR)-(*TEMPSENSOR_CAL1_ADDR))
                       +
                       29;
  return;
  }
//