aboutsummaryrefslogtreecommitdiff
path: root/examples/stm32wl
diff options
context:
space:
mode:
Diffstat (limited to 'examples/stm32wl')
-rw-r--r--examples/stm32wl/Cargo.toml13
-rw-r--r--examples/stm32wl/src/bin/lora_lorawan.rs13
-rw-r--r--examples/stm32wl/src/bin/lora_p2p_receive.rs6
-rw-r--r--examples/stm32wl/src/bin/lora_p2p_send.rs6
-rw-r--r--examples/stm32wl/src/bin/random.rs2
-rw-r--r--examples/stm32wl/src/bin/rtc.rs9
-rw-r--r--examples/stm32wl/src/bin/uart_async.rs4
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.
9embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "unstable-traits", "defmt", "stm32wl55jc-cm4", "time-driver-any", "memory-x", "unstable-pac", "exti", "chrono"] } 9embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "unstable-traits", "defmt", "stm32wl55jc-cm4", "time-driver-any", "memory-x", "unstable-pac", "exti", "chrono"] }
10embassy-sync = { version = "0.2.0", path = "../../embassy-sync", features = ["defmt"] } 10embassy-sync = { version = "0.3.0", path = "../../embassy-sync", features = ["defmt"] }
11embassy-executor = { version = "0.3.0", path = "../../embassy-executor", features = ["nightly", "arch-cortex-m", "executor-thread", "defmt", "integrated-timers"] } 11embassy-executor = { version = "0.3.0", path = "../../embassy-executor", features = ["nightly", "arch-cortex-m", "executor-thread", "defmt", "integrated-timers"] }
12embassy-time = { version = "0.1.2", path = "../../embassy-time", features = ["nightly", "unstable-traits", "defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } 12embassy-time = { version = "0.1.3", path = "../../embassy-time", features = ["nightly", "unstable-traits", "defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] }
13embassy-embedded-hal = { version = "0.1.0", path = "../../embassy-embedded-hal" } 13embassy-embedded-hal = { version = "0.1.0", path = "../../embassy-embedded-hal" }
14embassy-lora = { version = "0.1.0", path = "../../embassy-lora", features = ["stm32wl", "time", "defmt"] } 14embassy-lora = { version = "0.1.0", path = "../../embassy-lora", features = ["stm32wl", "time", "defmt"] }
15lora-phy = { version = "1" } 15lora-phy = { version = "2" }
16lorawan-device = { version = "0.10.0", default-features = false, features = ["async", "external-lora-phy"] } 16lorawan-device = { version = "0.11.0", default-features = false, features = ["async", "external-lora-phy"] }
17lorawan = { version = "0.7.3", default-features = false, features = ["default-crypto"] } 17lorawan = { version = "0.7.4", default-features = false, features = ["default-crypto"] }
18 18
19defmt = "0.3" 19defmt = "0.3"
20defmt-rtt = "0.4" 20defmt-rtt = "0.4"
@@ -30,6 +30,3 @@ chrono = { version = "^0.4", default-features = false }
30 30
31[profile.release] 31[profile.release]
32debug = 2 32debug = 2
33
34[patch.crates-io]
35lora-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;
20use lorawan::default_crypto::DefaultFactory as Crypto; 20use lorawan::default_crypto::DefaultFactory as Crypto;
21use lorawan_device::async_device::lora_radio::LoRaRadio; 21use lorawan_device::async_device::lora_radio::LoRaRadio;
22use lorawan_device::async_device::{region, Device, JoinMode}; 22use lorawan_device::async_device::{region, Device, JoinMode};
23use lorawan_device::{AppEui, AppKey, DevEui};
23use {defmt_rtt as _, panic_probe as _}; 24use {defmt_rtt as _, panic_probe as _};
24 25
25const LORAWAN_REGION: region::Region = region::Region::EU868; // warning: set this appropriately for the region 26const LORAWAN_REGION: region::Region = region::Region::EU868; // warning: set this appropriately for the region
@@ -33,7 +34,7 @@ bind_interrupts!(struct Irqs{
33async fn main(_spawner: Spawner) { 34async 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{
16async fn main(_spawner: Spawner) { 16async 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 @@
5use chrono::{NaiveDate, NaiveDateTime}; 5use chrono::{NaiveDate, NaiveDateTime};
6use defmt::*; 6use defmt::*;
7use embassy_executor::Spawner; 7use embassy_executor::Spawner;
8use embassy_stm32::rcc::{self, ClockSrc}; 8use embassy_stm32::rcc::ClockSrc;
9use embassy_stm32::rtc::{Rtc, RtcConfig}; 9use embassy_stm32::rtc::{Rtc, RtcClockSource, RtcConfig};
10use embassy_stm32::time::Hertz;
10use embassy_stm32::Config; 11use embassy_stm32::Config;
11use embassy_time::{Duration, Timer}; 12use embassy_time::{Duration, Timer};
12use {defmt_rtt as _, panic_probe as _}; 13use {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);