esp-idf/examples/system/ulp/ulp_riscv/adc
Marius Vikhammer 9d41418bd2 fix(ulp): improve ULP examples for users using usb-jtag-serial
When using USB-serial-jtag for monitoring idf-monitor will lose connection
during deep sleep (because the peripheral powers down) and will need
some time to reconnect when we wake-up. In the ULP examples this would result in
the chip waking up->printing-> going back to sleep, before idf-monitor is even able
to connect, and users would erroneously assume the chip never woke up.

Add a 1 sec delay at the start of the examples to improve the user experience when
using jtag-serial.
2024-01-15 13:01:59 +08:00
..
main fix(ulp): improve ULP examples for users using usb-jtag-serial 2024-01-15 13:01:59 +08:00
CMakeLists.txt ulp/lp-core: added gpio API for lp core as well as an example showcasing it. 2023-05-29 11:13:47 +08:00
README.md ulp/lp-core: added gpio API for lp core as well as an example showcasing it. 2023-05-29 11:13:47 +08:00
sdkconfig.defaults ulp/lp-core: added gpio API for lp core as well as an example showcasing it. 2023-05-29 11:13:47 +08:00

Supported Targets ESP32-S2 ESP32-S3

ULP-RISC-V ADC Example

This example demonstrates how to use the ULP-RISC-V coprocessor to poll the ADC in deep sleep.

The ULP program periodically measures the input voltage on EXAMPLE_ADC_CHANNEL (by default ADC1 channel 0, GPIO1 on both ESP32-S2 and ESP32-S3). The voltage is compared to an upper threshold. If the voltage is higher than the threshold, the ULP wakes up the system.

By default, the threshold is set to 1.75V, approximately.

In this example, you need to connect a voltage source (e.g. a DC power supply) to the GPIO pin corresponding to the ADC channel specified in ulp/example_config.h (see the macros defined on the top of the header file). Feel free to modify the channel setting.

Hardware Required

  • A development board with a SOC which has a RISC-V ULP coprocessor (e.g., ESP32-S2 Saola)
  • A USB cable for power supply and programming

Example output

Below is the output from this example.

Not a ULP-RISC-V wakeup (cause = 0), initializing it!
Entering in deep sleep

ULP-RISC-V woke up the main CPU
Threshold: high = 2000
Value = 4095 was above threshold
Entering in deep sleep