ESP32-S3-Touch-LCD-4.3
| ||
Overview
Introduction
ESP32-S3-Touch-LCD-4.3 is a microcontroller development board with 2.4GHz WiFi and BLE 5 supports and integrates high-capacity Flash and PSRAM. The onboard 4.3-inch capacitive touch screen can smoothly run GUI demos such as LVGL. Combined with various peripheral interfaces (CAN interface, I2C interface、RS485 port and Sensor interface, etc.), it is suitable for the quick development of the HMI and other ESP32-S3 applications such as IoT, mobile devices and smart homes.
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 an onboard antenna.
- Built-in 512KB of SRAM and 384KB ROM, with onboard 8MB PSRAM and 8MB Flash.
- Onboard 4.3inch capacitive touch display, 800×480 resolution, 65K color.
- Supports capacitive touch control via I2C interface, 5-point touch with interrupt support.
- Onboard CAN, RS485, I2C interface, and TF card slot, integrate full-speed USB port.
- Supports flexible clock, module power supply independent setting, and other controls to realize low power consumption in different scenarios.
Hardware Description
Onboard Interface
- UART Port : Use CH343P chip for USB to UART for connecting the UART_TXD(GPIO43) and UART_RXD(GPIO44) pin of the ESP32-S3. which is for firmware programming and log printing.
- USB Connector: GPIO19(DP) and GPIO20(DN) are the USB pins of ESP32-S3, which can be connected the cameras with UVC protocol. For more details about the UVC driver, you can refer to this link.
- Sensor interface: This interface is connected to GPIO6 as ADC, which can be connected to sensor kit.
- CAN Interface: can be used as a USB interface too, you can switch CAN/USB with the FSUSB42UMX chip. The USB interface is used by default (when the USB_SEL pin of FSUSB42UMX is set to LOW).
- I2C interface: ESP32-S3 provides multi-lane hardware, currently uses GPIO8(SDA) and GPIO9(SCL) pins as I2C bus for loading IO expansion chip, touch interface and I2C interface.
- RS485 interface: the development board onboard RS485 interface circuits for directly connecting to RS485 device communication, and support automatic switching of RS485 circuit transceiver mode.
- PH2.0 battery header: The development board utilizes the efficient charge and discharge management chip CS8501. It can boost a single-cell lithium battery to 5V. Currently, the charging current is set at 580mA, and users can modify the charging current by replacing the R45 resistor. For more details, you can refer to schematic diagram.
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-4.3 comes with an onboard automatic download circuit. The Type C port, marked UART, is used for program downloads and logging. Once the program is downloaded, run it by pressing the RESET button.
- Please keep other metals or plastic material away from the PCB antenna area during use.
- The development board uses a PH2.0 connector to extend ADC, CAN, I2C, and RS485 peripheral pins. Utilize a PH2.0 to 2.54mm DuPont male connector to link sensor components.
- As the 4.3-inch screen occupies most GPIO pins, you can use a CH422G chip to expand IO for functions like reset and backlight control.
- The CAN and RS485 peripheral interfaces connect to a 120ohm resistor using jumper caps by default. Optionally, connect NC to cancel the termination resistor.
- The SD card employs SPI communication. 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 PSRAM] 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 can improve 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.
- The CH422G of the board occupies the following slave address with the touch, do not use I2C devices with the same address:
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
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
- Download and install Arduino IDE.
- Install ESP32 on the Arduino IDE as shown below, and you can refer to this link.
- Download it from this link.
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.
- After copying:
Sample Demo
Arduino
Configure as shown below before using the screen:
Dev Board selects ESP32S3 DEV Module Flash Size selects 8MB(64Mb) PSRAM selects OPI PSRAM
- Before using the Arduino example, the software library should be set as shown below:
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-4.3. ESP32-S3-Touch-LCD-4.3 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 testing I2C socket, and this interface can connect to GPIO8(SDA) and GPIO9(SCL) for I2C communication.
- Using this example for driving the BME680 environment sensor, and before editing, you need to install the "BME68x Sensor library" through LIBRARY MANAGER.
- After programming the code, the I2C socket is connected to "HY2.0 2P to DuPont male head 4P 10cm" and connected to the BME680 environmental sensor. This sensor is capable of detecting temperature, humidity, atmospheric pressure, and gas levels. By opening the serial port debugging assistant, you can observe: ① for temperature (°C), ② for atmospheric pressure (Pa), ③ for relative humidity (%RH), ④ for gas resistance (ohms), and ⑤ for the sensor's status.
RS485_Test
RS485_Test example is for testing RS-485 socket, and this interface can connect to GPIO15(TXD) and GPIO16(RXD) for RS485 communication.
- This demo require USB TO RS485 (B). After programming the code, the RS-485 socket can connect to USB TO RS485 (B) through a "HY2.0 2P to DuPont male head 2P 10cm" and then connect it to the PC.
- Open the serial port debugging assistant and send an RS485 message to ESP32-S3-Touch-LCD-4.3. The ESP32-S3-Touch-LCD-4.3 will return the received message to the serial port debugging assistant. Ensure to select the correct COM port and baud rate. Before sending the message, check "AddCrLf" to add a carriage return and line feed.
SD_Test
The SD_Test example is used to testing the SD card socket. Before using it, insert an SD card.
- After flashing the code, the ESP32-S3-Touch-*LCD-4.3 will recognize the type and size of the SD card and proceed with file operations such as creating, deleting, modifying, and querying files.
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 the CAN H and CAN L pins of the ESP32-S3-Touch-LCD-4.3 to the USB-CAN-A.
- Once you open the serial port debugging assistant, you should observe that the Esp32-s3-touch-lcd-4.3 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-4.3.
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 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.
- 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.
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) 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-4.3. ESP32-S3-Touch-LCD-4.3 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 flashing the demo, connect the I2C device (in this case, using the BME680 Environmental Sensor) to the corresponding pins on the ESP32-S3-Touch-LCD-4.3. 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-4.3, 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 flashing the code, connect the USB to RS485 to the A and B pins of the ESP32-S3-Touch-LCD-4.3. 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-4.3 to the CAN H and CAN L pins of USB-CAN-A.
- Open the SSCOM, you can see the Esp32-s3-touch-lcd-4.3 starts to send 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-4.3.
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-4.3 to the CAN H and CAN L pins of USB-CAN-A.
- Connects 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-4.3.
- Open the Serial Debug Assistant, where you can see that the Esp32-s3-touch-lcd-4.3 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
- ESP-IDF
- arduino-esp32
- Schematic diagram
- ESP32 Arduino Core's documentation
- ESP32-S3-Touch-LCD-4.3 3D Drawing
Video
Demo
Software
Datasheet
- TJA1051
- CH343 Datasheet
- ESP32-S3 Series Datasheet
- ESP32-S3 Wroom Datasheet
- ST7262 Datasheet
- GT911 Datasheet
- CH422G Datasheet
FAQ
① Restart the COM port in UCANV2.0.exe and press the ESP32-S3-Touch-LCD-4.3 reset button multiple times.
② Uncheck DTR and RTS in the serial port debugging assistant.
{{{5}}}
If there's no screen response after programming the code, check whether the correct configurations are set in Arduino IDE -> Tools: Choose the corresponding Flash (8MB) and enable PSRAM (8MB OPI).
{{{5}}}
Check if the ESP32-S3-Display-libraries is installed. Please refer to installation steps.
{{{5}}}
I can't retrieve the library file because the path to install the library is in Chinese.
{{{5}}}
Please refer to the following steps:
- 1. Please download the provided library files and demo code.
- 2. Video for library installation and Arduino IDE tools configuration.
{{{5}}}
You can directly connect the type C cable to charge the battery.
{{{5}}}
1. Please download the library file and sample file first.
2. Install the library and Arduino IDE tools, and you can click here to see how to configure it.
The LCD controller is the ST7262E43, and the Touch controller is the GT911.
{{{5}}}
Socket straight pin plug-in PH2.0-2P white with lock.
{{{5}}}
This should be because you did not release the interrupt after use. You can initialize it before use and release it when not in use to prevent interrupt conflicts.
However, I need to look into whether the interrupt can be directly occupied.
1. The 4.3-inch screen does not set the CAN interrupt. Normally, you can use the screen to send CAN signals.
You may have done something unnecessary and set up an extra CAN interrupt. However, the specific problem depends on how his code is written. You can send it to us for analysis.
2. If you must use the interrupt, please release it. CAN itself does not need an interrupt. It is just an example interrupt, for reference only.
{{{5}}}
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)