aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2023-10-22 21:05:27 +0000
committerGitHub <[email protected]>2023-10-22 21:05:27 +0000
commit46ff2c82aa3193dd1378b142be284aa746045923 (patch)
tree41c2abe14f76529e2c56679c87f2aa2f9acf82d5 /tests
parente70c531d3d28565b6926d99d8e977c4df6c13c60 (diff)
parenta84ad741a48dfce29b7f764e0cfb6877eba9a027 (diff)
Merge pull request #2101 from embassy-rs/rcc-no-spaghetti
stm32/tests: add stm32wba52cg, stm32u5a9zj
Diffstat (limited to 'tests')
-rw-r--r--tests/stm32/Cargo.toml2
-rw-r--r--tests/stm32/src/common.rs43
2 files changed, 40 insertions, 5 deletions
diff --git a/tests/stm32/Cargo.toml b/tests/stm32/Cargo.toml
index 48598ec2d..c6a50e2c5 100644
--- a/tests/stm32/Cargo.toml
+++ b/tests/stm32/Cargo.toml
@@ -17,6 +17,8 @@ stm32h7a3zi = ["embassy-stm32/stm32h7a3zi", "not-gpdma", "rng"]
17stm32wb55rg = ["embassy-stm32/stm32wb55rg", "chrono", "not-gpdma", "ble", "mac" , "rng"] 17stm32wb55rg = ["embassy-stm32/stm32wb55rg", "chrono", "not-gpdma", "ble", "mac" , "rng"]
18stm32h563zi = ["embassy-stm32/stm32h563zi", "chrono", "eth", "rng"] 18stm32h563zi = ["embassy-stm32/stm32h563zi", "chrono", "eth", "rng"]
19stm32u585ai = ["embassy-stm32/stm32u585ai", "chrono", "rng"] 19stm32u585ai = ["embassy-stm32/stm32u585ai", "chrono", "rng"]
20stm32u5a5zj = ["embassy-stm32/stm32u5a5zj", "chrono", "rng"]
21stm32wba52cg = ["embassy-stm32/stm32wba52cg", "chrono", "rng"]
20stm32l073rz = ["embassy-stm32/stm32l073rz", "not-gpdma", "rng"] 22stm32l073rz = ["embassy-stm32/stm32l073rz", "not-gpdma", "rng"]
21stm32l152re = ["embassy-stm32/stm32l152re", "chrono", "not-gpdma"] 23stm32l152re = ["embassy-stm32/stm32l152re", "chrono", "not-gpdma"]
22stm32l4a6zg = ["embassy-stm32/stm32l4a6zg", "chrono", "not-gpdma", "rng"] 24stm32l4a6zg = ["embassy-stm32/stm32l4a6zg", "chrono", "not-gpdma", "rng"]
diff --git a/tests/stm32/src/common.rs b/tests/stm32/src/common.rs
index a0ccfe3a4..0a70e6a7e 100644
--- a/tests/stm32/src/common.rs
+++ b/tests/stm32/src/common.rs
@@ -24,6 +24,8 @@ teleprobe_meta::target!(b"nucleo-stm32h753zi");
24teleprobe_meta::target!(b"nucleo-stm32h7a3zi"); 24teleprobe_meta::target!(b"nucleo-stm32h7a3zi");
25#[cfg(feature = "stm32u585ai")] 25#[cfg(feature = "stm32u585ai")]
26teleprobe_meta::target!(b"iot-stm32u585ai"); 26teleprobe_meta::target!(b"iot-stm32u585ai");
27#[cfg(feature = "stm32u5a5zj")]
28teleprobe_meta::target!(b"nucleo-stm32u5a5zj");
27#[cfg(feature = "stm32h563zi")] 29#[cfg(feature = "stm32h563zi")]
28teleprobe_meta::target!(b"nucleo-stm32h563zi"); 30teleprobe_meta::target!(b"nucleo-stm32h563zi");
29#[cfg(feature = "stm32c031c6")] 31#[cfg(feature = "stm32c031c6")]
@@ -48,6 +50,8 @@ teleprobe_meta::target!(b"nucleo-stm32f303ze");
48teleprobe_meta::target!(b"nucleo-stm32l496zg"); 50teleprobe_meta::target!(b"nucleo-stm32l496zg");
49#[cfg(feature = "stm32wl55jc")] 51#[cfg(feature = "stm32wl55jc")]
50teleprobe_meta::target!(b"nucleo-stm32wl55jc"); 52teleprobe_meta::target!(b"nucleo-stm32wl55jc");
53#[cfg(feature = "stm32wba52cg")]
54teleprobe_meta::target!(b"nucleo-stm32wba52cg");
51 55
52macro_rules! define_peris { 56macro_rules! define_peris {
53 ($($name:ident = $peri:ident,)* $(@irq $irq_name:ident = $irq_code:tt,)*) => { 57 ($($name:ident = $peri:ident,)* $(@irq $irq_name:ident = $irq_code:tt,)*) => {
@@ -127,6 +131,12 @@ define_peris!(
127 SPI = SPI1, SPI_SCK = PE13, SPI_MOSI = PE15, SPI_MISO = PE14, SPI_TX_DMA = GPDMA1_CH0, SPI_RX_DMA = GPDMA1_CH1, 131 SPI = SPI1, SPI_SCK = PE13, SPI_MOSI = PE15, SPI_MISO = PE14, SPI_TX_DMA = GPDMA1_CH0, SPI_RX_DMA = GPDMA1_CH1,
128 @irq UART = {USART3 => embassy_stm32::usart::InterruptHandler<embassy_stm32::peripherals::USART3>;}, 132 @irq UART = {USART3 => embassy_stm32::usart::InterruptHandler<embassy_stm32::peripherals::USART3>;},
129); 133);
134#[cfg(feature = "stm32u5a5zj")]
135define_peris!(
136 UART = LPUART1, UART_TX = PG7, UART_RX = PG8, UART_TX_DMA = GPDMA1_CH0, UART_RX_DMA = GPDMA1_CH1,
137 SPI = SPI1, SPI_SCK = PA5, SPI_MOSI = PA7, SPI_MISO = PA6, SPI_TX_DMA = GPDMA1_CH0, SPI_RX_DMA = GPDMA1_CH1,
138 @irq UART = {LPUART1 => embassy_stm32::usart::InterruptHandler<embassy_stm32::peripherals::LPUART1>;},
139);
130#[cfg(feature = "stm32h563zi")] 140#[cfg(feature = "stm32h563zi")]
131define_peris!( 141define_peris!(
132 UART = LPUART1, UART_TX = PB6, UART_RX = PB7, UART_TX_DMA = GPDMA1_CH0, UART_RX_DMA = GPDMA1_CH1, 142 UART = LPUART1, UART_TX = PB6, UART_RX = PB7, UART_TX_DMA = GPDMA1_CH0, UART_RX_DMA = GPDMA1_CH1,
@@ -199,8 +209,21 @@ define_peris!(
199 SPI = SPI1, SPI_SCK = PA5, SPI_MOSI = PA7, SPI_MISO = PA6, SPI_TX_DMA = DMA1_CH3, SPI_RX_DMA = DMA1_CH2, 209 SPI = SPI1, SPI_SCK = PA5, SPI_MOSI = PA7, SPI_MISO = PA6, SPI_TX_DMA = DMA1_CH3, SPI_RX_DMA = DMA1_CH2,
200 @irq UART = {USART1 => embassy_stm32::usart::InterruptHandler<embassy_stm32::peripherals::USART1>;}, 210 @irq UART = {USART1 => embassy_stm32::usart::InterruptHandler<embassy_stm32::peripherals::USART1>;},
201); 211);
212#[cfg(feature = "stm32wba52cg")]
213define_peris!(
214 UART = LPUART1, UART_TX = PB5, UART_RX = PA10, UART_TX_DMA = GPDMA1_CH0, UART_RX_DMA = GPDMA1_CH1,
215 SPI = SPI1, SPI_SCK = PB4, SPI_MOSI = PA15, SPI_MISO = PB3, SPI_TX_DMA = GPDMA1_CH0, SPI_RX_DMA = GPDMA1_CH1,
216 @irq UART = {LPUART1 => embassy_stm32::usart::InterruptHandler<embassy_stm32::peripherals::LPUART1>;},
217);
202 218
203pub fn config() -> Config { 219pub fn config() -> Config {
220 // Setting this bit is mandatory to use PG[15:2].
221 #[cfg(feature = "stm32u5a5zj")]
222 embassy_stm32::pac::PWR.svmcr().modify(|w| {
223 w.set_io2sv(true);
224 w.set_io2vmen(true);
225 });
226
204 #[allow(unused_mut)] 227 #[allow(unused_mut)]
205 let mut config = Config::default(); 228 let mut config = Config::default();
206 229
@@ -365,7 +388,7 @@ pub fn config() -> Config {
365 { 388 {
366 use embassy_stm32::rcc::*; 389 use embassy_stm32::rcc::*;
367 config.rcc.mux = ClockSrc::PLL1_R; 390 config.rcc.mux = ClockSrc::PLL1_R;
368 config.rcc.hsi16 = true; 391 config.rcc.hsi = true;
369 config.rcc.pll = Some(Pll { 392 config.rcc.pll = Some(Pll {
370 source: PLLSource::HSI, 393 source: PLLSource::HSI,
371 prediv: PllPreDiv::DIV1, 394 prediv: PllPreDiv::DIV1,
@@ -388,7 +411,7 @@ pub fn config() -> Config {
388 #[cfg(any(feature = "stm32l552ze"))] 411 #[cfg(any(feature = "stm32l552ze"))]
389 { 412 {
390 use embassy_stm32::rcc::*; 413 use embassy_stm32::rcc::*;
391 config.rcc.hsi16 = true; 414 config.rcc.hsi = true;
392 config.rcc.mux = ClockSrc::PLL1_R; 415 config.rcc.mux = ClockSrc::PLL1_R;
393 config.rcc.pll = Some(Pll { 416 config.rcc.pll = Some(Pll {
394 // 110Mhz clock (16 / 4 * 55 / 2) 417 // 110Mhz clock (16 / 4 * 55 / 2)
@@ -401,18 +424,28 @@ pub fn config() -> Config {
401 }); 424 });
402 } 425 }
403 426
404 #[cfg(feature = "stm32u585ai")] 427 #[cfg(any(feature = "stm32u585ai", feature = "stm32u5a5zj"))]
405 { 428 {
406 use embassy_stm32::rcc::*; 429 use embassy_stm32::rcc::*;
407 config.rcc.mux = ClockSrc::MSI(Msirange::RANGE_48MHZ); 430 config.rcc.mux = ClockSrc::MSI(Msirange::RANGE_48MHZ);
408 } 431 }
409 432
433 #[cfg(feature = "stm32wba52cg")]
434 {
435 use embassy_stm32::rcc::*;
436 config.rcc.mux = ClockSrc::HSI;
437
438 embassy_stm32::pac::RCC.ccipr2().write(|w| {
439 w.set_rngsel(embassy_stm32::pac::rcc::vals::Rngsel::HSI);
440 });
441 }
442
410 #[cfg(feature = "stm32l073rz")] 443 #[cfg(feature = "stm32l073rz")]
411 { 444 {
412 use embassy_stm32::rcc::*; 445 use embassy_stm32::rcc::*;
413 config.rcc.mux = ClockSrc::PLL( 446 config.rcc.mux = ClockSrc::PLL(
414 // 32Mhz clock (16 * 4 / 2) 447 // 32Mhz clock (16 * 4 / 2)
415 PLLSource::HSI16, 448 PLLSource::HSI,
416 PLLMul::MUL4, 449 PLLMul::MUL4,
417 PLLDiv::DIV2, 450 PLLDiv::DIV2,
418 ); 451 );
@@ -423,7 +456,7 @@ pub fn config() -> Config {
423 use embassy_stm32::rcc::*; 456 use embassy_stm32::rcc::*;
424 config.rcc.mux = ClockSrc::PLL( 457 config.rcc.mux = ClockSrc::PLL(
425 // 32Mhz clock (16 * 4 / 2) 458 // 32Mhz clock (16 * 4 / 2)
426 PLLSource::HSI16, 459 PLLSource::HSI,
427 PLLMul::MUL4, 460 PLLMul::MUL4,
428 PLLDiv::DIV2, 461 PLLDiv::DIV2,
429 ); 462 );