aboutsummaryrefslogtreecommitdiff
path: root/examples/mimxrt6/src/bin/spi-async.rs
diff options
context:
space:
mode:
authorFelipe Balbi <[email protected]>2025-12-11 15:56:27 -0800
committerFelipe Balbi <[email protected]>2025-12-11 16:27:09 -0800
commitb28b61dc4aeb772502c61e4b0d9091569fac4a40 (patch)
treeb6d5022e8a7fa5242441dfc1881fe608c6a07b5f /examples/mimxrt6/src/bin/spi-async.rs
parent4c5986e6d06f8e7dc421e1c3b3b8793351df1fef (diff)
[iMXRT] Add spi driver
Diffstat (limited to 'examples/mimxrt6/src/bin/spi-async.rs')
-rw-r--r--examples/mimxrt6/src/bin/spi-async.rs35
1 files changed, 35 insertions, 0 deletions
diff --git a/examples/mimxrt6/src/bin/spi-async.rs b/examples/mimxrt6/src/bin/spi-async.rs
new file mode 100644
index 000000000..aa56f7c42
--- /dev/null
+++ b/examples/mimxrt6/src/bin/spi-async.rs
@@ -0,0 +1,35 @@
1#![no_std]
2#![no_main]
3
4use defmt::info;
5use embassy_executor::Spawner;
6use embassy_imxrt::bind_interrupts;
7use embassy_imxrt::flexcomm::spi::{InterruptHandler, Spi};
8use embassy_imxrt::peripherals::FLEXCOMM5;
9use {defmt_rtt as _, embassy_imxrt_examples as _, panic_probe as _};
10
11bind_interrupts!(struct Irqs {
12 FLEXCOMM5 => InterruptHandler<FLEXCOMM5>;
13});
14
15const BUFLEN: usize = 1024;
16
17#[embassy_executor::main]
18async fn main(_spawner: Spawner) {
19 let p = embassy_imxrt::init(Default::default());
20
21 info!("Initializing SPI");
22
23 let mut spi = Spi::new_async(p.FLEXCOMM5, p.PIO1_3, p.PIO1_5, p.PIO1_4, Irqs, Default::default());
24
25 let mut rxbuf = [0x55; BUFLEN];
26 let txbuf = [0xaa; BUFLEN];
27
28 for _ in 0..10 {
29 spi.async_transfer(&mut rxbuf, &txbuf).await.unwrap();
30 assert!(rxbuf.iter().all(|b| *b == 0xaa));
31 rxbuf.fill(0x55);
32 }
33
34 info!("SPI transfers succeeded");
35}