以下是库函数里关于温度计算的要点,芯片手册里也是这样描述的:
读取ADC参考电压1.5V时的温度传感器的测量温度
void ADC_GetTsVref1V5(float *fAdcTsDegree)
{
uint16_t u16AdcResult;
uint8_t temp1;
uint16_t temp2;
temp1 = *((uint8_t*) (ADDR_T0));
temp2 = *((uint16_t*) (ADDR_TRIM_1P5));
u16AdcResult = ADC_GetConversionValue();
*fAdcTsDegree = temp1 * 0.5f + COEFF_TS * 1.5f * (u16AdcResult - temp2);
}
(转换结果u16AdcResult - 标定值temp2)是正数,即转换结果比标定值大,计算结果是对的。转换结果比标定值小,这里就会出现负数,计算结果就出错。
手册上举的例子偏偏是标定值小的,我实测结果,转换结果会比标定值小。
问题清楚了,如何解决大家说说吧。 |