espulp
– ESP Ultra Low Power Processor Module¶
The espulp
module adds ability to load and run
programs on the ESP32-Sx’s ultra-low-power RISC-V processor.
import espulp
import memorymap
shared_mem = memorymap.AddressRange(start=0x50000000, length=1024)
ulp = espulp.ULP()
with open("program.bin", "rb") as f:
program = f.read()
ulp.run(program)
print(shared_mem[0])
# ulp.halt()
Available on these boards
- espulp.get_rtc_gpio_number(pin: microcontroller.Pin) int | None ¶
Return the RTC GPIO number of the given pin or None if not connected to RTC GPIO.
- class espulp.Architecture¶
The ULP architectures available.
- FSM: Architecture¶
The ULP Finite State Machine.
- RISCV: Architecture¶
The ULP RISC-V Coprocessor.
- class espulp.ULP(arch: Architecture = Architecture.FSM)¶
The ultra-low-power processor.
Raises an exception if another ULP has been instantiated. This ensures that is is only used by one piece of code at a time.
- Parameters:
arch (Architecture) – The ulp arch
- arch: Architecture¶
The ulp architecture. (read-only)
- __exit__() None ¶
Automatically deinitializes the hardware when exiting a context. See Lifetime and ContextManagers for more info.
- run(program: circuitpython_typing.ReadableBuffer, *, pins: Sequence[microcontroller.Pin] = ()) None ¶
- Loads the program into ULP memory and then runs the program. The given pins are
claimed and not reset until
halt()
is called.
The program will continue to run even when the running Python is halted.
- class espulp.ULPAlarm(ulp: ULP)¶
Trigger an alarm when the ULP requests wake-up.
Create an alarm that will be triggered when the ULP requests wake-up.
The alarm is not active until it is passed to an
alarm
-enabling function, such asalarm.light_sleep_until_alarms()
oralarm.exit_and_deep_sleep_until_alarms()
.- Parameters:
ulp (ULP) – The ulp instance