Files
esp-idf/examples/system/ulp/ulp_riscv/uart_print
Frantisek Hrbata 1c92945f59 change(examples): switch examples to use a minimal build
Currently, several example dependencies rely on the fact that all
registered components are added to the build, along with components
specified in common requirements. This results in longer build times
because even unused components must be built. Switch all examples to use
idf_minimal_build to compile only the components actually required by
the example.

Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>
2024-11-20 20:14:40 +01:00
..

Supported Targets ESP32-S2 ESP32-S3

ULP-RISC-V bitbanged UART transmit:

This example demonstrates how to program the ULP-RISC-V coprocessor to bitbang an UART TX line. This can be used to log output directly from the ULP, even when the main CPU is in deep sleep.

How to use example

Hardware Required

The example can be run on any ESP32-S2 or ESP32-S3 based development board connected to a computer with a single USB cable for flashing and monitoring. The external interface should have 3.3V outputs. You may use e.g. 3.3V compatible USB-to-Serial dongle.

Setup the Hardware

Connect the external serial interface to the board as follows.

  -----------------------------------------------------------------------------------------
  | Target chip Interface | Kconfig Option     | Default ESP Pin      | External UART Pin |
  | ----------------------|--------------------|----------------------|--------------------
  | Transmit Data (TxD)   | EXAMPLE_UART_TXD   | GPIO4                | RxD               |
  | Ground                | n/a                | GND                  | GND               |
  -----------------------------------------------------------------------------------------

Note: Some GPIOs can not be used with certain chips because they are reserved for internal use. Please refer to UART documentation for selected target.

Configure the project

Use the command below to configure project using Kconfig menu as showed in the table above. The baudrate can be changed with by configuring ULP_RISCV_UART_BAUDRATE under components -> ULP, but it is recommended to keep the baudrate low, as driver will not be able to accurately output higher rates.

idf.py menuconfig

Build and Flash

Build the project and flash it to the board, then run monitor tool to view serial output:

idf.py -p PORT flash monitor

(To exit the serial monitor, type Ctrl-].)

See the Getting Started Guide for full steps to configure and use ESP-IDF to build projects.

Example Output

Output from main CPU:

Not a ULP wakeup, initializing it!
Entering in deep sleep

Output from ULP-RISCV:

Hello World from ULP-RISCV! Cnt: 0x00000000 Hello World from ULP-RISCV! Cnt: 0x00000001 Hello World from ULP-RISCV! Cnt: 0x00000002 Hello World from ULP-RISCV! Cnt: 0x00000003 Hello World from ULP-RISCV! Cnt: 0x00000004

Troubleshoot

If the received output contains garbled characters then try to lower the baudrate (ULP_RISCV_UART_BAUDRATE) using menuconfig.