fix(temp): correctly read actual VRef
This commit is contained in:
parent
a5c99f4037
commit
630b2b996e
1 changed files with 3 additions and 8 deletions
|
@ -19,18 +19,13 @@ fn main() -> ! {
|
||||||
let cp = cortex_m::Peripherals::take().unwrap();
|
let cp = cortex_m::Peripherals::take().unwrap();
|
||||||
|
|
||||||
let mut rcc = dp.RCC.freeze(Config::hsi16());
|
let mut rcc = dp.RCC.freeze(Config::hsi16());
|
||||||
let mut adc = dp.ADC.constrain(&mut rcc);
|
let mut adc: Adc<_> = dp.ADC.constrain(&mut rcc);
|
||||||
|
|
||||||
let mut delay = cp.SYST.delay(rcc.clocks);
|
let mut delay = cp.SYST.delay(rcc.clocks);
|
||||||
|
|
||||||
// manual says i need to calibrate but then boom
|
|
||||||
adc.set_sample_time(hal::adc::SampleTime::T_1_5);
|
|
||||||
delay.delay_ms(50_u16);
|
|
||||||
adc.calibrate().unwrap();
|
|
||||||
delay.delay_ms(5000_u16);
|
|
||||||
|
|
||||||
// NOTE: TSEN bit must be enabled for reading the temperature
|
// NOTE: TSEN bit must be enabled for reading the temperature
|
||||||
VTemp.enable(&mut adc);
|
VTemp.enable(&mut adc);
|
||||||
|
VRef.enable(&mut adc);
|
||||||
|
|
||||||
// reference temperatures from the chips readonly memory
|
// reference temperatures from the chips readonly memory
|
||||||
// [Source](https://www.st.com/resource/en/datasheet/stm32l053r8.pdf),
|
// [Source](https://www.st.com/resource/en/datasheet/stm32l053r8.pdf),
|
||||||
|
@ -53,7 +48,7 @@ fn main() -> ! {
|
||||||
let vref_actual: u16 = adc.read(&mut VRef).unwrap();
|
let vref_actual: u16 = adc.read(&mut VRef).unwrap();
|
||||||
let vref_factor = vref_cal as f32 / vref_actual as f32;
|
let vref_factor = vref_cal as f32 / vref_actual as f32;
|
||||||
debug!(
|
debug!(
|
||||||
"vref real={} register={} => factor={}",
|
"vref actual={} calibration={} => factor={}",
|
||||||
vref_actual, vref_cal, vref_factor
|
vref_actual, vref_cal, vref_factor
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue