aboutsummaryrefslogtreecommitdiff
path: root/examples/src/bin/dma_memset.rs
diff options
context:
space:
mode:
Diffstat (limited to 'examples/src/bin/dma_memset.rs')
-rw-r--r--examples/src/bin/dma_memset.rs37
1 files changed, 21 insertions, 16 deletions
diff --git a/examples/src/bin/dma_memset.rs b/examples/src/bin/dma_memset.rs
index 8a1636e57..9fbba85e9 100644
--- a/examples/src/bin/dma_memset.rs
+++ b/examples/src/bin/dma_memset.rs
@@ -12,10 +12,9 @@
12 12
13use embassy_executor::Spawner; 13use embassy_executor::Spawner;
14use embassy_mcxa::clocks::config::Div8; 14use embassy_mcxa::clocks::config::Div8;
15use embassy_mcxa::dma::{DmaChannel, DmaCh0InterruptHandler}; 15use embassy_mcxa::dma::{DmaCh0InterruptHandler, DmaChannel};
16use embassy_mcxa::bind_interrupts;
17use embassy_mcxa::lpuart::{Blocking, Config, Lpuart, LpuartTx}; 16use embassy_mcxa::lpuart::{Blocking, Config, Lpuart, LpuartTx};
18use embassy_mcxa::pac; 17use embassy_mcxa::{bind_interrupts, pac};
19use {defmt_rtt as _, embassy_mcxa as hal, panic_probe as _}; 18use {defmt_rtt as _, embassy_mcxa as hal, panic_probe as _};
20 19
21// Bind DMA channel 0 interrupt using Embassy-style macro 20// Bind DMA channel 0 interrupt using Embassy-style macro
@@ -92,8 +91,7 @@ async fn main(_spawner: Spawner) {
92 let lpuart = Lpuart::new_blocking(p.LPUART2, p.P2_2, p.P2_3, config).unwrap(); 91 let lpuart = Lpuart::new_blocking(p.LPUART2, p.P2_2, p.P2_3, config).unwrap();
93 let (mut tx, _rx) = lpuart.split(); 92 let (mut tx, _rx) = lpuart.split();
94 93
95 tx.blocking_write(b"EDMA memset example begin.\r\n\r\n") 94 tx.blocking_write(b"EDMA memset example begin.\r\n\r\n").unwrap();
96 .unwrap();
97 95
98 // Initialize buffers 96 // Initialize buffers
99 unsafe { 97 unsafe {
@@ -133,19 +131,26 @@ async fn main(_spawner: Spawner) {
133 131
134 // Reset channel state 132 // Reset channel state
135 t.ch_csr().write(|w| { 133 t.ch_csr().write(|w| {
136 w.erq().disable() 134 w.erq()
137 .earq().disable() 135 .disable()
138 .eei().no_error() 136 .earq()
139 .ebw().disable() 137 .disable()
140 .done().clear_bit_by_one() 138 .eei()
139 .no_error()
140 .ebw()
141 .disable()
142 .done()
143 .clear_bit_by_one()
141 }); 144 });
142 t.ch_es().write(|w| w.bits(0)); 145 t.ch_es().write(|w| w.bits(0));
143 t.ch_int().write(|w| w.int().clear_bit_by_one()); 146 t.ch_int().write(|w| w.int().clear_bit_by_one());
144 147
145 // Source address (pattern) - fixed 148 // Source address (pattern) - fixed
146 t.tcd_saddr().write(|w| w.saddr().bits(core::ptr::addr_of_mut!(PATTERN) as u32)); 149 t.tcd_saddr()
150 .write(|w| w.saddr().bits(core::ptr::addr_of_mut!(PATTERN) as u32));
147 // Destination address - increments 151 // Destination address - increments
148 t.tcd_daddr().write(|w| w.daddr().bits(core::ptr::addr_of_mut!(DEST_BUFFER) as u32)); 152 t.tcd_daddr()
153 .write(|w| w.daddr().bits(core::ptr::addr_of_mut!(DEST_BUFFER) as u32));
149 154
150 // Source offset = 0 (stays fixed), Dest offset = 4 (increments) 155 // Source offset = 0 (stays fixed), Dest offset = 4 (increments)
151 t.tcd_soff().write(|w| w.soff().bits(0)); 156 t.tcd_soff().write(|w| w.soff().bits(0));
@@ -180,10 +185,11 @@ async fn main(_spawner: Spawner) {
180 while !dma_ch0.is_done() { 185 while !dma_ch0.is_done() {
181 cortex_m::asm::nop(); 186 cortex_m::asm::nop();
182 } 187 }
183 unsafe { dma_ch0.clear_done(); } 188 unsafe {
189 dma_ch0.clear_done();
190 }
184 191
185 tx.blocking_write(b"\r\nEDMA memset example finish.\r\n\r\n") 192 tx.blocking_write(b"\r\nEDMA memset example finish.\r\n\r\n").unwrap();
186 .unwrap();
187 tx.blocking_write(b"Destination Buffer (after): ").unwrap(); 193 tx.blocking_write(b"Destination Buffer (after): ").unwrap();
188 print_buffer(&mut tx, core::ptr::addr_of!(DEST_BUFFER) as *const u32, BUFFER_LENGTH); 194 print_buffer(&mut tx, core::ptr::addr_of!(DEST_BUFFER) as *const u32, BUFFER_LENGTH);
189 tx.blocking_write(b"\r\n\r\n").unwrap(); 195 tx.blocking_write(b"\r\n\r\n").unwrap();
@@ -212,4 +218,3 @@ async fn main(_spawner: Spawner) {
212 cortex_m::asm::wfe(); 218 cortex_m::asm::wfe();
213 } 219 }
214} 220}
215