使用432内部的温度传感器是不是需要知道其温度校准参数?看数据手册和例程代码那两个参数应该在器件描述符TLV里面,而TLV关于ADC14部分却没有那两个参数啊,读出来也都是0xffffffff,是需要自己写进去还是怎样的?
- #define CALADC_15V_30C *((unsigned int *)0x1A1A) // Temperature Sensor Calibration-30 C
- // See device datasheet for TLV table memory mapping
- #define CALADC_15V_85C *((unsigned int *)0x1A1C) // Temperature Sensor Calibration-85 C
- cal30 = SysCtl_getTempCalibrationConstant(SYSCTL_2_5V_REF,
- SYSCTL_30_DEGREES_C);
- cal85 = SysCtl_getTempCalibrationConstant(SYSCTL_2_5V_REF,
- SYSCTL_85_DEGREES_C);
请参考DATASHEET 47页Table5-40的说明.尤其是(2)的说明.
例程的代码也是没有问题的.只是楼主的引用没有完全.
ADC14CTL1 |= ADC14TCMAP; // Enable internal temperature sensor
嗯,找到了,可是我感觉好像还是算不出来这个温度值呢?
怎么算不出来呢?测量值-初始误差值就是校准后的温度值.
// Temperature in Celsius
// The temperature (Temp, C)=
IntDegC = (temp-CALADC_15V_30C)*(85-30)/(CALADC_15V_85C-CALADC_15V_30C)+30;
// Temperature in Fahrenheit
// Tf = (9/5)*Tc | 32
IntDegF = 9*IntDegC/5+32;
初始化的校准值是在30度和85度的值,进行斜率的校准.然后就是计算了.很简单的一种校准方法.当然也是最有效和相对准确的方法了.
其实校准的目的就是要把ADC的初始误差进行排除.当然最准确的办法是人为采用高精度的基准电源进行.但是这是不现实的.所以TI在他们的芯片里都内置了高精度的带隙基准电源.这一点是其他公司很难做到的.所以如果用工业精度的芯片,首选是TI和ADI.
好吧,原谅我还是不明白,想这里的“CALADC_15V_85C” 和 “CALADC_15V_30C”校准参数在哪里可以看到,是不是要自己算?
如果改变内部参考电压值,不知道CALADC_xxV_85C 和 CALADC_xxV_30C的会不会改变?