Thermostat: Add fn to calibrate ADC's VDDA
- ADC1 exclusive feature - Calibrated VDDA val can be passed to other ADCs to adjust gain error
This commit is contained in:
parent
0d12c902fc
commit
c768bdc93a
|
@ -115,11 +115,17 @@ impl<C: ChannelPins> MAX1968Phy<C> {
|
||||||
|
|
||||||
impl MAX1968 {
|
impl MAX1968 {
|
||||||
pub fn new(phy_ch0: MAX1968Phy<Channel0>, adc1: ADC1) -> Self {
|
pub fn new(phy_ch0: MAX1968Phy<Channel0>, adc1: ADC1) -> Self {
|
||||||
|
// Set ADC to a slowest sampling interval for more accurate calibration
|
||||||
let config = AdcConfig::default()
|
let config = AdcConfig::default()
|
||||||
.clock(config::Clock::Pclk2_div_2)
|
.clock(config::Clock::Pclk2_div_8)
|
||||||
.default_sample_time(config::SampleTime::Cycles_480);
|
.default_sample_time(config::SampleTime::Cycles_480);
|
||||||
|
let mut pins_adc = Adc::adc1(adc1, true, config);
|
||||||
|
pins_adc.calibrate();
|
||||||
|
|
||||||
let pins_adc = Adc::adc1(adc1, true, config);
|
let config = AdcConfig::default()
|
||||||
|
.clock(config::Clock::Pclk2_div_8)
|
||||||
|
.default_sample_time(config::SampleTime::Cycles_480);
|
||||||
|
pins_adc.apply_config(config);
|
||||||
|
|
||||||
MAX1968 {
|
MAX1968 {
|
||||||
phy: phy_ch0,
|
phy: phy_ch0,
|
||||||
|
@ -127,6 +133,12 @@ impl MAX1968 {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Return the calibrated VDDA Voltage
|
||||||
|
// Can be used to set reference voltage for other ADC
|
||||||
|
pub fn get_calibrated_vdda(&mut self) -> u32 {
|
||||||
|
self.pins_adc.reference_voltage()
|
||||||
|
}
|
||||||
|
|
||||||
pub fn power_down(&mut self) {
|
pub fn power_down(&mut self) {
|
||||||
self.phy.shdn.set_low();
|
self.phy.shdn.set_low();
|
||||||
}
|
}
|
||||||
|
|
|
@ -301,6 +301,11 @@ impl Thermostat{
|
||||||
max_i_neg: TecSettingsSummaryField { value: self.tec_setting.max_i_neg_set, max: TecSettings::MAX_I_NEG_CURRENT },
|
max_i_neg: TecSettingsSummaryField { value: self.tec_setting.max_i_neg_set, max: TecSettings::MAX_I_NEG_CURRENT },
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn get_calibrated_vdda(&mut self) -> u32 {
|
||||||
|
self.max1968.get_calibrated_vdda()
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Miniconf)]
|
#[derive(Miniconf)]
|
||||||
|
|
Loading…
Reference in New Issue