From 38830d9fe4769878e18b69918a2dc217b29c5d53 Mon Sep 17 00:00:00 2001 From: Thomas Klaehn Date: Fri, 14 Feb 2025 07:33:55 +0100 Subject: [PATCH] Add low power print to lp-core Signed-off-by: Thomas Klaehn --- hp-core/src/main.rs | 18 ++++++++++++------ lp-core/src/main.rs | 8 ++++++-- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/hp-core/src/main.rs b/hp-core/src/main.rs index 5e9e92b..014170c 100644 --- a/hp-core/src/main.rs +++ b/hp-core/src/main.rs @@ -16,11 +16,12 @@ use esp_backtrace as _; use esp_hal::{ - gpio::lp_io::LowPowerOutput, + gpio::lp_io::{LowPowerInput, LowPowerOutput}, load_lp_code, lp_core::{LpCore, LpCoreWakeupSource}, - rtc_cntl::{Rtc, sleep::WakeFromLpCoreWakeupSource}, main, + rtc_cntl::{sleep::WakeFromLpCoreWakeupSource, Rtc}, + uart::{Config, lp_uart::LpUart} }; use esp_println::{print, println}; @@ -28,9 +29,13 @@ use esp_println::{print, println}; fn main() -> ! { let peripherals = esp_hal::init(esp_hal::Config::default()); - // configure GPIO 1 as LP output pin let lp_pin = LowPowerOutput::new(peripherals.GPIO1); + let uart_cfg = Config::default(); + let tx = LowPowerOutput::new(peripherals.GPIO5); + let rx = LowPowerInput::new(peripherals.GPIO4); + let lp_uart = LpUart::new(peripherals.LP_UART, uart_cfg, tx, rx); + let mut rtc = Rtc::new(peripherals.LPWR); let reason = WakeFromLpCoreWakeupSource::default(); @@ -43,7 +48,7 @@ fn main() -> ! { load_lp_code!("./target/riscv32imac-unknown-none-elf/release/lp-core"); // start LP core - lp_core_code.run(&mut lp_core, LpCoreWakeupSource::HpCpu, lp_pin); + lp_core_code.run(&mut lp_core, LpCoreWakeupSource::HpCpu, lp_uart, lp_pin); println!("lpcore -> run"); let mut last: u32 = 0; @@ -56,7 +61,8 @@ fn main() -> ! { print!("Current {:x} \u{000d}", read); last = read; } - println!("hp-core -> deep sleep"); - rtc.sleep_light(&[&reason]); + // FIXME... + // println!("hp-core -> deep sleep"); + // rtc.sleep_light(&[&reason]); } } diff --git a/lp-core/src/main.rs b/lp-core/src/main.rs index 4947597..4b61a98 100644 --- a/lp-core/src/main.rs +++ b/lp-core/src/main.rs @@ -7,15 +7,17 @@ #![no_std] #![no_main] +use core::fmt::Write; + use embedded_hal::{delay::DelayNs, digital::OutputPin}; -use esp_lp_hal::{delay::Delay, gpio::Output, prelude::*, wake_hp_core}; +use esp_lp_hal::{delay::Delay, uart::LpUart, gpio::Output, prelude::*, wake_hp_core}; use panic_halt as _; const ADDRESS: u32 = 0x5000_2000; #[entry] -fn main(mut gpio1: Output<1>) -> ! { +fn main(mut lp_uart :LpUart, mut gpio1: Output<1>) -> ! { let mut i: u32 = 0; let ptr = ADDRESS as *mut u32; @@ -26,10 +28,12 @@ fn main(mut gpio1: Output<1>) -> ! { ptr.write_volatile(i); } + writeln!(lp_uart, "high\n").unwrap(); gpio1.set_high().unwrap(); wake_hp_core(); Delay.delay_ms(500); + writeln!(lp_uart, "low\n").unwrap(); gpio1.set_low().unwrap(); Delay.delay_ms(500); }