aboutsummaryrefslogtreecommitdiff
path: root/examples/src/bin/dma_interleave_transfer.rs
diff options
context:
space:
mode:
authorBogdan Petru Chircu Mare <[email protected]>2025-12-01 09:08:03 -0800
committerBogdan Petru Chircu Mare <[email protected]>2025-12-01 09:08:03 -0800
commit230237b73cbe6f31780ea407ed13bee1adf8eaa2 (patch)
tree0f40b5ad7ced34055aabb91446ca759e67041115 /examples/src/bin/dma_interleave_transfer.rs
parent5a6394666e23555e4f329f7b1bd470d0728434a1 (diff)
Apply rustfmt formatting fixes
Diffstat (limited to 'examples/src/bin/dma_interleave_transfer.rs')
-rw-r--r--examples/src/bin/dma_interleave_transfer.rs38
1 files changed, 23 insertions, 15 deletions
diff --git a/examples/src/bin/dma_interleave_transfer.rs b/examples/src/bin/dma_interleave_transfer.rs
index 949ea0605..c0ebb0a46 100644
--- a/examples/src/bin/dma_interleave_transfer.rs
+++ b/examples/src/bin/dma_interleave_transfer.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
@@ -125,22 +124,29 @@ async fn main(_spawner: Spawner) {
125 124
126 // Reset channel state 125 // Reset channel state
127 t.ch_csr().write(|w| { 126 t.ch_csr().write(|w| {
128 w.erq().disable() 127 w.erq()
129 .earq().disable() 128 .disable()
130 .eei().no_error() 129 .earq()
131 .ebw().disable() 130 .disable()
132 .done().clear_bit_by_one() 131 .eei()
132 .no_error()
133 .ebw()
134 .disable()
135 .done()
136 .clear_bit_by_one()
133 }); 137 });
134 t.ch_es().write(|w| w.bits(0)); 138 t.ch_es().write(|w| w.bits(0));
135 t.ch_int().write(|w| w.int().clear_bit_by_one()); 139 t.ch_int().write(|w| w.int().clear_bit_by_one());
136 140
137 // Source/destination addresses 141 // Source/destination addresses
138 t.tcd_saddr().write(|w| w.saddr().bits(core::ptr::addr_of_mut!(SRC_BUFFER) as u32)); 142 t.tcd_saddr()
139 t.tcd_daddr().write(|w| w.daddr().bits(core::ptr::addr_of_mut!(DEST_BUFFER) as u32)); 143 .write(|w| w.saddr().bits(core::ptr::addr_of_mut!(SRC_BUFFER) as u32));
144 t.tcd_daddr()
145 .write(|w| w.daddr().bits(core::ptr::addr_of_mut!(DEST_BUFFER) as u32));
140 146
141 // Custom offsets for interleaving 147 // Custom offsets for interleaving
142 t.tcd_soff().write(|w| w.soff().bits(4)); // src: +4 bytes per read 148 t.tcd_soff().write(|w| w.soff().bits(4)); // src: +4 bytes per read
143 t.tcd_doff().write(|w| w.doff().bits(8)); // dst: +8 bytes per write 149 t.tcd_doff().write(|w| w.doff().bits(8)); // dst: +8 bytes per write
144 150
145 // Attributes: 32-bit transfers (size = 2) 151 // Attributes: 32-bit transfers (size = 2)
146 t.tcd_attr().write(|w| w.ssize().bits(2).dsize().bits(2)); 152 t.tcd_attr().write(|w| w.ssize().bits(2).dsize().bits(2));
@@ -153,7 +159,8 @@ async fn main(_spawner: Spawner) {
153 t.tcd_slast_sda().write(|w| w.slast_sda().bits(-(nbytes as i32) as u32)); 159 t.tcd_slast_sda().write(|w| w.slast_sda().bits(-(nbytes as i32) as u32));
154 // Destination uses 2x offset, so adjust accordingly 160 // Destination uses 2x offset, so adjust accordingly
155 let dst_total = (HALF_BUFF_LENGTH * 8) as u32; 161 let dst_total = (HALF_BUFF_LENGTH * 8) as u32;
156 t.tcd_dlast_sga().write(|w| w.dlast_sga().bits(-(dst_total as i32) as u32)); 162 t.tcd_dlast_sga()
163 .write(|w| w.dlast_sga().bits(-(dst_total as i32) as u32));
157 164
158 // Major loop count = 1 165 // Major loop count = 1
159 t.tcd_biter_elinkno().write(|w| w.biter().bits(1)); 166 t.tcd_biter_elinkno().write(|w| w.biter().bits(1));
@@ -172,7 +179,9 @@ async fn main(_spawner: Spawner) {
172 while !dma_ch0.is_done() { 179 while !dma_ch0.is_done() {
173 cortex_m::asm::nop(); 180 cortex_m::asm::nop();
174 } 181 }
175 unsafe { dma_ch0.clear_done(); } 182 unsafe {
183 dma_ch0.clear_done();
184 }
176 185
177 tx.blocking_write(b"\r\nEDMA interleave transfer example finish.\r\n\r\n") 186 tx.blocking_write(b"\r\nEDMA interleave transfer example finish.\r\n\r\n")
178 .unwrap(); 187 .unwrap();
@@ -206,4 +215,3 @@ async fn main(_spawner: Spawner) {
206 cortex_m::asm::wfe(); 215 cortex_m::asm::wfe();
207 } 216 }
208} 217}
209