Module esp32s2_hal::ulp_core

source ·
Expand description

§Control the ULP core

§Overview

The ULP CORE peripheral allows control over the Ultra-Low Power (ULP) core in ESP chips. The ULP core is a low-power processor designed for executing tasks in deep sleep mode, enabling efficient power management in ESP systems.

The UlpCore struct provides an interface to interact with the ULP peripheral. It allows starting and configuring the ULP core for operation. The UlpCore struct is initialized with a peripheral reference to the ULP CORE instance.

§Example

let mut ulp_core = esp32s3_hal::ulp_core::UlpCore::new(peripherals.ULP_RISCV_CORE);
ulp_core.stop();
println!("ulp core stopped");

// copy code to RTC ram
let lp_ram = 0x5000_0000 as *mut u8;
unsafe {
    core::ptr::copy_nonoverlapping(CODE as *const _ as *const u8, lp_ram, CODE.len());
}
println!("copied code (len {})", CODE.len());

// start ULP core
ulp_core.run(esp32s3_hal::ulp_core::UlpCoreWakeupSource::HpCpu);
println!("ulpcore run");

unsafe {
    let data = 0x5000_0010 as *mut u32;
    loop {
        println!("Current {}", unsafe { data.read_volatile() });
    }
}

Structs§

Enums§