pub struct Calibration {
pub ts_cal1: u16,
pub ts_cal2: u16,
pub vrefint_cal: u16,
}Expand description
Factory calibration values read from the DESIG peripheral.
These values are programmed during manufacturing and can be used for accurate temperature and voltage measurements.
Fields§
§ts_cal1: u16Temperature sensor calibration value at 30°C (12-bit).
ts_cal2: u16Temperature sensor calibration value at 130°C (12-bit).
vrefint_cal: u16Internal voltage reference calibration value (12-bit). Measured at VDDA = 3.0V.
Implementations§
Source§impl Calibration
impl Calibration
Sourcepub fn read() -> Self
pub fn read() -> Self
Read factory calibration values from the DESIG and VREFINTCAL peripherals.
These values are unique to each chip and were measured during manufacturing at VDDA = 3.0V.
Sourcepub fn convert_to_millicelsius(&self, ts_data: u32, vrefint_data: u32) -> i32
pub fn convert_to_millicelsius(&self, ts_data: u32, vrefint_data: u32) -> i32
Convert a temperature sensor ADC reading to temperature in millidegrees Celsius.
This function applies VDDA compensation using the VREFINT reading to account for differences between the actual supply voltage and the 3.0V calibration voltage.
§Arguments
ts_data- Raw ADC reading from the temperature sensor channelvrefint_data- Raw ADC reading from the VREFINT channel (for VDDA compensation)
§Returns
Temperature in millidegrees Celsius (e.g., 25000 = 25.000°C)
§Example
let cal = Calibration::read();
let temp_mc = cal.convert_to_millicelsius(temp_adc_reading, vrefint_adc_reading);
let temp_c = temp_mc / 1000;
let temp_frac = (temp_mc % 1000).unsigned_abs();
info!("Temperature: {}.{:03} C", temp_c, temp_frac);Trait Implementations§
Source§impl Clone for Calibration
impl Clone for Calibration
Source§fn clone(&self) -> Calibration
fn clone(&self) -> Calibration
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more