aboutsummaryrefslogtreecommitdiff
path: root/examples/src/bin/adc_polling.rs
diff options
context:
space:
mode:
authorJames Munns <[email protected]>2025-11-25 18:08:13 +0100
committerGitHub <[email protected]>2025-11-25 18:08:13 +0100
commit05bf2d0438fe8c41d0fe26b85106ff73a6e273e9 (patch)
tree8a2969ac89735154f8090d629d9c37814a25190a /examples/src/bin/adc_polling.rs
parent7ee5cb570f0c0daeb2e6a9d5120fd96ee885025f (diff)
Wire up Lpuart pins (#43)
Allow the HAL lpuart driver to correctly configure pins as requested on init.
Diffstat (limited to 'examples/src/bin/adc_polling.rs')
-rw-r--r--examples/src/bin/adc_polling.rs31
1 files changed, 4 insertions, 27 deletions
diff --git a/examples/src/bin/adc_polling.rs b/examples/src/bin/adc_polling.rs
index 02ac321b5..ddf3f586b 100644
--- a/examples/src/bin/adc_polling.rs
+++ b/examples/src/bin/adc_polling.rs
@@ -1,19 +1,15 @@
1#![no_std] 1#![no_std]
2#![no_main] 2#![no_main]
3 3
4use core::fmt::Write;
5
6use embassy_executor::Spawner; 4use embassy_executor::Spawner;
7use embassy_mcxa_examples::{init_adc_pins, init_uart2_pins}; 5use embassy_mcxa_examples::init_adc_pins;
8use hal::adc::{ConvResult, LpadcConfig, TriggerPriorityPolicy}; 6use hal::adc::{ConvResult, LpadcConfig, TriggerPriorityPolicy};
9use hal::clocks::periph_helpers::{AdcClockSel, Div4}; 7use hal::clocks::periph_helpers::{AdcClockSel, Div4};
10use hal::clocks::PoweredClock; 8use hal::clocks::PoweredClock;
11use hal::lpuart::{Config, Lpuart};
12use hal::pac::adc1::cfg::{Pwrsel, Refsel}; 9use hal::pac::adc1::cfg::{Pwrsel, Refsel};
13use hal::pac::adc1::cmdl1::{Adch, Mode}; 10use hal::pac::adc1::cmdl1::{Adch, Mode};
14use hal::pac::adc1::ctrl::CalAvgs; 11use hal::pac::adc1::ctrl::CalAvgs;
15use hal::pac::adc1::tctrl::Tcmd; 12use hal::pac::adc1::tctrl::Tcmd;
16use heapless::String;
17use {defmt_rtt as _, embassy_mcxa as hal, panic_probe as _}; 13use {defmt_rtt as _, embassy_mcxa as hal, panic_probe as _};
18 14
19const G_LPADC_RESULT_SHIFT: u32 = 0; 15const G_LPADC_RESULT_SHIFT: u32 = 0;
@@ -22,28 +18,11 @@ const G_LPADC_RESULT_SHIFT: u32 = 0;
22async fn main(_spawner: Spawner) { 18async fn main(_spawner: Spawner) {
23 let p = hal::init(hal::config::Config::default()); 19 let p = hal::init(hal::config::Config::default());
24 20
25 // Create UART configuration
26 let config = Config {
27 baudrate_bps: 115_200,
28 enable_tx: true,
29 enable_rx: true,
30 ..Default::default()
31 };
32
33 // Create UART instance using LPUART2 with P2_2 as TX and P2_3 as RX
34 unsafe { 21 unsafe {
35 init_uart2_pins();
36 init_adc_pins(); 22 init_adc_pins();
37 } 23 }
38 let mut uart = Lpuart::new_blocking(
39 p.LPUART2, // Peripheral
40 p.P2_2, // TX pin
41 p.P2_3, // RX pin
42 config,
43 )
44 .unwrap();
45 24
46 uart.write_str_blocking("\r\n=== ADC polling Example ===\r\n"); 25 defmt::info!("=== ADC polling Example ===");
47 26
48 let adc_config = LpadcConfig { 27 let adc_config = LpadcConfig {
49 enable_in_doze_mode: true, 28 enable_in_doze_mode: true,
@@ -75,7 +54,7 @@ async fn main(_spawner: Spawner) {
75 conv_trigger_config.enable_hardware_trigger = false; 54 conv_trigger_config.enable_hardware_trigger = false;
76 adc.set_conv_trigger_config(0, &conv_trigger_config); 55 adc.set_conv_trigger_config(0, &conv_trigger_config);
77 56
78 uart.write_str_blocking("\r\n=== ADC configuration done... ===\r\n"); 57 defmt::info!("=== ADC configuration done... ===");
79 58
80 loop { 59 loop {
81 adc.do_software_trigger(1); 60 adc.do_software_trigger(1);
@@ -84,8 +63,6 @@ async fn main(_spawner: Spawner) {
84 result = hal::adc::get_conv_result(); 63 result = hal::adc::get_conv_result();
85 } 64 }
86 let value = result.unwrap().conv_value >> G_LPADC_RESULT_SHIFT; 65 let value = result.unwrap().conv_value >> G_LPADC_RESULT_SHIFT;
87 let mut buf: String<16> = String::new(); // adjust size as needed 66 defmt::info!("value: {=u16}", value);
88 write!(buf, "\r\nvalue: {}\r\n", value).unwrap();
89 uart.write_str_blocking(&buf);
90 } 67 }
91} 68}