diff options
| author | Dario Nieuwenhuis <[email protected]> | 2021-12-07 05:14:27 +0100 |
|---|---|---|
| committer | Dario Nieuwenhuis <[email protected]> | 2021-12-07 05:15:45 +0100 |
| commit | e673ba8ea25c5b4670328134b8176c14660e26c2 (patch) | |
| tree | a9ad267b83ea3105eab1a52f1f861ce41093ac32 /tests | |
| parent | f0c2c5caa0d32ad6154621fee0fea2819d2f282c (diff) | |
stm32/tests: add DMA SPI
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/stm32/src/bin/spi_dma.rs | 51 |
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"] | ||
| 6 | mod example_common; | ||
| 7 | use defmt::assert_eq; | ||
| 8 | use embassy::executor::Spawner; | ||
| 9 | use embassy_stm32::spi::{self, Spi}; | ||
| 10 | use embassy_stm32::time::Hertz; | ||
| 11 | use embassy_stm32::Peripherals; | ||
| 12 | use embassy_traits::spi::FullDuplex; | ||
| 13 | use example_common::*; | ||
| 14 | |||
| 15 | #[embassy::main(config = "config()")] | ||
| 16 | async 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 | } | ||
