之前“infoA里有关于温度传感器的校准数据”是我胡诌的,虽然我知道里面确实有校准数据,但是实际上不管使用或者不使用这个校准数据,在室温范围内对测量的结果影响不大(所以你看到满大街的例子都是不修正直接使用的)。
这个数字ADC12里有,ADC10里也有。看UG(slau144j),582页Table 24-1. Example SegmentA Structure
留意到你的参考电压是1.5V,那么我们需要获知CAL_ADC_15T85和CAL_ADC_15T30这两个量的值
从表格中可以看到它们的地址分别是0x10E4 和0x10E2。
进入CCS的调试模式,打开Memory Browser,可以直接阅读寄存器的数据。我的手头有一片G2452,刚刚尝试读取了一下,这两个数值分别是0x0368和0x02E2。
也就是85℃的ADC读数是0x368=872,30摄氏度的度数0x2E2=738。
刚刚我从G2452中读了一次温度数据,感觉是你看错了数字才导致计算结果不正确的
。
我读出的ADC数据是742(不是722),带入公式计算,得到温度(742-738)*(85-30)/(872-738)+30=31.64℃,与室温相差无几。
如果使用满大街不修正的计算公式:
((742 - 673) * 423) / 1024≈28.5℃。
这与室温同样相当接近。固然,使用校准后的数据与不校准的数据来测量温度必然会有差异,但是这个差值不应该那么大。
如果用UG上的参数来计算,VTEMP=0.00355(TEMPC)+0.986(slau144j第550页Figure 22-13)
((722/1024)*1.5V -0.986V)/0.00355V=20.17℃;
((722 - 673) * 423) / 1024=20.2℃
这两个结果相差并不大。