summaryrefslogtreecommitdiff
path: root/examples/stm32f3/src/bin/spi_dma.rs
diff options
context:
space:
mode:
Diffstat (limited to 'examples/stm32f3/src/bin/spi_dma.rs')
-rw-r--r--examples/stm32f3/src/bin/spi_dma.rs41
1 files changed, 41 insertions, 0 deletions
diff --git a/examples/stm32f3/src/bin/spi_dma.rs b/examples/stm32f3/src/bin/spi_dma.rs
new file mode 100644
index 00000000..a87a36f7
--- /dev/null
+++ b/examples/stm32f3/src/bin/spi_dma.rs
@@ -0,0 +1,41 @@
+#![no_std]
+#![no_main]
+#![feature(type_alias_impl_trait)]
+
+#[path = "../example_common.rs"]
+mod example_common;
+use core::fmt::Write;
+use core::str::from_utf8;
+use embassy::executor::Spawner;
+use embassy_stm32::spi::{Config, Spi};
+use embassy_stm32::time::Hertz;
+use embassy_stm32::Peripherals;
+use embassy_traits::spi::FullDuplex;
+use example_common::*;
+use heapless::String;
+
+#[embassy::main]
+async fn main(_spawner: Spawner, p: Peripherals) {
+ info!("Hello World!");
+
+ let mut spi = Spi::new(
+ p.SPI1,
+ p.PB3,
+ p.PB5,
+ p.PB4,
+ p.DMA1_CH3,
+ p.DMA1_CH2,
+ Hertz(1_000_000),
+ Config::default(),
+ );
+
+ for n in 0u32.. {
+ let mut write: String<128> = String::new();
+ let mut read = [0; 128];
+ core::write!(&mut write, "Hello DMA World {}!\r\n", n).unwrap();
+ spi.read_write(&mut read[0..write.len()], write.as_bytes())
+ .await
+ .ok();
+ info!("read via spi+dma: {}", from_utf8(&read).unwrap());
+ }
+}