aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
Diffstat (limited to 'examples')
-rw-r--r--examples/mcxa/Cargo.toml1
-rw-r--r--examples/mcxa/src/bin/lpuart_dma.rs2
-rw-r--r--examples/mcxa/src/bin/lpuart_ring_buffer.rs15
3 files changed, 6 insertions, 12 deletions
diff --git a/examples/mcxa/Cargo.toml b/examples/mcxa/Cargo.toml
index 4d0459f41..1ac8eac53 100644
--- a/examples/mcxa/Cargo.toml
+++ b/examples/mcxa/Cargo.toml
@@ -20,6 +20,7 @@ embassy-time-driver = "0.2.1"
20embedded-io-async = "0.6.1" 20embedded-io-async = "0.6.1"
21heapless = "0.9.2" 21heapless = "0.9.2"
22panic-probe = { version = "1.0", features = ["print-defmt"] } 22panic-probe = { version = "1.0", features = ["print-defmt"] }
23static_cell = "2.1.1"
23tmp108 = "0.4.0" 24tmp108 = "0.4.0"
24 25
25[profile.release] 26[profile.release]
diff --git a/examples/mcxa/src/bin/lpuart_dma.rs b/examples/mcxa/src/bin/lpuart_dma.rs
index 1fc6595e6..34d343452 100644
--- a/examples/mcxa/src/bin/lpuart_dma.rs
+++ b/examples/mcxa/src/bin/lpuart_dma.rs
@@ -14,7 +14,7 @@ use embassy_executor::Spawner;
14use embassy_mcxa::clocks::config::Div8; 14use embassy_mcxa::clocks::config::Div8;
15use embassy_mcxa::dma::{DmaCh0InterruptHandler, DmaCh1InterruptHandler}; 15use embassy_mcxa::dma::{DmaCh0InterruptHandler, DmaCh1InterruptHandler};
16use embassy_mcxa::lpuart::{Config, LpuartDma}; 16use embassy_mcxa::lpuart::{Config, LpuartDma};
17use embassy_mcxa::{bind_interrupts, pac}; 17use embassy_mcxa::bind_interrupts;
18use {defmt_rtt as _, embassy_mcxa as hal, panic_probe as _}; 18use {defmt_rtt as _, embassy_mcxa as hal, panic_probe as _};
19 19
20// Bind DMA channel interrupts using Embassy-style macro 20// Bind DMA channel interrupts using Embassy-style macro
diff --git a/examples/mcxa/src/bin/lpuart_ring_buffer.rs b/examples/mcxa/src/bin/lpuart_ring_buffer.rs
index 1d1a51970..b707e20f8 100644
--- a/examples/mcxa/src/bin/lpuart_ring_buffer.rs
+++ b/examples/mcxa/src/bin/lpuart_ring_buffer.rs
@@ -23,6 +23,7 @@ use embassy_mcxa::bind_interrupts;
23use embassy_mcxa::clocks::config::Div8; 23use embassy_mcxa::clocks::config::Div8;
24use embassy_mcxa::dma::{DmaCh0InterruptHandler, DmaCh1InterruptHandler}; 24use embassy_mcxa::dma::{DmaCh0InterruptHandler, DmaCh1InterruptHandler};
25use embassy_mcxa::lpuart::{Config, LpuartDma, LpuartTxDma}; 25use embassy_mcxa::lpuart::{Config, LpuartDma, LpuartTxDma};
26use static_cell::ConstStaticCell;
26use {defmt_rtt as _, embassy_mcxa as hal, panic_probe as _}; 27use {defmt_rtt as _, embassy_mcxa as hal, panic_probe as _};
27 28
28// Bind DMA channel interrupts 29// Bind DMA channel interrupts
@@ -32,7 +33,7 @@ bind_interrupts!(struct Irqs {
32}); 33});
33 34
34// Ring buffer for RX - power of 2 is ideal for modulo efficiency 35// Ring buffer for RX - power of 2 is ideal for modulo efficiency
35static mut RX_RING_BUFFER: [u8; 64] = [0; 64]; 36static RX_RING_BUFFER: ConstStaticCell<[u8; 64]> = ConstStaticCell::new([0; 64]);
36 37
37/// Helper to write a byte as hex to UART 38/// Helper to write a byte as hex to UART
38fn write_hex<T: embassy_mcxa::lpuart::Instance, C: embassy_mcxa::dma::Channel>( 39fn write_hex<T: embassy_mcxa::lpuart::Instance, C: embassy_mcxa::dma::Channel>(
@@ -75,17 +76,9 @@ async fn main(_spawner: Spawner) {
75 tx.blocking_write(b"Setting up circular DMA for UART RX...\r\n") 76 tx.blocking_write(b"Setting up circular DMA for UART RX...\r\n")
76 .unwrap(); 77 .unwrap();
77 78
79 let buf = RX_RING_BUFFER.take();
78 // Set up the ring buffer with circular DMA 80 // Set up the ring buffer with circular DMA
79 // The HAL handles: DMA request source, RDMAE enable, circular transfer config, NVIC enable 81 let mut ring_buf = rx.into_ring_dma_rx(buf);
80 let ring_buf = unsafe {
81 let buf = &mut *core::ptr::addr_of_mut!(RX_RING_BUFFER);
82 rx.setup_ring_buffer(buf)
83 };
84
85 // Enable DMA requests to start continuous reception
86 unsafe {
87 rx.enable_dma_request();
88 }
89 82
90 tx.blocking_write(b"Ring buffer ready! Type characters to see them echoed.\r\n") 83 tx.blocking_write(b"Ring buffer ready! Type characters to see them echoed.\r\n")
91 .unwrap(); 84 .unwrap();