diff options
Diffstat (limited to 'examples/stm32wl')
| -rw-r--r-- | examples/stm32wl/Cargo.toml | 13 | ||||
| -rw-r--r-- | examples/stm32wl/src/bin/lora_lorawan.rs | 13 | ||||
| -rw-r--r-- | examples/stm32wl/src/bin/lora_p2p_receive.rs | 6 | ||||
| -rw-r--r-- | examples/stm32wl/src/bin/lora_p2p_send.rs | 6 | ||||
| -rw-r--r-- | examples/stm32wl/src/bin/random.rs | 2 | ||||
| -rw-r--r-- | examples/stm32wl/src/bin/rtc.rs | 9 | ||||
| -rw-r--r-- | examples/stm32wl/src/bin/uart_async.rs | 4 |
7 files changed, 23 insertions, 30 deletions
diff --git a/examples/stm32wl/Cargo.toml b/examples/stm32wl/Cargo.toml index 1c771ddce..f47a9a906 100644 --- a/examples/stm32wl/Cargo.toml +++ b/examples/stm32wl/Cargo.toml | |||
| @@ -7,14 +7,14 @@ license = "MIT OR Apache-2.0" | |||
| 7 | [dependencies] | 7 | [dependencies] |
| 8 | # Change stm32wl55jc-cm4 to your chip name, if necessary. | 8 | # Change stm32wl55jc-cm4 to your chip name, if necessary. |
| 9 | embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "unstable-traits", "defmt", "stm32wl55jc-cm4", "time-driver-any", "memory-x", "unstable-pac", "exti", "chrono"] } | 9 | embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "unstable-traits", "defmt", "stm32wl55jc-cm4", "time-driver-any", "memory-x", "unstable-pac", "exti", "chrono"] } |
| 10 | embassy-sync = { version = "0.2.0", path = "../../embassy-sync", features = ["defmt"] } | 10 | embassy-sync = { version = "0.3.0", path = "../../embassy-sync", features = ["defmt"] } |
| 11 | embassy-executor = { version = "0.3.0", path = "../../embassy-executor", features = ["nightly", "arch-cortex-m", "executor-thread", "defmt", "integrated-timers"] } | 11 | embassy-executor = { version = "0.3.0", path = "../../embassy-executor", features = ["nightly", "arch-cortex-m", "executor-thread", "defmt", "integrated-timers"] } |
| 12 | embassy-time = { version = "0.1.2", path = "../../embassy-time", features = ["nightly", "unstable-traits", "defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } | 12 | embassy-time = { version = "0.1.3", path = "../../embassy-time", features = ["nightly", "unstable-traits", "defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } |
| 13 | embassy-embedded-hal = { version = "0.1.0", path = "../../embassy-embedded-hal" } | 13 | embassy-embedded-hal = { version = "0.1.0", path = "../../embassy-embedded-hal" } |
| 14 | embassy-lora = { version = "0.1.0", path = "../../embassy-lora", features = ["stm32wl", "time", "defmt"] } | 14 | embassy-lora = { version = "0.1.0", path = "../../embassy-lora", features = ["stm32wl", "time", "defmt"] } |
| 15 | lora-phy = { version = "1" } | 15 | lora-phy = { version = "2" } |
| 16 | lorawan-device = { version = "0.10.0", default-features = false, features = ["async", "external-lora-phy"] } | 16 | lorawan-device = { version = "0.11.0", default-features = false, features = ["async", "external-lora-phy"] } |
| 17 | lorawan = { version = "0.7.3", default-features = false, features = ["default-crypto"] } | 17 | lorawan = { version = "0.7.4", default-features = false, features = ["default-crypto"] } |
| 18 | 18 | ||
| 19 | defmt = "0.3" | 19 | defmt = "0.3" |
| 20 | defmt-rtt = "0.4" | 20 | defmt-rtt = "0.4" |
| @@ -30,6 +30,3 @@ chrono = { version = "^0.4", default-features = false } | |||
| 30 | 30 | ||
| 31 | [profile.release] | 31 | [profile.release] |
| 32 | debug = 2 | 32 | debug = 2 |
| 33 | |||
| 34 | [patch.crates-io] | ||
| 35 | lora-phy = { git = "https://github.com/embassy-rs/lora-phy", rev = "1323eccc1c470d4259f95f4f315d1be830d572a3"} \ No newline at end of file | ||
diff --git a/examples/stm32wl/src/bin/lora_lorawan.rs b/examples/stm32wl/src/bin/lora_lorawan.rs index 2c9c98861..fb2495326 100644 --- a/examples/stm32wl/src/bin/lora_lorawan.rs +++ b/examples/stm32wl/src/bin/lora_lorawan.rs | |||
| @@ -20,6 +20,7 @@ use lora_phy::LoRa; | |||
| 20 | use lorawan::default_crypto::DefaultFactory as Crypto; | 20 | use lorawan::default_crypto::DefaultFactory as Crypto; |
| 21 | use lorawan_device::async_device::lora_radio::LoRaRadio; | 21 | use lorawan_device::async_device::lora_radio::LoRaRadio; |
| 22 | use lorawan_device::async_device::{region, Device, JoinMode}; | 22 | use lorawan_device::async_device::{region, Device, JoinMode}; |
| 23 | use lorawan_device::{AppEui, AppKey, DevEui}; | ||
| 23 | use {defmt_rtt as _, panic_probe as _}; | 24 | use {defmt_rtt as _, panic_probe as _}; |
| 24 | 25 | ||
| 25 | const LORAWAN_REGION: region::Region = region::Region::EU868; // warning: set this appropriately for the region | 26 | const LORAWAN_REGION: region::Region = region::Region::EU868; // warning: set this appropriately for the region |
| @@ -33,7 +34,7 @@ bind_interrupts!(struct Irqs{ | |||
| 33 | async fn main(_spawner: Spawner) { | 34 | async fn main(_spawner: Spawner) { |
| 34 | let mut config = embassy_stm32::Config::default(); | 35 | let mut config = embassy_stm32::Config::default(); |
| 35 | config.rcc.mux = embassy_stm32::rcc::ClockSrc::HSE32; | 36 | config.rcc.mux = embassy_stm32::rcc::ClockSrc::HSE32; |
| 36 | config.rcc.enable_lsi = true; // enable RNG | 37 | config.rcc.rtc_mux = embassy_stm32::rcc::RtcClockSource::LSI; |
| 37 | let p = embassy_stm32::init(config); | 38 | let p = embassy_stm32::init(config); |
| 38 | 39 | ||
| 39 | pac::RCC.ccipr().modify(|w| w.set_rngsel(0b01)); | 40 | pac::RCC.ccipr().modify(|w| w.set_rngsel(0b01)); |
| @@ -46,10 +47,8 @@ async fn main(_spawner: Spawner) { | |||
| 46 | let _ctrl3 = Output::new(p.PC3.degrade(), Level::High, Speed::High); | 47 | let _ctrl3 = Output::new(p.PC3.degrade(), Level::High, Speed::High); |
| 47 | let iv = Stm32wlInterfaceVariant::new(Irqs, None, Some(ctrl2)).unwrap(); | 48 | let iv = Stm32wlInterfaceVariant::new(Irqs, None, Some(ctrl2)).unwrap(); |
| 48 | 49 | ||
| 49 | let mut delay = Delay; | ||
| 50 | |||
| 51 | let lora = { | 50 | let lora = { |
| 52 | match LoRa::new(SX1261_2::new(BoardType::Stm32wlSx1262, spi, iv), true, &mut delay).await { | 51 | match LoRa::new(SX1261_2::new(BoardType::Stm32wlSx1262, spi, iv), true, Delay).await { |
| 53 | Ok(l) => l, | 52 | Ok(l) => l, |
| 54 | Err(err) => { | 53 | Err(err) => { |
| 55 | info!("Radio error = {}", err); | 54 | info!("Radio error = {}", err); |
| @@ -66,9 +65,9 @@ async fn main(_spawner: Spawner) { | |||
| 66 | // TODO: Adjust the EUI and Keys according to your network credentials | 65 | // TODO: Adjust the EUI and Keys according to your network credentials |
| 67 | match device | 66 | match device |
| 68 | .join(&JoinMode::OTAA { | 67 | .join(&JoinMode::OTAA { |
| 69 | deveui: [0, 0, 0, 0, 0, 0, 0, 0], | 68 | deveui: DevEui::from([0, 0, 0, 0, 0, 0, 0, 0]), |
| 70 | appeui: [0, 0, 0, 0, 0, 0, 0, 0], | 69 | appeui: AppEui::from([0, 0, 0, 0, 0, 0, 0, 0]), |
| 71 | appkey: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | 70 | appkey: AppKey::from([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), |
| 72 | }) | 71 | }) |
| 73 | .await | 72 | .await |
| 74 | { | 73 | { |
diff --git a/examples/stm32wl/src/bin/lora_p2p_receive.rs b/examples/stm32wl/src/bin/lora_p2p_receive.rs index d3f051b1c..3d8c31ff3 100644 --- a/examples/stm32wl/src/bin/lora_p2p_receive.rs +++ b/examples/stm32wl/src/bin/lora_p2p_receive.rs | |||
| @@ -37,10 +37,8 @@ async fn main(_spawner: Spawner) { | |||
| 37 | let _ctrl3 = Output::new(p.PC3.degrade(), Level::High, Speed::High); | 37 | let _ctrl3 = Output::new(p.PC3.degrade(), Level::High, Speed::High); |
| 38 | let iv = Stm32wlInterfaceVariant::new(Irqs, None, Some(ctrl2)).unwrap(); | 38 | let iv = Stm32wlInterfaceVariant::new(Irqs, None, Some(ctrl2)).unwrap(); |
| 39 | 39 | ||
| 40 | let mut delay = Delay; | ||
| 41 | |||
| 42 | let mut lora = { | 40 | let mut lora = { |
| 43 | match LoRa::new(SX1261_2::new(BoardType::Stm32wlSx1262, spi, iv), false, &mut delay).await { | 41 | match LoRa::new(SX1261_2::new(BoardType::Stm32wlSx1262, spi, iv), false, Delay).await { |
| 44 | Ok(l) => l, | 42 | Ok(l) => l, |
| 45 | Err(err) => { | 43 | Err(err) => { |
| 46 | info!("Radio error = {}", err); | 44 | info!("Radio error = {}", err); |
| @@ -84,7 +82,7 @@ async fn main(_spawner: Spawner) { | |||
| 84 | }; | 82 | }; |
| 85 | 83 | ||
| 86 | match lora | 84 | match lora |
| 87 | .prepare_for_rx(&mdltn_params, &rx_pkt_params, None, true, false, 0, 0x00ffffffu32) | 85 | .prepare_for_rx(&mdltn_params, &rx_pkt_params, None, None, false) |
| 88 | .await | 86 | .await |
| 89 | { | 87 | { |
| 90 | Ok(()) => {} | 88 | Ok(()) => {} |
diff --git a/examples/stm32wl/src/bin/lora_p2p_send.rs b/examples/stm32wl/src/bin/lora_p2p_send.rs index fc5205c85..fbd0b0320 100644 --- a/examples/stm32wl/src/bin/lora_p2p_send.rs +++ b/examples/stm32wl/src/bin/lora_p2p_send.rs | |||
| @@ -37,10 +37,8 @@ async fn main(_spawner: Spawner) { | |||
| 37 | let _ctrl3 = Output::new(p.PC3.degrade(), Level::High, Speed::High); | 37 | let _ctrl3 = Output::new(p.PC3.degrade(), Level::High, Speed::High); |
| 38 | let iv = Stm32wlInterfaceVariant::new(Irqs, None, Some(ctrl2)).unwrap(); | 38 | let iv = Stm32wlInterfaceVariant::new(Irqs, None, Some(ctrl2)).unwrap(); |
| 39 | 39 | ||
| 40 | let mut delay = Delay; | ||
| 41 | |||
| 42 | let mut lora = { | 40 | let mut lora = { |
| 43 | match LoRa::new(SX1261_2::new(BoardType::Stm32wlSx1262, spi, iv), false, &mut delay).await { | 41 | match LoRa::new(SX1261_2::new(BoardType::Stm32wlSx1262, spi, iv), false, Delay).await { |
| 44 | Ok(l) => l, | 42 | Ok(l) => l, |
| 45 | Err(err) => { | 43 | Err(err) => { |
| 46 | info!("Radio error = {}", err); | 44 | info!("Radio error = {}", err); |
| @@ -93,7 +91,7 @@ async fn main(_spawner: Spawner) { | |||
| 93 | } | 91 | } |
| 94 | }; | 92 | }; |
| 95 | 93 | ||
| 96 | match lora.sleep(&mut delay).await { | 94 | match lora.sleep(false).await { |
| 97 | Ok(()) => info!("Sleep successful"), | 95 | Ok(()) => info!("Sleep successful"), |
| 98 | Err(err) => info!("Sleep unsuccessful = {}", err), | 96 | Err(err) => info!("Sleep unsuccessful = {}", err), |
| 99 | } | 97 | } |
diff --git a/examples/stm32wl/src/bin/random.rs b/examples/stm32wl/src/bin/random.rs index 592e65f40..18eeac4fa 100644 --- a/examples/stm32wl/src/bin/random.rs +++ b/examples/stm32wl/src/bin/random.rs | |||
| @@ -16,7 +16,7 @@ bind_interrupts!(struct Irqs{ | |||
| 16 | async fn main(_spawner: Spawner) { | 16 | async fn main(_spawner: Spawner) { |
| 17 | let mut config = embassy_stm32::Config::default(); | 17 | let mut config = embassy_stm32::Config::default(); |
| 18 | config.rcc.mux = embassy_stm32::rcc::ClockSrc::HSE32; | 18 | config.rcc.mux = embassy_stm32::rcc::ClockSrc::HSE32; |
| 19 | config.rcc.enable_lsi = true; //Needed for RNG to work | 19 | config.rcc.rtc_mux = embassy_stm32::rcc::RtcClockSource::LSI; |
| 20 | 20 | ||
| 21 | let p = embassy_stm32::init(config); | 21 | let p = embassy_stm32::init(config); |
| 22 | pac::RCC.ccipr().modify(|w| { | 22 | pac::RCC.ccipr().modify(|w| { |
diff --git a/examples/stm32wl/src/bin/rtc.rs b/examples/stm32wl/src/bin/rtc.rs index fb1bc6e3d..11734e4b6 100644 --- a/examples/stm32wl/src/bin/rtc.rs +++ b/examples/stm32wl/src/bin/rtc.rs | |||
| @@ -5,8 +5,9 @@ | |||
| 5 | use chrono::{NaiveDate, NaiveDateTime}; | 5 | use chrono::{NaiveDate, NaiveDateTime}; |
| 6 | use defmt::*; | 6 | use defmt::*; |
| 7 | use embassy_executor::Spawner; | 7 | use embassy_executor::Spawner; |
| 8 | use embassy_stm32::rcc::{self, ClockSrc}; | 8 | use embassy_stm32::rcc::ClockSrc; |
| 9 | use embassy_stm32::rtc::{Rtc, RtcConfig}; | 9 | use embassy_stm32::rtc::{Rtc, RtcClockSource, RtcConfig}; |
| 10 | use embassy_stm32::time::Hertz; | ||
| 10 | use embassy_stm32::Config; | 11 | use embassy_stm32::Config; |
| 11 | use embassy_time::{Duration, Timer}; | 12 | use embassy_time::{Duration, Timer}; |
| 12 | use {defmt_rtt as _, panic_probe as _}; | 13 | use {defmt_rtt as _, panic_probe as _}; |
| @@ -16,8 +17,8 @@ async fn main(_spawner: Spawner) { | |||
| 16 | let p = { | 17 | let p = { |
| 17 | let mut config = Config::default(); | 18 | let mut config = Config::default(); |
| 18 | config.rcc.mux = ClockSrc::HSE32; | 19 | config.rcc.mux = ClockSrc::HSE32; |
| 19 | config.rcc.rtc_mux = rcc::RtcClockSource::LSE32; | 20 | config.rcc.lse = Some(Hertz(32_768)); |
| 20 | config.rcc.enable_rtc_apb = true; | 21 | config.rcc.rtc_mux = RtcClockSource::LSE; |
| 21 | embassy_stm32::init(config) | 22 | embassy_stm32::init(config) |
| 22 | }; | 23 | }; |
| 23 | info!("Hello World!"); | 24 | info!("Hello World!"); |
diff --git a/examples/stm32wl/src/bin/uart_async.rs b/examples/stm32wl/src/bin/uart_async.rs index 07b0f9d2c..2c9b7c691 100644 --- a/examples/stm32wl/src/bin/uart_async.rs +++ b/examples/stm32wl/src/bin/uart_async.rs | |||
| @@ -33,10 +33,10 @@ async fn main(_spawner: Spawner) { | |||
| 33 | config2.baudrate = 9600; | 33 | config2.baudrate = 9600; |
| 34 | 34 | ||
| 35 | //RX/TX connected to USB/UART Bridge on LoRa-E5 mini v1.0 | 35 | //RX/TX connected to USB/UART Bridge on LoRa-E5 mini v1.0 |
| 36 | let mut usart1 = Uart::new(p.USART1, p.PB7, p.PB6, Irqs, p.DMA1_CH3, p.DMA1_CH4, config1); | 36 | let mut usart1 = Uart::new(p.USART1, p.PB7, p.PB6, Irqs, p.DMA1_CH3, p.DMA1_CH4, config1).unwrap(); |
| 37 | 37 | ||
| 38 | //RX1/TX1 (LPUART) on LoRa-E5 mini v1.0 | 38 | //RX1/TX1 (LPUART) on LoRa-E5 mini v1.0 |
| 39 | let mut usart2 = Uart::new(p.LPUART1, p.PC0, p.PC1, Irqs, p.DMA1_CH5, p.DMA1_CH6, config2); | 39 | let mut usart2 = Uart::new(p.LPUART1, p.PC0, p.PC1, Irqs, p.DMA1_CH5, p.DMA1_CH6, config2).unwrap(); |
| 40 | 40 | ||
| 41 | unwrap!(usart1.write(b"Hello Embassy World!\r\n").await); | 41 | unwrap!(usart1.write(b"Hello Embassy World!\r\n").await); |
| 42 | unwrap!(usart2.write(b"Hello Embassy World!\r\n").await); | 42 | unwrap!(usart2.write(b"Hello Embassy World!\r\n").await); |
