mirror of
https://github.com/espressif/esp-idf.git
synced 2025-11-26 12:50:30 +00:00
examples: fix echo example crash when UART interrupt handler placed in IRAM
This commit is contained in:
committed by
Michael (XIAO Xufeng)
parent
bd920d22b0
commit
df9ca688d7
@@ -2,25 +2,30 @@
|
||||
|
||||
(See the README.md file in the upper level 'examples' directory for more information about examples.)
|
||||
|
||||
This example demonstrates how to utilize UART interfaces of ESP32 by echoing back to the sender any data received on
|
||||
UART1.
|
||||
This example demonstrates how to utilize UART interfaces by echoing back to the sender any data received on
|
||||
configured UART.
|
||||
|
||||
## How to use example
|
||||
|
||||
### Hardware Required
|
||||
|
||||
The example can be run on any ESP32 development board connected to a PC with a single USB cable for flashing and
|
||||
The example can be run on any ESP32 or ESP32-S2 based development board connected to a PC 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 ESP32 board as follows.
|
||||
|
||||
| ESP32 Interface | #define | ESP32 Pin | External UART Pin |
|
||||
| --- | --- | --- | --- |
|
||||
| Transmit Data (TxD) | ECHO_TEST_TXD | GPIO4 | RxD |
|
||||
| Receive Data (RxD) | ECHO_TEST_RXD | GPIO5 | TxD |
|
||||
| Ground | n/a | GND | GND |
|
||||
Connect the external serial interface to the ESP32(S2) board as follows.
|
||||
|
||||
```
|
||||
---------------------------------------------------------------------------------------
|
||||
| Target chip Interface | #define | Default ESP32(S2) Pin| External UART Pin |
|
||||
| ----------------------|------------------|----------------------|--------------------
|
||||
| Transmit Data (TxD) | EXAMPLE_UART_TXD | GPIO4 | RxD |
|
||||
| Receive Data (RxD) | EXAMPLE_UART_RXD | GPIO5 | TxD |
|
||||
| Ground | n/a | GND | GND |
|
||||
---------------------------------------------------------------------------------------
|
||||
```
|
||||
Note: The GPIO22 - GPIO25 can not be used with ESP32-S2 chip because they are reserved for internal use. Please refer to UART documentation for selected target.
|
||||
|
||||
Optionally, you can set-up and use a serial interface that has RTS and CTS signals in order to verify that the
|
||||
hardware control flow works. Connect the extra signals according to the following table, configure both extra pins in
|
||||
@@ -28,13 +33,20 @@ the example code by replacing existing `UART_PIN_NO_CHANGE` macros with the appr
|
||||
UART1 driver to use the hardware flow control by setting `.flow_ctrl = UART_HW_FLOWCTRL_CTS_RTS` and adding
|
||||
`.rx_flow_ctrl_thresh = 122`.
|
||||
|
||||
| ESP32 Interface | #define | ESP32 Pin | External UART Pin |
|
||||
| --- | --- | --- | --- |
|
||||
| Request to Send (RTS) | ECHO_TEST_RTS | GPIO18 | CTS |
|
||||
| Clear to Send (CTS) | ECHO_TEST_CTS | GPIO19 | RTS |
|
||||
```
|
||||
--------------------------------------------------------------------------------------
|
||||
| Target chip Interface | #define | Default ESP32(S2) Pin| External UART Pin |
|
||||
| ----------------------|-----------------|----------------------|--------------------
|
||||
| Transmit Data (TxD) | ECHO_TEST_RTS | GPIO18 | CTS |
|
||||
| Receive Data (RxD) | ECHO_TEST_CTS | GPIO19 | RTS |
|
||||
| Ground | n/a | GND | GND |
|
||||
--------------------------------------------------------------------------------------
|
||||
```
|
||||
|
||||
### Configure the project
|
||||
|
||||
Use the command below to configure project using Kconfig menu as showed in the table above.
|
||||
The default Kconfig values can be changed such as: EXAMPLE_TASK_STACK_SIZE, EXAMPLE_UART_BAUD_RATE, EXAMPLE_UART_PORT_NUM (Refer to Kconfig file).
|
||||
```
|
||||
idf.py menuconfig
|
||||
```
|
||||
@@ -54,10 +66,9 @@ See the Getting Started Guide for full steps to configure and use ESP-IDF to bui
|
||||
## Example Output
|
||||
|
||||
Type some characters in the terminal connected to the external serial interface. As result you should see echo in the
|
||||
terminal which is used for flashing and monitoring. You can verify if the echo indeed comes from ESP32 by
|
||||
terminal which is used for flashing and monitoring. You can verify if the echo indeed comes from ESP32(S2) board by
|
||||
disconnecting either `TxD` or `RxD` pin: no characters will appear when typing.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
You are not supposed to see the echo in the terminal which is used for flashing and monitoring, but in the other one
|
||||
which is connected to UART1.
|
||||
You are not supposed to see the echo in the terminal which is used for flashing and monitoring, but in the other UART configured through Kconfig can be used.
|
||||
|
||||
Reference in New Issue
Block a user