stm32/rcc: merge wl into l4/l5.
This commit is contained in:
@ -5,7 +5,6 @@
|
||||
use chrono::{NaiveDate, NaiveDateTime};
|
||||
use defmt::*;
|
||||
use embassy_executor::Spawner;
|
||||
use embassy_stm32::rcc::{ClockSrc, LsConfig, PLLSource, Pll, PllMul, PllPreDiv, PllRDiv};
|
||||
use embassy_stm32::rtc::{Rtc, RtcConfig};
|
||||
use embassy_stm32::time::Hertz;
|
||||
use embassy_stm32::Config;
|
||||
@ -15,17 +14,23 @@ use {defmt_rtt as _, panic_probe as _};
|
||||
#[embassy_executor::main]
|
||||
async fn main(_spawner: Spawner) {
|
||||
let mut config = Config::default();
|
||||
config.rcc.mux = ClockSrc::PLL1_R;
|
||||
config.rcc.hse = Some(Hertz::mhz(8));
|
||||
config.rcc.pll = Some(Pll {
|
||||
source: PLLSource::HSE,
|
||||
prediv: PllPreDiv::DIV1,
|
||||
mul: PllMul::MUL20,
|
||||
divp: None,
|
||||
divq: None,
|
||||
divr: Some(PllRDiv::DIV2), // sysclk 80Mhz clock (8 / 1 * 20 / 2)
|
||||
});
|
||||
config.rcc.ls = LsConfig::default_lse();
|
||||
{
|
||||
use embassy_stm32::rcc::*;
|
||||
config.rcc.mux = ClockSrc::PLL1_R;
|
||||
config.rcc.hse = Some(Hse {
|
||||
freq: Hertz::mhz(8),
|
||||
mode: HseMode::Oscillator,
|
||||
});
|
||||
config.rcc.pll = Some(Pll {
|
||||
source: PLLSource::HSE,
|
||||
prediv: PllPreDiv::DIV1,
|
||||
mul: PllMul::MUL20,
|
||||
divp: None,
|
||||
divq: None,
|
||||
divr: Some(PllRDiv::DIV2), // sysclk 80Mhz clock (8 / 1 * 20 / 2)
|
||||
});
|
||||
config.rcc.ls = LsConfig::default_lse();
|
||||
}
|
||||
let p = embassy_stm32::init(config);
|
||||
|
||||
info!("Hello World!");
|
||||
|
@ -48,7 +48,6 @@ use embassy_net_adin1110::{self, Device, Runner, ADIN1110};
|
||||
use embedded_hal_bus::spi::ExclusiveDevice;
|
||||
use hal::gpio::Pull;
|
||||
use hal::i2c::Config as I2C_Config;
|
||||
use hal::rcc::{ClockSrc, PLLSource, Pll, PllMul, PllPreDiv, PllRDiv};
|
||||
use hal::spi::{Config as SPI_Config, Spi};
|
||||
use hal::time::Hertz;
|
||||
|
||||
@ -74,20 +73,25 @@ async fn main(spawner: Spawner) {
|
||||
defmt::println!("Start main()");
|
||||
|
||||
let mut config = embassy_stm32::Config::default();
|
||||
|
||||
// 80Mhz clock (Source: 8 / SrcDiv: 1 * PLLMul 20 / ClkDiv 2)
|
||||
// 80MHz highest frequency for flash 0 wait.
|
||||
config.rcc.mux = ClockSrc::PLL1_R;
|
||||
config.rcc.hse = Some(Hertz::mhz(8));
|
||||
config.rcc.pll = Some(Pll {
|
||||
source: PLLSource::HSE,
|
||||
prediv: PllPreDiv::DIV1,
|
||||
mul: PllMul::MUL20,
|
||||
divp: None,
|
||||
divq: None,
|
||||
divr: Some(PllRDiv::DIV2), // sysclk 80Mhz clock (8 / 1 * 20 / 2)
|
||||
});
|
||||
config.rcc.hsi48 = true; // needed for rng
|
||||
{
|
||||
use embassy_stm32::rcc::*;
|
||||
// 80Mhz clock (Source: 8 / SrcDiv: 1 * PLLMul 20 / ClkDiv 2)
|
||||
// 80MHz highest frequency for flash 0 wait.
|
||||
config.rcc.mux = ClockSrc::PLL1_R;
|
||||
config.rcc.hse = Some(Hse {
|
||||
freq: Hertz::mhz(8),
|
||||
mode: HseMode::Oscillator,
|
||||
});
|
||||
config.rcc.pll = Some(Pll {
|
||||
source: PLLSource::HSE,
|
||||
prediv: PllPreDiv::DIV1,
|
||||
mul: PllMul::MUL20,
|
||||
divp: None,
|
||||
divq: None,
|
||||
divr: Some(PllRDiv::DIV2), // sysclk 80Mhz clock (8 / 1 * 20 / 2)
|
||||
});
|
||||
config.rcc.hsi48 = true; // needed for rng
|
||||
}
|
||||
|
||||
let dp = embassy_stm32::init(config);
|
||||
|
||||
|
@ -12,7 +12,8 @@ use embassy_lora::LoraTimer;
|
||||
use embassy_stm32::gpio::{Level, Output, Pin, Speed};
|
||||
use embassy_stm32::rng::{self, Rng};
|
||||
use embassy_stm32::spi::Spi;
|
||||
use embassy_stm32::{bind_interrupts, pac, peripherals};
|
||||
use embassy_stm32::time::Hertz;
|
||||
use embassy_stm32::{bind_interrupts, peripherals};
|
||||
use embassy_time::Delay;
|
||||
use lora_phy::mod_params::*;
|
||||
use lora_phy::sx1261_2::SX1261_2;
|
||||
@ -33,11 +34,24 @@ bind_interrupts!(struct Irqs{
|
||||
#[embassy_executor::main]
|
||||
async fn main(_spawner: Spawner) {
|
||||
let mut config = embassy_stm32::Config::default();
|
||||
config.rcc.mux = embassy_stm32::rcc::ClockSrc::HSE;
|
||||
{
|
||||
use embassy_stm32::rcc::*;
|
||||
config.rcc.hse = Some(Hse {
|
||||
freq: Hertz(32_000_000),
|
||||
mode: HseMode::Bypass,
|
||||
});
|
||||
config.rcc.mux = ClockSrc::PLL1_R;
|
||||
config.rcc.pll = Some(Pll {
|
||||
source: PLLSource::HSE,
|
||||
prediv: PllPreDiv::DIV2,
|
||||
mul: PllMul::MUL6,
|
||||
divp: None,
|
||||
divq: Some(PllQDiv::DIV2), // PLL1_Q clock (32 / 2 * 6 / 2), used for RNG
|
||||
divr: Some(PllRDiv::DIV2), // sysclk 48Mhz clock (32 / 2 * 6 / 2)
|
||||
});
|
||||
}
|
||||
let p = embassy_stm32::init(config);
|
||||
|
||||
pac::RCC.ccipr().modify(|w| w.set_rngsel(0b01));
|
||||
|
||||
let spi = Spi::new_subghz(p.SUBGHZSPI, p.DMA1_CH1, p.DMA1_CH2);
|
||||
|
||||
// Set CTRL1 and CTRL3 for high-power transmission, while CTRL2 acts as an RF switch between tx and rx
|
||||
|
@ -4,9 +4,9 @@
|
||||
|
||||
use defmt::*;
|
||||
use embassy_executor::Spawner;
|
||||
use embassy_stm32::rcc::{ClockSrc, MSIRange};
|
||||
use embassy_stm32::rng::{self, Rng};
|
||||
use embassy_stm32::{bind_interrupts, pac, peripherals};
|
||||
use embassy_stm32::time::Hertz;
|
||||
use embassy_stm32::{bind_interrupts, peripherals};
|
||||
use {defmt_rtt as _, panic_probe as _};
|
||||
|
||||
bind_interrupts!(struct Irqs{
|
||||
@ -16,11 +16,24 @@ bind_interrupts!(struct Irqs{
|
||||
#[embassy_executor::main]
|
||||
async fn main(_spawner: Spawner) {
|
||||
let mut config = embassy_stm32::Config::default();
|
||||
config.rcc.mux = ClockSrc::MSI(MSIRange::RANGE32M);
|
||||
{
|
||||
use embassy_stm32::rcc::*;
|
||||
config.rcc.hse = Some(Hse {
|
||||
freq: Hertz(32_000_000),
|
||||
mode: HseMode::Bypass,
|
||||
});
|
||||
config.rcc.mux = ClockSrc::PLL1_R;
|
||||
config.rcc.pll = Some(Pll {
|
||||
source: PLLSource::HSE,
|
||||
prediv: PllPreDiv::DIV2,
|
||||
mul: PllMul::MUL6,
|
||||
divp: None,
|
||||
divq: Some(PllQDiv::DIV2), // PLL1_Q clock (32 / 2 * 6 / 2), used for RNG
|
||||
divr: Some(PllRDiv::DIV2), // sysclk 48Mhz clock (32 / 2 * 6 / 2)
|
||||
});
|
||||
}
|
||||
let p = embassy_stm32::init(config);
|
||||
|
||||
pac::RCC.ccipr().modify(|w| w.set_rngsel(0b11)); // msi
|
||||
|
||||
info!("Hello World!");
|
||||
|
||||
let mut rng = Rng::new(p.RNG, Irqs);
|
||||
|
Reference in New Issue
Block a user