aboutsummaryrefslogtreecommitdiff
path: root/examples/stm32wl/src/bin/lora_lorawan.rs
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2023-10-23 00:28:54 +0200
committerDario Nieuwenhuis <[email protected]>2023-10-23 00:31:36 +0200
commitb9e13cb5d1ca3e85a02b2a37b7ee14f73663b1bd (patch)
tree1ae33453bcee12a6aaf4cfdd8dc1795187c7cadc /examples/stm32wl/src/bin/lora_lorawan.rs
parent46ff2c82aa3193dd1378b142be284aa746045923 (diff)
stm32/rcc: merge wl into l4/l5.
Diffstat (limited to 'examples/stm32wl/src/bin/lora_lorawan.rs')
-rw-r--r--examples/stm32wl/src/bin/lora_lorawan.rs22
1 files changed, 18 insertions, 4 deletions
diff --git a/examples/stm32wl/src/bin/lora_lorawan.rs b/examples/stm32wl/src/bin/lora_lorawan.rs
index 8c789afbc..e26c274ad 100644
--- a/examples/stm32wl/src/bin/lora_lorawan.rs
+++ b/examples/stm32wl/src/bin/lora_lorawan.rs
@@ -12,7 +12,8 @@ use embassy_lora::LoraTimer;
12use embassy_stm32::gpio::{Level, Output, Pin, Speed}; 12use embassy_stm32::gpio::{Level, Output, Pin, Speed};
13use embassy_stm32::rng::{self, Rng}; 13use embassy_stm32::rng::{self, Rng};
14use embassy_stm32::spi::Spi; 14use embassy_stm32::spi::Spi;
15use embassy_stm32::{bind_interrupts, pac, peripherals}; 15use embassy_stm32::time::Hertz;
16use embassy_stm32::{bind_interrupts, peripherals};
16use embassy_time::Delay; 17use embassy_time::Delay;
17use lora_phy::mod_params::*; 18use lora_phy::mod_params::*;
18use lora_phy::sx1261_2::SX1261_2; 19use lora_phy::sx1261_2::SX1261_2;
@@ -33,11 +34,24 @@ bind_interrupts!(struct Irqs{
33#[embassy_executor::main] 34#[embassy_executor::main]
34async fn main(_spawner: Spawner) { 35async fn main(_spawner: Spawner) {
35 let mut config = embassy_stm32::Config::default(); 36 let mut config = embassy_stm32::Config::default();
36 config.rcc.mux = embassy_stm32::rcc::ClockSrc::HSE; 37 {
38 use embassy_stm32::rcc::*;
39 config.rcc.hse = Some(Hse {
40 freq: Hertz(32_000_000),
41 mode: HseMode::Bypass,
42 });
43 config.rcc.mux = ClockSrc::PLL1_R;
44 config.rcc.pll = Some(Pll {
45 source: PLLSource::HSE,
46 prediv: PllPreDiv::DIV2,
47 mul: PllMul::MUL6,
48 divp: None,
49 divq: Some(PllQDiv::DIV2), // PLL1_Q clock (32 / 2 * 6 / 2), used for RNG
50 divr: Some(PllRDiv::DIV2), // sysclk 48Mhz clock (32 / 2 * 6 / 2)
51 });
52 }
37 let p = embassy_stm32::init(config); 53 let p = embassy_stm32::init(config);
38 54
39 pac::RCC.ccipr().modify(|w| w.set_rngsel(0b01));
40
41 let spi = Spi::new_subghz(p.SUBGHZSPI, p.DMA1_CH1, p.DMA1_CH2); 55 let spi = Spi::new_subghz(p.SUBGHZSPI, p.DMA1_CH1, p.DMA1_CH2);
42 56
43 // Set CTRL1 and CTRL3 for high-power transmission, while CTRL2 acts as an RF switch between tx and rx 57 // Set CTRL1 and CTRL3 for high-power transmission, while CTRL2 acts as an RF switch between tx and rx