aboutsummaryrefslogtreecommitdiff
path: root/tests/stm32/src/bin/spi.rs
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2024-05-31 21:49:33 +0200
committerDario Nieuwenhuis <[email protected]>2024-05-31 21:54:42 +0200
commitf594ddceecbf00022f1b76bec030fd32c0e03178 (patch)
tree84e68b0dd10e431e90e8085855e4522376673e0b /tests/stm32/src/bin/spi.rs
parentda197b60165b74d05c3d12b046b5cfda0b9cb126 (diff)
stm32/spi: add blocking rxonly test.
Diffstat (limited to 'tests/stm32/src/bin/spi.rs')
-rw-r--r--tests/stm32/src/bin/spi.rs32
1 files changed, 25 insertions, 7 deletions
diff --git a/tests/stm32/src/bin/spi.rs b/tests/stm32/src/bin/spi.rs
index c1576bfeb..a0ca5284d 100644
--- a/tests/stm32/src/bin/spi.rs
+++ b/tests/stm32/src/bin/spi.rs
@@ -6,6 +6,7 @@ mod common;
6use common::*; 6use common::*;
7use defmt::assert_eq; 7use defmt::assert_eq;
8use embassy_executor::Spawner; 8use embassy_executor::Spawner;
9use embassy_stm32::gpio::{Level, Output, Speed};
9use embassy_stm32::spi::{self, Spi}; 10use embassy_stm32::spi::{self, Spi};
10use embassy_stm32::time::Hertz; 11use embassy_stm32::time::Hertz;
11 12
@@ -14,18 +15,19 @@ async fn main(_spawner: Spawner) {
14 let p = embassy_stm32::init(config()); 15 let p = embassy_stm32::init(config());
15 info!("Hello World!"); 16 info!("Hello World!");
16 17
17 let spi = peri!(p, SPI); 18 let mut spi_peri = peri!(p, SPI);
18 let sck = peri!(p, SPI_SCK); 19 let mut sck = peri!(p, SPI_SCK);
19 let mosi = peri!(p, SPI_MOSI); 20 let mut mosi = peri!(p, SPI_MOSI);
20 let miso = peri!(p, SPI_MISO); 21 let mut miso = peri!(p, SPI_MISO);
21 22
22 let mut spi_config = spi::Config::default(); 23 let mut spi_config = spi::Config::default();
23 spi_config.frequency = Hertz(1_000_000); 24 spi_config.frequency = Hertz(1_000_000);
24 25
25 let mut spi = Spi::new_blocking( 26 let mut spi = Spi::new_blocking(
26 spi, sck, // Arduino D13 27 &mut spi_peri,
27 mosi, // Arduino D11 28 &mut sck, // Arduino D13
28 miso, // Arduino D12 29 &mut mosi, // Arduino D11
30 &mut miso, // Arduino D12
29 spi_config, 31 spi_config,
30 ); 32 );
31 33
@@ -66,6 +68,22 @@ async fn main(_spawner: Spawner) {
66 defmt::assert!(!embassy_stm32::pac::RCC.apb2enr().read().spi1en()); 68 defmt::assert!(!embassy_stm32::pac::RCC.apb2enr().read().spi1en());
67 } 69 }
68 70
71 #[cfg(not(feature = "stm32f429zi"))]
72 core::mem::drop(spi);
73
74 // test rx-only configuration
75 let mut spi = Spi::new_blocking_rxonly(&mut spi_peri, &mut sck, &mut miso, spi_config);
76
77 let mut mosi = Output::new(&mut mosi, Level::Low, Speed::VeryHigh);
78
79 mosi.set_high();
80 spi.blocking_read(&mut buf).unwrap();
81 assert_eq!(buf, [0xff; 9]);
82
83 mosi.set_low();
84 spi.blocking_read(&mut buf).unwrap();
85 assert_eq!(buf, [0x00; 9]);
86
69 info!("Test OK"); 87 info!("Test OK");
70 cortex_m::asm::bkpt(); 88 cortex_m::asm::bkpt();
71} 89}