aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2024-05-31 21:59:06 +0200
committerGitHub <[email protected]>2024-05-31 21:59:06 +0200
commit7baa14371b3ee97b7008e2613489b07942d32582 (patch)
tree84e68b0dd10e431e90e8085855e4522376673e0b /tests
parentba940017ee8cabbb2a371243adc040b3460cd71c (diff)
parentf594ddceecbf00022f1b76bec030fd32c0e03178 (diff)
Merge pull request #3027 from embassy-rs/check-cfg-fix
Fix all check-cfg errors, fix stm32 spi rxonly.
Diffstat (limited to 'tests')
-rw-r--r--tests/stm32/build.rs1
-rw-r--r--tests/stm32/src/bin/fdcan.rs2
-rw-r--r--tests/stm32/src/bin/spi.rs32
-rw-r--r--tests/stm32/src/bin/spi_dma.rs101
4 files changed, 69 insertions, 67 deletions
diff --git a/tests/stm32/build.rs b/tests/stm32/build.rs
index 176adff62..675115568 100644
--- a/tests/stm32/build.rs
+++ b/tests/stm32/build.rs
@@ -14,6 +14,7 @@ fn main() -> Result<(), Box<dyn Error>> {
14 feature = "stm32c031c6", 14 feature = "stm32c031c6",
15 feature = "stm32wb55rg", 15 feature = "stm32wb55rg",
16 feature = "stm32l073rz", 16 feature = "stm32l073rz",
17 feature = "stm32h503rb",
17 // wrong ram size in stm32-data 18 // wrong ram size in stm32-data
18 feature = "stm32wl55jc", 19 feature = "stm32wl55jc",
19 feature = "stm32u5a5zj", 20 feature = "stm32u5a5zj",
diff --git a/tests/stm32/src/bin/fdcan.rs b/tests/stm32/src/bin/fdcan.rs
index 8534f92e8..8a397f661 100644
--- a/tests/stm32/src/bin/fdcan.rs
+++ b/tests/stm32/src/bin/fdcan.rs
@@ -92,7 +92,7 @@ fn options() -> (Config, TestOptions) {
92 ) 92 )
93} 93}
94 94
95#[cfg(any(feature = "stm32g491re", feature = "stm32g431cb"))] 95#[cfg(any(feature = "stm32g491re"))]
96fn options() -> (Config, TestOptions) { 96fn options() -> (Config, TestOptions) {
97 info!("G4 config"); 97 info!("G4 config");
98 ( 98 (
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}
diff --git a/tests/stm32/src/bin/spi_dma.rs b/tests/stm32/src/bin/spi_dma.rs
index 30e679f2a..92f741af5 100644
--- a/tests/stm32/src/bin/spi_dma.rs
+++ b/tests/stm32/src/bin/spi_dma.rs
@@ -6,34 +6,32 @@ 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;
11use embassy_stm32::{into_ref, Peripheral as _};
12 12
13#[embassy_executor::main] 13#[embassy_executor::main]
14async fn main(_spawner: Spawner) { 14async fn main(_spawner: Spawner) {
15 let p = embassy_stm32::init(config()); 15 let p = embassy_stm32::init(config());
16 info!("Hello World!"); 16 info!("Hello World!");
17 17
18 let spi_peri = peri!(p, SPI); 18 let mut spi_peri = peri!(p, SPI);
19 let sck = peri!(p, SPI_SCK); 19 let mut sck = peri!(p, SPI_SCK);
20 let mosi = peri!(p, SPI_MOSI); 20 let mut mosi = peri!(p, SPI_MOSI);
21 let miso = peri!(p, SPI_MISO); 21 let mut miso = peri!(p, SPI_MISO);
22 let tx_dma = peri!(p, SPI_TX_DMA); 22 let mut tx_dma = peri!(p, SPI_TX_DMA);
23 let rx_dma = peri!(p, SPI_RX_DMA); 23 let mut rx_dma = peri!(p, SPI_RX_DMA);
24
25 into_ref!(spi_peri, sck, mosi, miso, tx_dma, rx_dma);
26 24
27 let mut spi_config = spi::Config::default(); 25 let mut spi_config = spi::Config::default();
28 spi_config.frequency = Hertz(1_000_000); 26 spi_config.frequency = Hertz(1_000_000);
29 27
30 let mut spi = Spi::new( 28 let mut spi = Spi::new(
31 spi_peri.reborrow(), 29 &mut spi_peri,
32 sck.reborrow(), // Arduino D13 30 &mut sck, // Arduino D13
33 mosi.reborrow(), // Arduino D11 31 &mut mosi, // Arduino D11
34 miso.reborrow(), // Arduino D12 32 &mut miso, // Arduino D12
35 tx_dma.reborrow(), 33 &mut tx_dma,
36 rx_dma.reborrow(), 34 &mut rx_dma,
37 spi_config, 35 spi_config,
38 ); 36 );
39 37
@@ -85,51 +83,36 @@ async fn main(_spawner: Spawner) {
85 core::mem::drop(spi); 83 core::mem::drop(spi);
86 84
87 // test rx-only configuration 85 // test rx-only configuration
86 let mut spi = Spi::new_rxonly(
87 &mut spi_peri,
88 &mut sck,
89 &mut miso,
90 // SPIv1/f1 requires txdma even if rxonly.
91 #[cfg(not(any(
92 feature = "stm32h503rb",
93 feature = "stm32h563zi",
94 feature = "stm32h753zi",
95 feature = "stm32h755zi",
96 feature = "stm32h7a3zi",
97 feature = "stm32h7s3l8",
98 feature = "stm32u585ai",
99 feature = "stm32u5a5zj",
100 feature = "stm32wba52cg",
101 )))]
102 &mut tx_dma,
103 &mut rx_dma,
104 spi_config,
105 );
106
107 let mut mosi = Output::new(&mut mosi, Level::Low, Speed::VeryHigh);
88 108
89 // stm32f207zg - spi_v1 109 mosi.set_high();
90 // stm32f103c8 - spi_f1 110 spi.read(&mut buf).await.unwrap();
91 // stm32g491re - spi_v2 111 assert_eq!(buf, [0xff; 9]);
92 // stm32h753zi - spi_v3 112
93 // stm32h563zi - spi_v4 113 mosi.set_low();
94 // stm32wba52cg - spi_v5 114 spi.read(&mut buf).await.unwrap();
95 115 assert_eq!(buf, [0x00; 9]);
96 #[cfg(any(stm32f207zg, stm32f103c8, stm32g491re, stm32h753zi, stm32h563zi, stm32wba52cg))]
97 {
98 let mut spi = {
99 #[cfg(stm32f207zg, stm32f103c8, stm32g491re)]
100 {
101 Spi::new_rxonly(
102 spi_peri.reborrow(),
103 sck.reborrow(),
104 miso.reborrow(),
105 tx_dma.reborrow(),
106 rx_dma.reborrow(),
107 spi_config,
108 )
109 }
110 #[cfg(stm32h753zi, stm32h563zi, stm32wba52cg)]
111 {
112 Spi::new_rxonly(
113 spi_peri.reborrow(),
114 sck.reborrow(),
115 miso.reborrow(),
116 rx_dma.reborrow(),
117 spi_config,
118 )
119 }
120 };
121
122 use embassy_stm32::gpio;
123 let mut mosi = gpio::Output::new(mosi.reborrow(), gpio::Level::Low, gpio::Speed::Low);
124
125 mosi.set_high();
126 spi.read(&mut buf).await.unwrap();
127 assert_eq!(buf, [0xff; 9]);
128
129 mosi.set_low();
130 spi.read(&mut buf).await.unwrap();
131 assert_eq!(buf, [0x00; 9]);
132 };
133 116
134 info!("Test OK"); 117 info!("Test OK");
135 cortex_m::asm::bkpt(); 118 cortex_m::asm::bkpt();