diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/stm32/Cargo.toml | 2 | ||||
| -rw-r--r-- | tests/stm32/src/bin/eth.rs | 2 | ||||
| -rw-r--r-- | tests/stm32/src/bin/gpio.rs | 5 | ||||
| -rw-r--r-- | tests/stm32/src/bin/rng.rs | 8 | ||||
| -rw-r--r-- | tests/stm32/src/common.rs | 45 |
5 files changed, 56 insertions, 6 deletions
diff --git a/tests/stm32/Cargo.toml b/tests/stm32/Cargo.toml index b1b2f55c3..48598ec2d 100644 --- a/tests/stm32/Cargo.toml +++ b/tests/stm32/Cargo.toml | |||
| @@ -12,6 +12,8 @@ stm32g071rb = ["embassy-stm32/stm32g071rb", "not-gpdma", "dac-adc-pin"] | |||
| 12 | stm32c031c6 = ["embassy-stm32/stm32c031c6", "not-gpdma"] | 12 | stm32c031c6 = ["embassy-stm32/stm32c031c6", "not-gpdma"] |
| 13 | stm32g491re = ["embassy-stm32/stm32g491re", "chrono", "not-gpdma", "rng"] | 13 | stm32g491re = ["embassy-stm32/stm32g491re", "chrono", "not-gpdma", "rng"] |
| 14 | stm32h755zi = ["embassy-stm32/stm32h755zi-cm7", "chrono", "not-gpdma", "eth", "dac-adc-pin", "rng"] | 14 | stm32h755zi = ["embassy-stm32/stm32h755zi-cm7", "chrono", "not-gpdma", "eth", "dac-adc-pin", "rng"] |
| 15 | stm32h753zi = ["embassy-stm32/stm32h753zi", "chrono", "not-gpdma", "eth", "rng"] | ||
| 16 | stm32h7a3zi = ["embassy-stm32/stm32h7a3zi", "not-gpdma", "rng"] | ||
| 15 | stm32wb55rg = ["embassy-stm32/stm32wb55rg", "chrono", "not-gpdma", "ble", "mac" , "rng"] | 17 | stm32wb55rg = ["embassy-stm32/stm32wb55rg", "chrono", "not-gpdma", "ble", "mac" , "rng"] |
| 16 | stm32h563zi = ["embassy-stm32/stm32h563zi", "chrono", "eth", "rng"] | 18 | stm32h563zi = ["embassy-stm32/stm32h563zi", "chrono", "eth", "rng"] |
| 17 | stm32u585ai = ["embassy-stm32/stm32u585ai", "chrono", "rng"] | 19 | stm32u585ai = ["embassy-stm32/stm32u585ai", "chrono", "rng"] |
diff --git a/tests/stm32/src/bin/eth.rs b/tests/stm32/src/bin/eth.rs index 6d5e05cd6..754354944 100644 --- a/tests/stm32/src/bin/eth.rs +++ b/tests/stm32/src/bin/eth.rs | |||
| @@ -60,6 +60,8 @@ async fn main(spawner: Spawner) { | |||
| 60 | let n = 4; | 60 | let n = 4; |
| 61 | #[cfg(feature = "stm32f207zg")] | 61 | #[cfg(feature = "stm32f207zg")] |
| 62 | let n = 5; | 62 | let n = 5; |
| 63 | #[cfg(feature = "stm32h753zi")] | ||
| 64 | let n = 6; | ||
| 63 | 65 | ||
| 64 | let mac_addr = [0x00, n, 0xDE, 0xAD, 0xBE, 0xEF]; | 66 | let mac_addr = [0x00, n, 0xDE, 0xAD, 0xBE, 0xEF]; |
| 65 | 67 | ||
diff --git a/tests/stm32/src/bin/gpio.rs b/tests/stm32/src/bin/gpio.rs index 49d9a60f7..83c96ce95 100644 --- a/tests/stm32/src/bin/gpio.rs +++ b/tests/stm32/src/bin/gpio.rs | |||
| @@ -217,8 +217,7 @@ async fn main(_spawner: Spawner) { | |||
| 217 | } | 217 | } |
| 218 | 218 | ||
| 219 | fn delay() { | 219 | fn delay() { |
| 220 | #[cfg(feature = "stm32h755zi")] | 220 | #[cfg(any(feature = "stm32h755zi", feature = "stm32h753zi", feature = "stm32h7a3zi"))] |
| 221 | cortex_m::asm::delay(10000); | 221 | cortex_m::asm::delay(9000); |
| 222 | #[cfg(not(feature = "stm32h755zi"))] | ||
| 223 | cortex_m::asm::delay(1000); | 222 | cortex_m::asm::delay(1000); |
| 224 | } | 223 | } |
diff --git a/tests/stm32/src/bin/rng.rs b/tests/stm32/src/bin/rng.rs index 65da737d0..b7f361372 100644 --- a/tests/stm32/src/bin/rng.rs +++ b/tests/stm32/src/bin/rng.rs | |||
| @@ -11,7 +11,12 @@ use embassy_stm32::rng::Rng; | |||
| 11 | use embassy_stm32::{bind_interrupts, peripherals, rng}; | 11 | use embassy_stm32::{bind_interrupts, peripherals, rng}; |
| 12 | use {defmt_rtt as _, panic_probe as _}; | 12 | use {defmt_rtt as _, panic_probe as _}; |
| 13 | 13 | ||
| 14 | #[cfg(any(feature = "stm32l4a6zg", feature = "stm32h755zi", feature = "stm32f429zi"))] | 14 | #[cfg(any( |
| 15 | feature = "stm32l4a6zg", | ||
| 16 | feature = "stm32h755zi", | ||
| 17 | feature = "stm32h753zi", | ||
| 18 | feature = "stm32f429zi" | ||
| 19 | ))] | ||
| 15 | bind_interrupts!(struct Irqs { | 20 | bind_interrupts!(struct Irqs { |
| 16 | HASH_RNG => rng::InterruptHandler<peripherals::RNG>; | 21 | HASH_RNG => rng::InterruptHandler<peripherals::RNG>; |
| 17 | }); | 22 | }); |
| @@ -23,6 +28,7 @@ bind_interrupts!(struct Irqs { | |||
| 23 | feature = "stm32l4a6zg", | 28 | feature = "stm32l4a6zg", |
| 24 | feature = "stm32l073rz", | 29 | feature = "stm32l073rz", |
| 25 | feature = "stm32h755zi", | 30 | feature = "stm32h755zi", |
| 31 | feature = "stm32h753zi", | ||
| 26 | feature = "stm32f429zi" | 32 | feature = "stm32f429zi" |
| 27 | )))] | 33 | )))] |
| 28 | bind_interrupts!(struct Irqs { | 34 | bind_interrupts!(struct Irqs { |
diff --git a/tests/stm32/src/common.rs b/tests/stm32/src/common.rs index 95b5318f7..a0ccfe3a4 100644 --- a/tests/stm32/src/common.rs +++ b/tests/stm32/src/common.rs | |||
| @@ -18,6 +18,10 @@ teleprobe_meta::target!(b"nucleo-stm32f429zi"); | |||
| 18 | teleprobe_meta::target!(b"nucleo-stm32wb55rg"); | 18 | teleprobe_meta::target!(b"nucleo-stm32wb55rg"); |
| 19 | #[cfg(feature = "stm32h755zi")] | 19 | #[cfg(feature = "stm32h755zi")] |
| 20 | teleprobe_meta::target!(b"nucleo-stm32h755zi"); | 20 | teleprobe_meta::target!(b"nucleo-stm32h755zi"); |
| 21 | #[cfg(feature = "stm32h753zi")] | ||
| 22 | teleprobe_meta::target!(b"nucleo-stm32h753zi"); | ||
| 23 | #[cfg(feature = "stm32h7a3zi")] | ||
| 24 | teleprobe_meta::target!(b"nucleo-stm32h7a3zi"); | ||
| 21 | #[cfg(feature = "stm32u585ai")] | 25 | #[cfg(feature = "stm32u585ai")] |
| 22 | teleprobe_meta::target!(b"iot-stm32u585ai"); | 26 | teleprobe_meta::target!(b"iot-stm32u585ai"); |
| 23 | #[cfg(feature = "stm32h563zi")] | 27 | #[cfg(feature = "stm32h563zi")] |
| @@ -105,12 +109,18 @@ define_peris!( | |||
| 105 | SPI = SPI1, SPI_SCK = PA5, SPI_MOSI = PA7, SPI_MISO = PA6, SPI_TX_DMA = DMA1_CH1, SPI_RX_DMA = DMA1_CH2, | 109 | SPI = SPI1, SPI_SCK = PA5, SPI_MOSI = PA7, SPI_MISO = PA6, SPI_TX_DMA = DMA1_CH1, SPI_RX_DMA = DMA1_CH2, |
| 106 | @irq UART = {LPUART1 => embassy_stm32::usart::InterruptHandler<embassy_stm32::peripherals::LPUART1>;}, | 110 | @irq UART = {LPUART1 => embassy_stm32::usart::InterruptHandler<embassy_stm32::peripherals::LPUART1>;}, |
| 107 | ); | 111 | ); |
| 108 | #[cfg(feature = "stm32h755zi")] | 112 | #[cfg(any(feature = "stm32h755zi", feature = "stm32h753zi"))] |
| 109 | define_peris!( | 113 | define_peris!( |
| 110 | UART = USART1, UART_TX = PB6, UART_RX = PB7, UART_TX_DMA = DMA1_CH0, UART_RX_DMA = DMA1_CH1, | 114 | UART = USART1, UART_TX = PB6, UART_RX = PB7, UART_TX_DMA = DMA1_CH0, UART_RX_DMA = DMA1_CH1, |
| 111 | SPI = SPI1, SPI_SCK = PA5, SPI_MOSI = PB5, SPI_MISO = PA6, SPI_TX_DMA = DMA1_CH0, SPI_RX_DMA = DMA1_CH1, | 115 | SPI = SPI1, SPI_SCK = PA5, SPI_MOSI = PB5, SPI_MISO = PA6, SPI_TX_DMA = DMA1_CH0, SPI_RX_DMA = DMA1_CH1, |
| 112 | @irq UART = {USART1 => embassy_stm32::usart::InterruptHandler<embassy_stm32::peripherals::USART1>;}, | 116 | @irq UART = {USART1 => embassy_stm32::usart::InterruptHandler<embassy_stm32::peripherals::USART1>;}, |
| 113 | ); | 117 | ); |
| 118 | #[cfg(feature = "stm32h7a3zi")] | ||
| 119 | define_peris!( | ||
| 120 | UART = USART1, UART_TX = PB6, UART_RX = PB7, UART_TX_DMA = DMA1_CH0, UART_RX_DMA = DMA1_CH1, | ||
| 121 | SPI = SPI1, SPI_SCK = PA5, SPI_MOSI = PA7, SPI_MISO = PA6, SPI_TX_DMA = DMA1_CH0, SPI_RX_DMA = DMA1_CH1, | ||
| 122 | @irq UART = {USART1 => embassy_stm32::usart::InterruptHandler<embassy_stm32::peripherals::USART1>;}, | ||
| 123 | ); | ||
| 114 | #[cfg(feature = "stm32u585ai")] | 124 | #[cfg(feature = "stm32u585ai")] |
| 115 | define_peris!( | 125 | define_peris!( |
| 116 | UART = USART3, UART_TX = PD8, UART_RX = PD9, UART_TX_DMA = GPDMA1_CH0, UART_RX_DMA = GPDMA1_CH1, | 126 | UART = USART3, UART_TX = PD8, UART_RX = PD9, UART_TX_DMA = GPDMA1_CH0, UART_RX_DMA = GPDMA1_CH1, |
| @@ -289,7 +299,7 @@ pub fn config() -> Config { | |||
| 289 | config.rcc.voltage_scale = VoltageScale::Scale0; | 299 | config.rcc.voltage_scale = VoltageScale::Scale0; |
| 290 | } | 300 | } |
| 291 | 301 | ||
| 292 | #[cfg(feature = "stm32h755zi")] | 302 | #[cfg(any(feature = "stm32h755zi", feature = "stm32h753zi"))] |
| 293 | { | 303 | { |
| 294 | use embassy_stm32::rcc::*; | 304 | use embassy_stm32::rcc::*; |
| 295 | config.rcc.hsi = Some(Hsi::Mhz64); | 305 | config.rcc.hsi = Some(Hsi::Mhz64); |
| @@ -320,6 +330,37 @@ pub fn config() -> Config { | |||
| 320 | config.rcc.adc_clock_source = AdcClockSource::PLL2_P; | 330 | config.rcc.adc_clock_source = AdcClockSource::PLL2_P; |
| 321 | } | 331 | } |
| 322 | 332 | ||
| 333 | #[cfg(any(feature = "stm32h7a3zi"))] | ||
| 334 | { | ||
| 335 | use embassy_stm32::rcc::*; | ||
| 336 | config.rcc.hsi = Some(Hsi::Mhz64); | ||
| 337 | config.rcc.csi = true; | ||
| 338 | config.rcc.hsi48 = true; // needed for RNG | ||
| 339 | config.rcc.pll_src = PllSource::Hsi; | ||
| 340 | config.rcc.pll1 = Some(Pll { | ||
| 341 | prediv: PllPreDiv::DIV4, | ||
| 342 | mul: PllMul::MUL35, | ||
| 343 | divp: Some(PllDiv::DIV2), // 280 Mhz | ||
| 344 | divq: Some(PllDiv::DIV8), // SPI1 cksel defaults to pll1_q | ||
| 345 | divr: None, | ||
| 346 | }); | ||
| 347 | config.rcc.pll2 = Some(Pll { | ||
| 348 | prediv: PllPreDiv::DIV4, | ||
| 349 | mul: PllMul::MUL35, | ||
| 350 | divp: Some(PllDiv::DIV8), // 70 Mhz | ||
| 351 | divq: None, | ||
| 352 | divr: None, | ||
| 353 | }); | ||
| 354 | config.rcc.sys = Sysclk::Pll1P; // 280 Mhz | ||
| 355 | config.rcc.ahb_pre = AHBPrescaler::DIV1; // 280 Mhz | ||
| 356 | config.rcc.apb1_pre = APBPrescaler::DIV2; // 140 Mhz | ||
| 357 | config.rcc.apb2_pre = APBPrescaler::DIV2; // 140 Mhz | ||
| 358 | config.rcc.apb3_pre = APBPrescaler::DIV2; // 140 Mhz | ||
| 359 | config.rcc.apb4_pre = APBPrescaler::DIV2; // 140 Mhz | ||
| 360 | config.rcc.voltage_scale = VoltageScale::Scale0; | ||
| 361 | config.rcc.adc_clock_source = AdcClockSource::PLL2_P; | ||
| 362 | } | ||
| 363 | |||
| 323 | #[cfg(any(feature = "stm32l496zg", feature = "stm32l4a6zg", feature = "stm32l4r5zi"))] | 364 | #[cfg(any(feature = "stm32l496zg", feature = "stm32l4a6zg", feature = "stm32l4r5zi"))] |
| 324 | { | 365 | { |
| 325 | use embassy_stm32::rcc::*; | 366 | use embassy_stm32::rcc::*; |
