ESP32-S3-Touch-LCD-7
| ||
Overview
Introduction
The ESP32-S3-Touch-LCD-7 is a low-cost, high-performance microcontroller development board designed by Waveshare. It features 2.4GHz WiFi and BLE 5, integrates large Flash storage and PSRAM, and a 7-inch capacitive touch LCD screen. Support running GUI interface demos such as LVGL. It also has multiple external peripheral interfaces (such as CAN, I2C, RS485, and Sensor) for developing applications such HMI on ESP32-S3. With various functions and interfaces, it is suitable for power requirements in IoT, mobile devices, wearable electronics, and smart home applications.
Features
- Equipped with Xtensa® 32-bit LX7 dual-core processor, up to 240MHz main frequency.
- Supports 2.4GHz Wi-Fi (802.11 b/g/n) and Bluetooth® 5 (LE), with onboard antenna.
- Built-in 512KB SRAM and 384KB ROM, with onboard 8MB Flash and 8MB PSRAM.
- Onboard 7-inch capacitive touch screen, 800x480 resolution, 65K colors.
- Support capacitive touch control via I2C interface, 5-point touch control, and 65K colors.
- Onboard CAN, RS485, I2C interface, SD card slot and so on, integrates full-speed USB serial port.
- Support flexible clock, module power supply independent setting, and other controls to realize low power consumption in different scenarios.
Hardware Description
- UART Interface : Use the CH343P chip for USB to UART connection to ESP32-S3's UART_TXD (GPIO43) and UART_RXD (GPIO44) for firmware burning and log printing.
- USB Interface: GPIO19(DP) and GPIO20 (DN) are default USB pins for ESP32-S3, supporting interfaces such as UVC for cameras. Refer to UVC driver documentation for details.
- Sensor Interface: This interface connects to GPIO6 for ADC usage, suitable for connecting sensor pack and so on.
- CAN Interface: CAN interface pins are multiplexed with USB interface pins, using the FSUSB42UMX chip for switching. By default, USB interface is used when FSUSB42UMX's USB_SEL pin is LOW.
- I2C Interface: ESP32-S3 provides multiple hardware I2C channels. Currently, GPIO8 (SDA) and GPIO9 (SCL) are used for I2C bus connection to IO expansion chips and touch interfaces.
- RS485 Interface: The development board features onboard RS485 interface circuit, enabling direct communication with RS485 devices. RS485 circuit automatically switches between receive and transmit modes.
- PH2.0 battery header: The development board employs the efficient charge and discharge management chip CS8501, capable of boosting single-cell lithium batteries to 5V. Currently, the charging current is set to 580mA, and users can modify the charging current by replacing the R45 resistor. Refer to the schematic for details.
ESP32-S3-WROOM-x | LCD | USB | SD | UART | CAN | Sensor | |
GPIO0 | G3 | ||||||
GPIO1 | R3 | ||||||
GPIO2 | R4 | ||||||
GPIO3 | VSYNC | ||||||
GPIO4 | TP_IRQ | ||||||
GPIO5 | DE | ||||||
GPIO6 | AD | ||||||
GPIO7 | PCLK | ||||||
GPIO8 | TP_SDA | ||||||
GPIO9 | TP_SCL | ||||||
GPIO10 | B7 | ||||||
GPIO11 | MOSI | ||||||
GPIO12 | SCK | ||||||
GPIO13 | MISO | ||||||
GPIO14 | B3 | ||||||
GPIO15 | RS485_TX | ||||||
GPIO16 | RS485_RX | ||||||
GPIO17 | B6 | ||||||
GPIO18 | B5 | ||||||
GPIO19 | USB_DN | CANRX | |||||
---|---|---|---|---|---|---|---|
GPIO20 | USB_DP | CANTX | |||||
GPIO21 | G7 | ||||||
GPIO38 | B4 | ||||||
GPIO39 | G2 | ||||||
GPIO40 | R7 | ||||||
GPIO41 | R6 | ||||||
GPIO42 | R5 | ||||||
GPIO43 | UART_TXD | ||||||
GPIO44 | UART_RXD | ||||||
GPIO45 | G4 | ||||||
GPIO46 | HSYNC | ||||||
GPIO47 | G6 | ||||||
GPIO48 | G5 | ||||||
CH422G | - | - | - | - | - | - | |
EXIO1 | TP_RST | ||||||
EXIO2 | DISP | ||||||
EXIO3 | LCD_RST | ||||||
EXIO4 | SD_CS | ||||||
EXIO5 | USB_SEL(LOW) | USB_SEL(HIGH) |
Hardware Connection
- ESP32-S3-Touch-LCD-7 comes with an onboard automatic download circuit. The Type C port, marked UART1, is used for demo downloads and logging. Once the program is downloaded, run it by pressing the RESET button.
- UART2 is adapted through the PH2.0 connector and shares the same serial port as UART1. It can be selected via a switch on the board. When using UART2 for programming, manual download is required.
- When using, be cautious around the PCB antenna area to avoid interference from other metals or plastic components pressing against the PCB antenna.
- The development board employs the PH2.0 connector to expose ADC, CAN, I2C, and RS485 peripheral pins. Sensors can be connected using PH2.0 to 2.54mm DuPont male header accessories.
- Most GPIO pins are occupied by the 7-inch screen. The development board utilizes the CH422G chip to expand IO, used for functions such as reset, and backlight control.
- For CAN and RS485 peripherals, 120-ohm termination resistors are connected by default via jumpers. They can be optionally disconnected by setting the jumpers to NC.
- The SD card communicates via SPI, and it's important to note that the SD_CS pin needs to be driven by the EXIO4 of the CH422G.
Notes
- Currently, running the LVGL benchmark example on ESP-IDF v5.3 with a single core has an average frame rate limit of 26, corresponding to an interface frame rate of 41 (PCLK 21 MHz). Before compiling, you need to configure ESP32 and LVGL through menuconfig.
CONFIG_FREERTOS_HZ=1000 CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y CONFIG_ESPTOOLPY_FLASHMODE_QIO=y CONFIG_ESPTOOLPY_FLASHFREQ_120M=y [should align with PSRAM] CONFIG_SPIRAM_MODE_OCT=y CONFIG_IDF_EXPERIMENTAL_FEATURES=y and CONFIG_SPIRAM_SPEED_120M=y [should align with FLASH] CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y CONFIG_SPIRAM_RODATA=y CONFIG_ESP32S3_DATA_CACHE_LINE_64B=y CONFIG_COMPILER_OPTIMIZATION_PERF=y #Configure the following LVGL items for improving frame rate (LVGL v8.3): #define LV_MEM_CUSTOM 1 or CONFIG_LV_MEM_CUSTOM=y #define LV_MEMCPY_MEMSET_STD 1 or CONFIG_LV_MEMCPY_MEMSET_STD=y #define LV_ATTRIBUTE_FAST_MEM IRAM_ATTR or CONFIG_LV_ATTRIBUTE_FAST_MEM=y
- For more details about LCD and LVGL performance, you can refer to [https:/ this document].
- The lithium battery socket only supports single-cell 3.7V lithium batteries. Do not use multiple battery packs for charging and discharging simultaneously. It is recommended to use a single-cell battery with a capacity of below 2000mAh.
Dimensions
File:ESP32-S3-Touch-LCD-72.jpg
Environment Setting
The software framework for ESP32 series development boards is completed, and you can use MicroPython, and C/C++ (Arduino, ESP-IDF) for rapid prototyping of product development. Here's a brief introduction to these three development approaches:
- Official C/C++ library installation:
- MicroPython is an efficient implementation of the Python 3 programming language that includes a small subset of the Python standard library and is optimized to run on microcontrollers and in restricted environments. (Development of this product is not currently supported.)
- You can refer to development documentation for MicroPython-related application development.
- The GitHub library for MicroPython allows for recompilation for custom development.
- Environment setting is supported on Windows 10. Users can select Arduino/Visual Studio Codes (ESP-IDF) as IDE to develop. For Mac/Linux, users can refer to official introduction.
ESP-IDF
Arduino
- Download and install Arduino IDE.
- Install ESP32 on the Arduino IDE as shown below, and you can refer to this link.
- File -> Preferences -> Additional Boards Managers URLs -> Add the following links:
https://espressif.github.io/arduino-esp32/package_esp32_dev_index.json
- Enter the development board manager, search for "esp32", select version 3.0.0-alpha3 under "esp32 by Espressif Systems" below, and reboot it after installation.
3. Open the Arduino IDE and note that Tools in the menu bar selects the corresponding Flash (8MB) and enables PSRAM (8MB OPI), as shown in the following figure.
Library Installation
- TFT_SPI and lvgl libraries require configuration files after installation. It's recommended to directly copy the ESP32_Display_Panel, ESP32_IO_Expander, lvgl file, ESP_Panel_Conf.h, and lv_conf.h file of the [ ESP32-S3-Touch-LCD-4.3_libraries] to "C:\Users\xxxx\Documents\Arduino\libraries". Please note that "xxxx" represents your computer username.
- After copying:
Sample Demo
Arduino
UART_Test
Take UART_Test as an example, UART_Test can be used for testing UART interface. This interface can connect to GPIO43(TXD) and GPIO44(RXD) as UART0.
- After programming the code, connect the USB to Type-C cable to the "UART" Type-C interface. Open the serial port debugging assistant, and send a message to ESP32-S3-Touch-LCD-7, ESP32-S3-Touch-LCD-7 will return the received message to the serial port debugging assistant. Note that you need to select the correct COM port and baud rate. Check "AddCrLf" before sending the message.
Sensor_AD
Sensor_AD example is used to testing the usage of the Sensor AD socket. This interface connects to GPIO6 for ADC usage and can be connected to Sensor kits and so on.
- After burning the code, connect the Sensor AD socket to "HY2.0 2P to DuPont male head 3P 10cm". You can then open the serial port debugging assistant to observe the data read from the AD pin. "ADC analog value" represents the analog value read from the ADC, while "ADC millivolts value" represents the ADC value converted to millivolts.
- When shorting the AD pin with the GND pin, the reading value is as shown in the diagram below:
- When shorting the AD pin with the 3V3 pin, the reading value is as shown in the figure below:
I2C_Test
I2C_Test example is for "Test I2C socket", scanning all I2C device addresses.
- After uploading the demo, connect the I2C device (here we use BME680 environmental sensor and the corresponding pins of the ESP32-S3-Touch-LCD-7, open Sscom5.13.1, select the baud rate as 115200, and open the corresponding COM port for communication. (please turn off the COM port of the ESP-IDF first, otherwise, the serial port can not be opened due to the occupied COM port.)
- Press the Reset key on the ESP32-S3-Touch-LCD-7, and the SSCOM will print the information, and input "i2cdetect" as shown below, if "77" is printed, the I2C socket test pass.
RS485_Test
RS485_Test example is for testing RS-485 socket.
- After uploading the code, connect USB TO RS485 and ESP32-S3-Touch-LCD-7 pins A and B. After connecting USB TO RS485 to the computer, open the SSCOM and select the corresponding COM port communication.
- Select 115200 baud rate as shown in the figure below, send any character and it will be displayed in loopback, the RS485 socket test passed.
TWAItransmit (CAN transmit)
TWAItransmit example is for testing CAN socket, and this interface can connect to GPIO20(TXD) and GPIO19(RXD) for CAN communication.
- After programming the code, using the "HY2.0 2P to DuPont male head 2P red-black 10cm" cable, and connect the CAN H and CAN L pins of the Esp32-s3-touch-lcd-7 to the USB-CAN-A.
- Once you open the serial port debugging assistant, you should observe that the Esp32-s3-touch-lcd-7 has started sending CAN messages.
- Connect the USB-CAN-A to the computer and open the USB-CAN-A_TOOL_2.0. Select the corresponding COM port, set the baud rate to 2000000 as shown in the image, and set the CAN baud rate to 50.000Kbps. This configuration will allow you to view the CAN messages sent by the Esp32-s3-touch-lcd-7.
TWAIreceive (CAN receive)
TWAIreceive example is for testing CAN socket, and this interface can connect to GPIO20(TXD) and GPIO19(RXD) for CAN communication.
- After uploading the code, use the "HY2.0 2P to DuPont male head 2P red-black 10cm" cable to connect the CAN H and CAN L pins of the ESP32-S3-Touch-LCD-7 to the USB-CAN-A.
- Connect the USB-CAN-A to the computer and open the USB-CAN-A_TOOL_2.0. Select the corresponding COM port, set the port baud rate to 2000000 as indicated in the image, and set the CAN baud rate to 500.000Kbps. With these settings, you'll be able to send CAN messages to the Esp32-s3-touch-lcd-7.
- Open the serial port debugging assistant, and you should observe that the Esp32-s3-touch-lcd-7 has started receiving CAN messages. If there are any reception errors, try resetting the devices multiple times and restarting the software. Please be patient and allow some time for the reception process.
lvgl_Porting
lvgl_Porting example is for testing RGB touch screen.
- After uploading the code, you can try to touch it. Also, we provide LVGL porting examples for users (If there's no screen response after burning the code, check if the Arduino IDE -> Tools settings are correctly configured: choose the corresponding Flash (8MB) and enable PSRAM (8MB OPI)).
DrawColorBar
DrawColorBar example is for testing RGB screen.
- After uploading the code, you should observe the screen displaying bands of blue, green, and red colors. If the screen shows no response after burning the code, check if the Arduino IDE -> Tools settings are correctly configured: choose the corresponding Flash (8MB) and enable PSRAM (8MB OPI).
ESP-IDF
UART_Test
UART_Test example is for testing UART Interface. This interface connects GPIO43(TXD) and GPIO44(RXD) for UART0.
- After uploading the code, connect the USB to Type C cable to the "UART" Type C interface, open the serial debugging assistant, and send a message to ESP32-S3-Touch-LCD-7. ESP32-S3-Touch-LCD-7 will return the received message to the serial debugging assistant. Make sure to select the correct COM port and baud rate, and check "AddCrLf" before sending the message.
Sensor_AD
Sensor_AD example is for testing Sensor AD socket. This interface connects to GPIO6 for use as an ADC, allowing access to devices such as the Sensor Kit.
- After uploading the code, connect the sensor AD socket to "HY2.0 2P to DuPont male header 3P 10cm". You can then open the serial debugging assistant to observe the data read from the AD pin. The "ADC analog value" represents the read analog value of the ADC, while the "ADC millivolts value" represents the millivolt value converted from the ADC reading.
- Short the AD pin and GND pin, reading the value as shown below:
- Short the AD pin and 3.3V pin, as shown below:
I2C_Test
I2C_Test example is for testing I2C interface, scanning all device addresses of I2C.
After uploading the code, connect the I2C device (in this case, using the BME680 Environmental Sensor) to the corresponding pins on the ESP32-S3-Touch-LCD-7. Then, open the serial debugging assistant, select a baud rate of 115200, and choose the corresponding COM port for communication (make sure to close the ESP-IDF's COM port first, as it may occupy the COM port and prevent the serial port from opening).
File:ESP32-S3-Touch-LCD-7-113.png
- Press the Reset button of ESP32-S3-Touch-LCD-7, SSCOM will print the message, enter i2cdetect as shown in the following figure, it will print 77, and the I2C socket test passes.
File:ESP32-S3-Touch-LCD-7-114.png
twai_network_master
twai_network_master example is for testing CAN socket.
- After uploading the code, use the "HY2.0 2P to DuPont male head 2P red-black 10cm" cable to connect the CAN H and CAN L pins of the ESP32-S3-Touch-LCD-7 to the USB-CAN-A.
- Connect the USB-CAN-A to the computer and open the USB-CAN-A_TOOL_2.0. Select the corresponding COM port, set the port baud rate to 2000000 as shown in the image, and set a custom baud rate of 25.000Kbps (adjusting phase buffer 1 and phase buffer 2 if necessary).
- Pressing the Reset button on the ESP32-S3-Touch-LCD-7 causes data to be printed in the data field of USBCANV2.0, confirming the successful test of the CAN socket.
demo1
demo1 example is for testing the display effect of the screen.
Resource
Support
Technical Support
If you need technical support or have any feedback/review, please click the Submit Now button to submit a ticket, Our support team will check and reply to you within 1 to 2 working days. Please be patient as we make every effort to help you to resolve the issue.
Working Time: 9 AM - 6 PM GMT+8 (Monday to Friday)