From ff068148fcbc7ea148454cffa81921cc0e0da3e9 Mon Sep 17 00:00:00 2001 From: Mathis Deroo Date: Mon, 8 Dec 2025 13:56:31 -0800 Subject: Modify ConvCommandConfig struct Signed-off-by: Mathis Deroo --- embassy-mcxa/src/adc.rs | 38 ++++++++++++++++------------------ examples/mcxa/src/bin/adc_interrupt.rs | 4 ++-- examples/mcxa/src/bin/adc_polling.rs | 4 ++-- 3 files changed, 22 insertions(+), 24 deletions(-) diff --git a/embassy-mcxa/src/adc.rs b/embassy-mcxa/src/adc.rs index 94d945c88..8852fd737 100644 --- a/embassy-mcxa/src/adc.rs +++ b/embassy-mcxa/src/adc.rs @@ -99,17 +99,16 @@ impl Default for LpadcConfig { /// Defines the parameters for a single ADC conversion operation. #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub struct ConvCommandConfig { - pub sample_channel_mode: u8, - pub channel_number: u8, - pub chained_next_command_number: u8, + pub channel_number: Adch, + pub chained_next_command_number: Next, pub enable_auto_channel_increment: bool, pub loop_count: u8, - pub hardware_average_mode: u8, - pub sample_time_mode: u8, - pub hardware_compare_mode: u8, + pub hardware_average_mode: Avgs, + pub sample_time_mode: Sts, + pub hardware_compare_mode: Cmpen, pub hardware_compare_value_high: u32, pub hardware_compare_value_low: u32, - pub conversion_resolution_mode: u8, + pub conversion_resolution_mode: Mode, pub enable_wait_trigger: bool, } @@ -359,17 +358,16 @@ impl<'a, I: Instance> Adc<'a, I> { /// Default conversion command configuration pub fn get_default_conv_command_config(&self) -> ConvCommandConfig { ConvCommandConfig { - sample_channel_mode: Ctype::SingleEndedASideChannel as u8, - channel_number: Adch::SelectCh0 as u8, - chained_next_command_number: Next::NoNextCmdTerminateOnFinish as u8, + channel_number: Adch::SelectCh0, + chained_next_command_number: Next::NoNextCmdTerminateOnFinish, enable_auto_channel_increment: false, loop_count: 0, - hardware_average_mode: Avgs::NoAverage as u8, - sample_time_mode: Sts::Sample3p5 as u8, - hardware_compare_mode: Cmpen::DisabledAlwaysStoreResult as u8, + hardware_average_mode: Avgs::NoAverage, + sample_time_mode: Sts::Sample3p5, + hardware_compare_mode: Cmpen::DisabledAlwaysStoreResult, hardware_compare_value_high: 0, hardware_compare_value_low: 0, - conversion_resolution_mode: Mode::Data12Bits as u8, + conversion_resolution_mode: Mode::Data12Bits, enable_wait_trigger: false, } } @@ -390,21 +388,21 @@ impl<'a, I: Instance> Adc<'a, I> { paste! { adc.[]().write(|w| unsafe { w.adch() - .bits(config.channel_number) + .bits(config.channel_number.into()) .mode() - .bit(config.conversion_resolution_mode != 0) + .bit(config.conversion_resolution_mode.into()) }); adc.[]().write(|w| unsafe { w.next() - .bits(config.chained_next_command_number) + .bits(config.chained_next_command_number.into()) .loop_() .bits(config.loop_count) .avgs() - .bits(config.hardware_average_mode) + .bits(config.hardware_average_mode.into()) .sts() - .bits(config.sample_time_mode) + .bits(config.sample_time_mode.into()) .cmpen() - .bits(config.hardware_compare_mode) + .bits(config.hardware_compare_mode.into()) .wait_trig() .bit(config.enable_wait_trigger) .lwi() diff --git a/examples/mcxa/src/bin/adc_interrupt.rs b/examples/mcxa/src/bin/adc_interrupt.rs index 125e37690..9db1173e3 100644 --- a/examples/mcxa/src/bin/adc_interrupt.rs +++ b/examples/mcxa/src/bin/adc_interrupt.rs @@ -50,8 +50,8 @@ async fn main(_spawner: Spawner) { adc.do_auto_calibration(); let mut conv_command_config = adc.get_default_conv_command_config(); - conv_command_config.channel_number = Adch::SelectCorrespondingChannel8 as u8; - conv_command_config.conversion_resolution_mode = Mode::Data16Bits as u8; + conv_command_config.channel_number = Adch::SelectCorrespondingChannel8; + conv_command_config.conversion_resolution_mode = Mode::Data16Bits; adc.set_conv_command_config(1, &conv_command_config); let mut conv_trigger_config = adc.get_default_conv_trigger_config(); diff --git a/examples/mcxa/src/bin/adc_polling.rs b/examples/mcxa/src/bin/adc_polling.rs index 523035e0f..65b66c8dd 100644 --- a/examples/mcxa/src/bin/adc_polling.rs +++ b/examples/mcxa/src/bin/adc_polling.rs @@ -45,8 +45,8 @@ async fn main(_spawner: Spawner) { adc.do_auto_calibration(); let mut conv_command_config = adc.get_default_conv_command_config(); - conv_command_config.channel_number = Adch::SelectCorrespondingChannel8 as u8; - conv_command_config.conversion_resolution_mode = Mode::Data16Bits as u8; + conv_command_config.channel_number = Adch::SelectCorrespondingChannel8; + conv_command_config.conversion_resolution_mode = Mode::Data16Bits; adc.set_conv_command_config(1, &conv_command_config); let mut conv_trigger_config = adc.get_default_conv_trigger_config(); -- cgit