An on-chip temperature sensor is available. To do a temperature
measurement, follow these steps:
- 1.Configure the voltage
reference to internal 1.024V by writing to the Reference Selection
(REFSEL) bit field the ADCn.CTRLC register.
- 2.Select the temperature
sensor as input in the Positive Input Multiplexer (ADCn.MUXPOS)
register.
- 3.Configure the ADC Sample
Duration by writing a value ≥
32 µs×fCLK_ADC
to the Sample Duration (SAMPDUR) bit
field in the Control E (ADCn.CTRLE) register.
- 4.Acquire the temperature
sensor output voltage by running a 12-bit Single-Ended
conversion.
- 5.Process the measurement
result, as described below.
The measured voltage has a linear relationship to the temperature. Due to
process variations, the temperature sensor output voltage varies between the
individual devices at the same temperature. The individual compensation factors
determined during the production test are stored in the Signature Row:
- SIGROW.TEMPSENSE0 is a
gain/slope correction
- SIGROW.TEMPSENSE1 is an
offset correction
The result of the temperature sensor measurement must be processed in the
application software using compensation values from device production or user
calibration to achieve more accurate results. Refer to the
Electrical
Characteristics section for further details.
It is recommended to follow these steps in the user code when
using the compensation values from the Signature
Row:
int8_t sigrow_offset = SIGROW.TEMPSENSE1;
uint8_t sigrow_gain = SIGROW.TEMPSENSE0;
uint16_t adc_reading = ADC0.RESULT >> 2;
uint32_t temp = adc_reading - sigrow_offset;
temp *= sigrow_gain;
temp += 0x80;
temp >>= 8;
uint16_t temperature_in_K = temp;