Hi,
I used the statements below to call out the calibrated data for adc and temperature.
uint16 adcCalInt0V2 = *((uint8 *)INFOPAGE_WORD12 + 0) << 6 | *((uint8 *)INFOPAGE_WORD12 + 1) >> 2;
uint16 adcCalInt0V9 = *((uint8 *)INFOPAGE_WORD12 + 2) << 6 | *((uint8 *)INFOPAGE_WORD12 + 3) >> 2;
uint16 adcTemp25= *((uint8 *)INFOPAGE_WORD7 + 2) << 6 | *((uint8 *)INFOPAGE_WORD7 + 3) >> 2;
I got the values below.
adcCalInt0V2 = 1311
adcCalInt0V9 = 5916
adcTemp25 = 5793
Internal Reference: MAX_CODE / ((v09 – v02)/0.7) using 14-bit resoution
Calculated Internal Reference = 1.2453 V
From datasheet cc2540,
Internal Reference = 1.24V Temperature coefficient: 4.5 /1°C at 12-bit resolution.
By calculation, Temperature coefficient = 2.7259 mV/1°C
I used my thermometer to verify the data. At 14-bit resolution,
at my thermometer reading 24.0 °C, adcMyTemp240 = 5566
at my thermometer reading 22.9 °C, adcMyTemp229 = 5548
Calculated Temperature coefficient = 2.4874 mV/1°C that matches datasheet values.
Based on the Temperature coefficient from datasheet,
if adcMyTemp250 = 5793
By calculation, my temperature = 36.6 °C not equal to 25 °C
Based on the adc output values adcMyTemp240 and adcMyTemp229 , adc output at 25 °C is expected to be around 55XX.
Why does the calibrated temperature value at 25°C off a lot from the actual value ?
I tried 1-point or 2-point calibrations to complete my temperature conversion; but the results are incorrect in both cases.
How can we eliminate temperature calibration in production? Can Ti provide an additional data point for 2-point temperature calibration?
Best Regards,
CK Lui