Skip to content

Commit bbc9385

Browse files
authored
Merge pull request #4646 from Iooon/mspm0-adc
MSPM0: add adc implementation
2 parents ab81b79 + 31b5a3f commit bbc9385

File tree

6 files changed

+612
-0
lines changed

6 files changed

+612
-0
lines changed

embassy-mspm0/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1212
- fix gpio interrupt not being set for mspm0l110x
1313
- feat: Add window watchdog implementation based on WWDT0, WWDT1 peripherals (#4574)
1414
- feat: Add MSPM0C1105/C1106 support
15+
- feat: Add adc implementation (#4646)

embassy-mspm0/build.rs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ fn generate_code() {
6868
g.extend(generate_pin_trait_impls());
6969
g.extend(generate_groups());
7070
g.extend(generate_dma_channel_count());
71+
g.extend(generate_adc_constants(&mut cfgs));
7172

7273
let out_dir = &PathBuf::from(env::var_os("OUT_DIR").unwrap());
7374
let out_file = out_dir.join("_generated.rs").to_string_lossy().to_string();
@@ -220,6 +221,22 @@ fn generate_dma_channel_count() -> TokenStream {
220221
quote! { pub const DMA_CHANNELS: usize = #count; }
221222
}
222223

224+
fn generate_adc_constants(cfgs: &mut CfgSet) -> TokenStream {
225+
let vrsel = METADATA.adc_vrsel;
226+
let memctl = METADATA.adc_memctl;
227+
228+
cfgs.declare("adc_neg_vref");
229+
match vrsel {
230+
3 => (),
231+
5 => cfgs.enable("adc_neg_vref"),
232+
_ => panic!("Unsupported ADC VRSEL value: {vrsel}"),
233+
}
234+
quote! {
235+
pub const ADC_VRSEL: u8 = #vrsel;
236+
pub const ADC_MEMCTL: u8 = #memctl;
237+
}
238+
}
239+
223240
#[derive(Debug, Clone)]
224241
struct Singleton {
225242
name: String,
@@ -561,6 +578,7 @@ fn generate_peripheral_instances() -> TokenStream {
561578
"uart" => Some(quote! { impl_uart_instance!(#peri); }),
562579
"i2c" => Some(quote! { impl_i2c_instance!(#peri, #fifo_size); }),
563580
"wwdt" => Some(quote! { impl_wwdt_instance!(#peri); }),
581+
"adc" => Some(quote! { impl_adc_instance!(#peri); }),
564582
_ => None,
565583
};
566584

@@ -609,6 +627,10 @@ fn generate_pin_trait_impls() -> TokenStream {
609627
("uart", "RTS") => Some(quote! { impl_uart_rts_pin!(#peri, #pin_name, #pf); }),
610628
("i2c", "SDA") => Some(quote! { impl_i2c_sda_pin!(#peri, #pin_name, #pf); }),
611629
("i2c", "SCL") => Some(quote! { impl_i2c_scl_pin!(#peri, #pin_name, #pf); }),
630+
("adc", s) => {
631+
let signal = s.parse::<u8>().unwrap();
632+
Some(quote! { impl_adc_pin!(#peri, #pin_name, #signal); })
633+
}
612634

613635
_ => None,
614636
};

0 commit comments

Comments
 (0)