ESP32-S3-Touch-LCD-7

From Waveshare Wiki
Jump to: navigation, search
ESP32-S3-Touch-LCD-7
ESP32-S3-Touch-LCD-7.jpg

ESP32-S3-N8R8
Type C USB
{{{name2}}}

{{{name3}}}

{{{name4}}}

{{{name5}}}

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.
  • 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

ESP32-S3-TOUCH-LCD-7-04.png

  • 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.
Pinout
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

File:ESP32-S3-Touch-LCD-7-10.png

  • 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 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:

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:
    • ESP32 series Arduino development tutorial.
    • ESP32 series ESP-IDF development tutorial.
  • 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.)
  • 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

ESP32-C6-DEV-KIT-N8-Arduino01.png

  • 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

ESP32-C6-DEV-KIT-N8-Arduino04.png
ESP32-C6-DEV-KIT-N8-Arduino05.png

  • 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.

ESP32-C6-DEV-KIT-N8-Arduino07.png
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.
ESP32-S3-Touch-LCD-4.3-Ar02.jpg

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.

ESP32-S3-Touch-LCD-7-Lib.jpg

  • After copying:

ESP32-S3-Touch-LCD-7-Lib02.jpg

Sample Demo

Arduino

Note: Before using the Arduino demos, please check whether the Arduino IDE environment and download settings are correctly configured, for details, please check the Arduino Configure.

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.
ESP32-S3-Touch-LCD-4.3-UART-test.png

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:

ESP32-S3-Touch-LCD-4.3-Sensor-test.png

  • When shorting the AD pin with the 3V3 pin, the reading value is as shown in the figure below:

ESP32-S3-Touch-LCD-4.3-Sensor-test02.png

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.)

ESP32-S3-Touch-LCD-4.3-110.png

  • 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.

ESP32-S3-Touch-LCD-4.3-111.png

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.

ESP32-S3-Touch-LCD-4.3-UART-test.png

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.

ESP32-S3-Touch-LCD-4.3-PORtest01.png

  • Connect the USB-CAN-A to the computer and open the [USB-CAN-A_TOOL_2.0 upper computer software]. 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-4.3.

ESP32-S3-Touch-LCD-4.3-PORtest102.png

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-4.3 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-4.3.

ESP32-S3-Touch-LCD-4.3-PORtest03.png

  • Open the serial port debugging assistant, and you should observe that the Esp32-s3-touch-lcd-4.3 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.

ESP32-S3-Touch-LCD-4.3-PORtest04.png

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

Note: Before using ESP-IDF examples, please ensure that the ESP-IDF environment and download settings are correctly configured. You can refer to the ESP-IDF environment setting for specific instructions on how to check and configure them.

esp32-s3-lcd-4.3-b-i2c_tools

  • esp32-s3-lcd-4.3-b-i2c_tools example is used to test the I2C socket by scanning various I2C device addresses.
  • After uploading the code, connect the I2C device (for this example, we're using the BME680 Environmental Sensor) to the corresponding pins on the ESP32-S3-Touch-LCD-4.3. Open the serial port debugging assistant, select a baud rate of 115200, and open the corresponding COM port for communication (make sure to disable ESP-IDF's COM port first, as it might occupy the COM port and prevent serial port access).

ESP32-S3-Touch-LCD-4.3-110.png

  • Press the Reset key of the ESP32-S3-Touch-LCD-4.3, SSCOM prints message, input "i2cdetect" as shown below. "77" is printed, and the I2C socket test passes.

ESP32-S3-Touch-LCD-4.3-111.png

uart_echo

uart_echo example is for testing RS485 socket.

  • After uploading the code, connect the USB TO RS485 and ESP32-S3-Touch-LCD-4.3 through A and B pins. Open SSCOM to select the corresponding COM port for communication after connecting USB TO RS485 to the PC.
  • Select the baud rate as 115200 as shown below. When you send any character, it gets looped back and displayed. That's a good indication that the RS485 socket is working as expected.

ESP32-S3-Touch-LCD-4.3-UART-test.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-4.3 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).

ESP32-S3-Touch-LCD-4.3-113.png

  • Pressing the Reset button on the ESP32-S3-Touch-LCD-4.3 causes data to be printed in the data field of USBCANV2.0, confirming the successful test of the CAN socket.

ESP32-S3-Touch-LCD-4.3-PORtest02.png

demo1

demo1 example is for testing the display effect of the screen.