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 with interrupt support.
- Onboard CAN, RS485, I2C interface, Micro 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
Interface 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, touch interfaces and I2C interface.
- 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 Interface: 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.
Pin ConnectionESP32-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
#The following LVGL configuration option is for improving the 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 PH2.0 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.
- Please note that the CH422G of the board and touch functionality has used the following slave addresses, so do not use the I2C devices with the same slave addresses as below:
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: - - - - - - - - - - - - - - - -
10: - - - - - - - - - - - - - - - -
20: 20 21 22 23 24 25 26 27 - - - - - - - -
30: 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f
40: - - - - - - - - - - - - - - - -
50: - - - - - - - - - - - - - - 5d -
60: - - - - - - - - - - - - - - - -
70: - - - - - - - - - - - - - - - -
Dimensions
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.
- 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
- It is recommended to develop with the VSC plug-in.
Develop with VSCode Plug-in
Install VSCode
- 1. Open the download page of the official VSCode website, and select the corresponding system and system bit to download.
- 2. After running the installation package, the rest can be installed by default, but here for the subsequent experience, it is recommended to check boxes 1, 2, and 3.
- After the first and second items are enabled, you can open VSCode directly by right-clicking files or directories, which can improve the subsequent user experience.
- After the third item is enabled, you can select VSCode directly when you choose how to open it.
Install Espressif IDF Plug-in
- Note: The latest version of the current plug-in is V1.7.1, for a consistent experience, users can choose the same version as us.
- 1. Open VSCode and use the shortcut key Shift + Ctrl + X to enter the plugin manager.
- 2. In the search bar, type Espressif IDF, select the corresponding plug-in, and click install.
- 3. Press F1 to enter:
esp-idf: configure esp-idf extension
- 4. Choose express (This tutorial is for first-time users, so only the first general installation tutorial is covered.)
- 5. Open and display this screen.
- 6. Choose a server to download.
- 7. Select the ESP-IDF version you want now, we choose the latest V5.3 (note that ESP-IDF started to support ESP32-S3 only after V4.4).
- 8. The following two are the ESP-IDF directory installation address and the ESP-IDF required tools installation address respectively.
- Note: If you have installed ESP-IDF before, or if it has failed, please make sure to delete the file completely or create a new path.
- 9. Once the configuration is finished, click "install" to download.
- 10. After the installation is completed, it will enter the following screen, indicating that the installation is finished.
Offline Package
- If it fails to download "esp-idf", you can try this offline package while the tool package should be downloaded online first.
- Double-click on it after downloading, and then type the path as shown below:
- 1. Click on "Extract" to unzip the package:
- 2. After unzipping, create a file folder to store the compile tool in the unzipped file folder named "Espressif".
- 3. Enter the seventh STEP in the installation process of the Espressif IDF, we can set it according to the following picture and then click on "Install":
- 4. It is successfully installed as shown below:
Official Demo
Create Demo
- 1. Using the shortcut F1, type:
esp-idf:show examples projects
- 2. Choose your current IDF version:
- 3. Take "Hello World" as an example:
- 4. ① Choose the corresponding demo.
- 5. ② The readme file will explain which chip the demo is suitable for (the following section will introduce how to use the demo and its file structure, which is omitted here).
- 6. ③ Click to create the demo.
- 7. Choose the path to place the demo and ensure that there is no folder with the same name as the demo.
Modify COM Port
- 1. The corresponding COM port is displayed here, click on it to modify.
- 2. We check the device manager COM port, and select COM5, please select your corresponding COM port:
- 3. Choose the project and demo.
- 4. Then the COM port is modified.
Modify the Driver
- 1. Here shows the driver used, click here to modify the corresponding driver:
- 2. Choose the project or demo:
- 3. Wait for a few seconds after clicking.
- 4. Choose the driver we need, that is, the main chip ESP32S3.
- 5. Choose the openocd path, we can just choose one at random as it doesn't matter.
The Rest of the Status Bar Introduction
- ① SDK configuration editor: many functions and configurations of ESP-IDF can be modified within it.
- ② Clean up everything and delete all compiled files.
- ③ Compile.
- ④ Current download method, default is UART.
- ⑤ Program the current firmware, please do it after compiling.
- ⑥ Open the serial monitor to view serial information.
- ⑦ Combined button for compiling, programming, and opening the serial monitor (most commonly used during debugging).
Compile, Program, and Serial Port Monitoring
- 1. Click on the Compile, Program, and Open Serial Monitor buttons we described earlier.
- 2. It may take a long time to compile, especially for the first time.
- During this process, ESP-IDF may take up a lot of CPU resources and therefore may cause system lag.
- 3. Because we use CH343 as a USB to serial port chip, and the on-board automatic download circuit, it can be downloaded automatically without manual operation.
- 4. After successful download, it will automatically enter the serial monitor, and you can see the corresponding information output from the chip and prompt to reboot after 10s.
Arduino
C:\Users\{username}\AppData\Local\Arduino15\packages\
- Take username "waveshare" as an example:
C:\Users\waveshare\AppData\Local\Arduino15\packages\
- After installation, open Arduino IDE, open File -> Preferences -> Seetting, input the following link at Additional boards manager URLs and save it:
https://arduino.me/packages/esp32.json
- Search esp32 on Board Manager to install, if 3.0.2 is installed, the offline package is installed.
Library Installation
- 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_Display_libraries to "C:\Users\xxxx\Documents\Arduino\libraries". Please note that "xxxx" represents your computer username.
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.
Configure as shown below before using the screen:
Flash Size sets as 8MB(64Mb)
PSRAM sets as OPI PSRAM
- Before using the Arduino example, the software library should be set as shown below:
- Using the library file we provided.
- Install v3.0.2-h for Arduino esp32.
- The username of Arduino IDE must be English!
If you install a different version of Arduino esp32, there may be errors, we recommend installing the version we provide for testing and development.
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 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 ADC analog value read, 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, used to test the use of I2C sockets, this interface connects to GPIO8 (SDA) and GPIO9 (SCL) for I2C communication.
- Use this demo to scan all slave addresses of I2C devices.
- After uploading the demo, connects "HY2.0 2P to DuPont Male 4P 10cm" to the I2C socket. Then connect to the I2C device, open SSCOM, and you can see the scanned I2C addresses.
RS485_Test
RS485_Test example is for testing RS-485 socket. This interface connects to GPIO15 (TXD) and GPIO16 (RXD) for RS485 communication.
- After uploading the code, the demo needs to use the USB TO RS485 converter, connect the RS-485 socket to the "HY2.0 2P to Dupont male 2P 10cm", and then connected to the USB to RS485 converter, USB to RS485 converter connected to the computer.
- Open the SSCOM, send RS485 messages to the ESP32-S3-Touch-LCD-7, ESP32-S3-Touch-LCD-7 will send the received message back to the SSCOM, pay attention to the need to select the correct COM port and baud rate, check "AddCrLf " before sending a message.
SD_Test
SD_Test is for testing the SD card slot. First, insert the SD card, upload the demo, and then read/write the SD card.
- After uploading the demo, ESP32-S3-Touch-LCD-7 will recognize the type and size of the SD card, and then you can operate the files on the SD card:
TWAItransmit
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 Esp32-s3-touch-lcd-7 to the CAN H and CAN L pins of the USB-CAN-A.
- Once you open the serial port debugging assistant, you can 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, set the CAN baud rate to 50.000Kbps, and you can view the CAN messages sent by the Esp32-s3-touch-lcd-7.
TWAIreceive
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 ESP32-S3-Touch-LCD-7 to the CAN H and CAN L pins of 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 make a series of touch screen operation. 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)).
- Here runs the LVGL demo, the bottom layer uses ESP Display Panel, and for FAQ, you can click here to see.
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.
UART_Test
UART_Test example is for testing UART Interface. This interface connects GPIO43(TXD) and GPIO44(RXD) as UART0.
- After uploading the code, connect the USB to Type C cable to the "UART" Type C interface, open the serial debugging assistant(SSCOM), 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 to prevent the serial port from opening).
- 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.
RS485_Test
RS485_Test is for testing the RS485 socket.
- After uploading the code, connect the USB to RS485 to the A and B pins of the ESP32-S3-Touch-LCD-7. After connecting the USB to RS485 to the computer, open the SSCOM and select the corresponding COM port for communication.
- Choose a baud rate of 115200 as shown in the diagram below. Sending any character will result in a loopback display. Testing of the RS485 socket has passed.
TWAItransmit
TWAItransmit example is for testing CAN socket. This interface can connect GPIO20 (TXD) and GPIO19 (RXD) for CAN communication.
- After uploading the demo, you can use the "HY2.0 2P to DuPont male head 2P red-black 10cm" cable to connect the ESP32-S3-Touch-LCD-7 to the CAN H and CAN L pins of USB-CAN-A.
- Open the SSCOM, and you can see the Esp32-s3-touch-lcd-7 starts to send the CAN message.
- Connect the USB-CAN-A to the computer, open USB-CAN-A-Tool-2.0, select the corresponding COM port, 2000000 as the baud rate, 50.000Kbps as the CAN baud rate, and then you can see the CAN message sent from the ESP32-S3-Touch-LCD-7.
TWAIreceive
TWAIreceive example is for testing CAN socket. This interface can connect GPIO20 (TXD) and GPIO19 (RXD) for CAN communication.
- After uploading the demo, you can use the "HY2.0 2P to DuPont male head 2P red-black 10cm" cable to connect the ESP32-S3-Touch-LCD-7 to the CAN H and CAN L pins of USB-CAN-A.
- Connect the USB-CAN-A to the computer, open USB-CAN-A-Tool-2.0, select the corresponding COM port, 2000000 as the baud rate, 500.000Kbps as the CAN baud rate, and then you can see the CAN message is sent to the ESP32-S3-Touch-LCD-7.
- Open the Serial Debug Assistant, where you can see that the Esp32-s3-touch-lcd-7 has started receiving CAN messages. If there are reception errors, try resetting the device multiple times and restarting the software. Please be patient and wait for the process to complete.
lvgl_Porting
lvgl_Porting example is for testing RGB touch screen.
- After uploading the code, you can test the touching on the screen, and the demo also supports LVGL porting for users.
- For RGB LCD driver, you can refer to this link.
- For GT911 driver, you can refer to this link.
Resource
Document
Demo
Software
Datasheet
Support