aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2021-12-07 05:14:27 +0100
committerDario Nieuwenhuis <[email protected]>2021-12-07 05:15:45 +0100
commite673ba8ea25c5b4670328134b8176c14660e26c2 (patch)
treea9ad267b83ea3105eab1a52f1f861ce41093ac32 /tests
parentf0c2c5caa0d32ad6154621fee0fea2819d2f282c (diff)
stm32/tests: add DMA SPI
Diffstat (limited to 'tests')
-rw-r--r--tests/stm32/src/bin/spi_dma.rs51
1 files changed, 51 insertions, 0 deletions
diff --git a/tests/stm32/src/bin/spi_dma.rs b/tests/stm32/src/bin/spi_dma.rs
new file mode 100644
index 000000000..1a827b434
--- /dev/null
+++ b/tests/stm32/src/bin/spi_dma.rs
@@ -0,0 +1,51 @@
1#![no_std]
2#![no_main]
3#![feature(type_alias_impl_trait)]
4
5#[path = "../example_common.rs"]
6mod example_common;
7use defmt::assert_eq;
8use embassy::executor::Spawner;
9use embassy_stm32::spi::{self, Spi};
10use embassy_stm32::time::Hertz;
11use embassy_stm32::Peripherals;
12use embassy_traits::spi::FullDuplex;
13use example_common::*;
14
15#[embassy::main(config = "config()")]
16async fn main(_spawner: Spawner, p: Peripherals) {
17 info!("Hello World!");
18
19 #[cfg(feature = "stm32f429zi")]
20 let (sck, mosi, miso, tx_dma, rx_dma) = (p.PA5, p.PA7, p.PA6, p.DMA2_CH3, p.DMA2_CH2);
21 #[cfg(feature = "stm32h755zi")]
22 let (sck, mosi, miso, tx_dma, rx_dma) = (p.PA5, p.PB5, p.PA6, p.DMA1_CH0, p.DMA1_CH1);
23 #[cfg(feature = "stm32g491re")]
24 let (sck, mosi, miso, tx_dma, rx_dma) = (p.PA5, p.PA7, p.PA6, p.DMA1_CH0, p.DMA1_CH1);
25 #[cfg(feature = "stm32g071rb")]
26 let (sck, mosi, miso, tx_dma, rx_dma) = (p.PA5, p.PA7, p.PA6, p.DMA1_CH0, p.DMA1_CH1);
27 #[cfg(feature = "stm32wb55rg")]
28 let (sck, mosi, miso, tx_dma, rx_dma) = (p.PA5, p.PA7, p.PA6, p.DMA1_CH0, p.DMA1_CH1);
29
30 let mut spi = Spi::new(
31 p.SPI1,
32 sck, // Arduino D13
33 mosi, // Arduino D11
34 miso, // Arduino D12
35 tx_dma,
36 rx_dma,
37 Hertz(1_000_000),
38 spi::Config::default(),
39 );
40
41 let data: [u8; 9] = [0x00, 0xFF, 0xAA, 0x55, 0xC0, 0xFF, 0xEE, 0xC0, 0xDE];
42
43 // Arduino pins D11 and D12 (MOSI-MISO) are connected together with a 1K resistor.
44 // so we should get the data we sent back.
45 let mut buf = [0; 9];
46 spi.read_write(&mut buf, &data).await.unwrap();
47 assert_eq!(buf, data);
48
49 info!("Test OK");
50 cortex_m::asm::bkpt();
51}