ESP32-S3-Touch-LCD-4.3教程

说明

产品简介

ESP32-S3-Touch-LCD-4.3 是一款微雪 (Waveshare) 设计的低成本,高性能的微控制器开发板。其支持 2.4GHz WiFi 和 BLE 5,集成大容量 Flash 和 PSRAM,板载 4.3 英寸电容触摸LCD屏,可流畅运行 LVGL 等 GUI 界面程序;结合多种外设接口(如:CAN、I2C、RS485和Sensor等接口),快速开发 ESP32-S3 的 HMI 等应用。多种功能与接口满足在物联网 (IoT)、移动设备、智能家居等应用场景的功耗需求。

产品特性

  • 搭载高性能 Xtensa 32 位 LX7 双核处理器,主频高达 240MHz
  • 支持 2.4 GHz Wi-Fi (802.11 b/g/n) 和 Bluetooth 5 (LE),板载天线
  • 内置 512KB SRAM 和 384KB ROM,叠封 8MB Flash 和 8MB PSRAM
  • 板载 4.3 英寸电容触摸屏,800 × 480 分辨率,65K 彩色
  • 支持 I2C 接口控制电容触摸,5 点触控,支持中断
  • 板载 CAN、RS485、I2C 接口和 Micro SD 卡座等,集成全速 USB 串口
  • 支持灵活时钟,模块电源单独设置等精准控制,实现多场景低功耗模式

硬件说明

接口说明


  • UART 接口 :使用 CH343P 芯片用于 USB 转 UART 连接 ESP32-S3 的 UART_TXD(GPIO43),UART_RXD(GPIO44) ,用于固件烧录和日志打印
  • USB 接口:GPIO19(DP) GPIO20(DN) 默认作为 ESP32-S3 的 USB 引脚 ,接口可以使用 UVC 等协议摄像头,UVC驱动请查阅连接
  • Sensor 接口:此接口连接 GPIO6 作 ADC 使用,可以接入 Sensor套件等器件
  • CAN 接口:CAN 接口引脚和 USB 接口引脚复用,使用 FSUSB42UMX 芯片切换,默认使用 USB 接口(FSUSB42UMX的USB_SEL引脚为LOW时)
  • I2C 接口:ESP32-S3 提供多路硬件 I2C ,目前使用 GPIO8(SDA),GPIO9(SCL) 引脚做 I2C 总线挂载 IO 扩展芯片、触摸接口,I2C接口
  • RS485 接口:开发板板载 RS485 接口电路,可直接接入 RS485 设备进行通信,RS485电路收发模式自动切换
  • PH2.0 电池接口:开发板使用高效充放电管理芯片 CS8501 ,可将单节锂电池升压到 5V ,目前充电电流为 580mA,用户可更换 R45 电阻更改充电电流,详情请查阅原理图
引脚连接
ESP32-S3-WROOM-xLCDUSBSDUARTCANSensor
GPIO0G3
GPIO1R3
GPIO2R4
GPIO3VSYNC
GPIO4TP_IRQ
GPIO5DE
GPIO6AD
GPIO7PCLK
GPIO8TP_SDA
GPIO9TP_SCL
GPIO10B7
GPIO11MOSI
GPIO12SCK
GPIO13MISO
GPIO14B3
GPIO15RS485_TX
GPIO16RS485_RX
GPIO17B6
GPIO18B5
GPIO19USB_DNCANRX
GPIO20USB_DPCANTX
GPIO21G7
GPIO38B4
GPIO39G2
GPIO40R7
GPIO41R6
GPIO42R5
GPIO43UART_TXD
GPIO44UART_RXD
GPIO45G4
GPIO46HSYNC
GPIO47G6
GPIO48G5
CH422G------
EXIO1TP_RST
EXIO2DISP
EXIO3LCD_RST
EXIO4SD_CS
EXIO5USB_SEL(LOW)USB_SEL(HIGH)

硬件连接


  • 开发板板载自动下载电路,UART 丝印处 Type C 端口用于程序下载和日志打印,下载程序后,按 RESET 按键运行程序
  • 使用时注意 PCB 天线区域,避免其它金属,塑料件贴合 PCB 天线
  • 开发板使用 PH2.0 座子引出 ADC ,CAN,I2C,RS485 外设引脚,使用 PH2.0 转 2.54mm 杜邦公头配件连接传感器件
  • 4.3inch 屏幕占用绝大多数 GPIO,开发板使用 CH422G 芯片扩展 IO,用于复位,关闭打开背光等
  • CAN 和 RS485 外设默认使用跳冒连接 120 欧姆电阻,可选 NC 取消终端电阻连接
  • SD 卡使用 SPI 通信,注意 SD_CS 引脚需要由 CH422G 的 EXIO4 驱动

其它说明

  • 目前在 ESP-IDF v5.3 下使用单核跑 LVGL benchamark 示例的平均帧率上限为 26, 对应接口帧率为 41 (PCLK 21 MHz),编译前需要通过menuconfig 对ESP32 跟 LVGL进行配置:
CONFIG_FREERTOS_HZ=1000
CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
CONFIG_ESPTOOLPY_FLASHMODE_QIO=y
CONFIG_ESPTOOLPY_FLASHFREQ_120M=y [需要与 PSRAM 保持一致]
CONFIG_SPIRAM_MODE_OCT=y
CONFIG_IDF_EXPERIMENTAL_FEATURES=y and CONFIG_SPIRAM_SPEED_120M=y [需要与 FLASH 保持一致]
CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y
CONFIG_SPIRAM_RODATA=y
CONFIG_ESP32S3_DATA_CACHE_LINE_64B=y
CONFIG_COMPILER_OPTIMIZATION_PERF=y
#以下 LVGL 配置项对帧率提升有帮助 (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
  • 详细 LCD 及 LVGL 性能说明,请参考文档
  • PH2.0 锂电池座子只支持单节 3.7V 锂电池,勿使用多组电池包同时接入充放电,建议单节容量在 2000mAH 以下
  • 板子的CH422G跟触摸占用了如下的从机地址,请勿使用相同地址的I2C设备:
    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: -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -

产品尺寸

环境设置

ESP32 系列开发板的软件框架成熟,可使用 C/C++(Arduino,ESP-IDF),MicroPython 等进行快速开发产品原型,以下简要介绍:

  • 乐鑫官方的 C/C++ 库方便快速安装,中国大陆用户遇到下载问题请查看FAQ解决
    • ESP32系列 的 Arduino 开发手册
    • ESP32系列 的 ESP-IDF 开发手册
  • 环境设置是在 Windows 10 系统下进行,用户可以选择使用 Arduino 或 Visual Studio Code(ESP-IDF) 作为 IDE 进行开发,Mac/Linux 操作系统用户请参考官方说明

ESP-IDF

  • 推荐使用VSC插件进行开发

使用VSCode插件开发

安装VSCode

  1. 打开VSCode官网的下载页面,选择对应系统和系统位数进行下载
  2. 运行安装包后,其余均可以默认安装,但这里为了后续的体验建议,建议在此处勾选框中的1、2、3项
    • 第一二项开启后,可以直接通过鼠标右键文件或者目录打开VSCode,可以提高后续的使用体验.
    • 第三项开启后,选择打开方式时,可以直接选择VSCode

安装Espressif IDF插件

  • 注:当前插件最新版本为V1.7.1,为体验一致,用户可以选择与我们一样的版本
  1. 打开VSCode,使用快捷键Shift+Ctrl+X,进入插件管理器
  2. 在搜索栏中,输入Espressif IDF,选择对应的插件点击 install即可
  3. 使用快捷键F1,输入
    esp-idf: configure esp-idf extension

  4. 选择express(此教程针对第一次安装的用户,故只讲述初次的通用安装教程)

  5. 打开后显示该界面
  6. 选择下载服务器,我们推荐国内用户使用Espressif作为你的下载服务器
  7. 选择想要现在的ESP-IDF版本,我们选择最新的V5.3(注意ESP-IDF从V4.4版本后才开始支持ESP32-S3)
  8. 下面两个分别为ESP-IDF容器安装地址和ESP-IDF所需的工具安装地址,
    • 注意:如果之前有安装过ESP-IDF,或者失败过的,请务必彻底删除文件或者创建全新的无中文路径
  9. 配置完成后,点击 install 进行下载


  10. 进入下载页面,其会自动安装对应工具与环境,稍等片刻即可,安装完成后,会进入以下界面,说明安装完成
离线包
  • 如果出现无法下载esp-idf,可以尝试离线包(提取码:1w3r),工具包还是需要在线下载
  • 下载后双击运行,填入你指定的位置,按照如下操作:


  1. 比如我安装在F盘的esp文件夹中,设置好路径后,点击Extract,开始解压:
  2. 解压完成后,创建一个存放编译工具的文件夹在解压后的文件夹中,名为Espressif

  3. 然后进入到安装Espressif IDF插件的第7点,我们按照下图进行设置,随后点击安装:

  4. 等待出现下图显示,即按照成功:

使用官方例程

创建例程
  1. 使用快捷键F1,输入
    esp-idf:show examples projects
    



  2. 选择你当前的IDF版本

  3. 以Hello world例程为例

  4. ①选择对应例程
  5. ②其readme会说明该例程适用于什么芯片(下文有介绍例程怎么使用与文件结构,这里略)
  6. ③点击创建例程
  7. 选择放置例程的路径,要求无例程同名文件夹
修改COM口
  1. 左下角第一项显示使用对应的COM口,点击可以修改对应COM口
  2. 我们的CH343的COM为COM5,所以我们选择COM5,请根据自己CH343对应COM口进行选择
  3. 选择使用的工程或者例程
  4. 然后我们的COM口就修改好了
修改驱动对象
  1. 左下角第二项显示的是使用的驱动对象,点击可以修改对应驱动对象
  2. 选择使用的工程或者例程
  3. 点击后需要稍等片刻
  4. 选择我们需要驱动的对象,也就是我们的主芯片为ESP32S3

  5. 选择openocd的路径,这里对我们没有影响,所以我们随便选择一个即可

其余状态栏简介

  • ①SDK 配置编辑器,ESP-IDF很多功能与配置可以在其内修改
  • ②全部清理,清空所有编译文件,
  • ③编译
  • ④当前下载方式,默认为UART
  • ⑤烧录当前固件,请在编译后进行
  • ⑥打开串口监视器,用于查看串口信息
  • ⑦编译,烧录,打开串口监视器 一体按键(调试时最常用)
编译、烧录、串口监视
  1. 点击我们之前介绍的 编译,烧录,打开串口监视器按键
  2. 编译可能需要较长时间才能完成,尤其是在第一次编译时。
    • 在此过程中,ESP-IDF可能会占用大量CPU资源,因此可能会导致系统卡顿。
  3. 因为我们使用的是CH343为USB转串口芯片,并且板载自动下载电路,无需手动操作即可自动下载
  4. 下载成功后,自动进入串口监视器,可以看到芯片输出对应的信息并提示10S后重启


Arduino

1. 下载安装Arduino IDE,注意默认配置及全英文路径
2. Arduino IDE 安装 ESP32 库,详细安装过程如下,相关资料请点击链接参考

  • 中国大陆安装:

1. 下载离线包esp32.exe(提取码:cpr1) 后双击安装,设置好arduino器件包目录:

C:\Users\{用户名}\AppData\Local\Arduino15\packages\

以用户名为waveshare为例

C:\Users\waveshare\AppData\Local\Arduino15\packages\

2. 安装完离线包后,打开 Arduino IDE,在 File->Preferences 下 Settings 界面的 Additional boards manager URLs 处填写下面链接后保存

https://arduino.me/packages/esp32.json


3.在开发板管理器里面搜索ESP32,如果出现3.0.2 已安装,则离线包安装成功

库安装

  • lvgl 库安装后需要配置文件,建议直接使用ESP32_S3_Display_libraries中的ESP32_Display_Panel,ESP32_IO_Expander,lvgl 文件夹与lv_conf.h文件复制到 C:\Users\xxxx\Documents\Arduino\libraries 目录下,xxxx 代表您电脑上用户名,注意甄别


  • 复制完如下:


示例程序

Arduino

注意:在使用Arduino例程前,请先检查Arduino IDE环境与下载设置是否正确配置,具体操作可查看Arduino环境配置

使用屏幕时,Arduino IDE要配置如下参数:

开发板选择ESP32S3 DEV Module
Flash Size 设置成 8MB(64Mb)
PSRAM 设置成 OPI PSRAM
  • 使用Arduino示例需要确保软件库满足以下条件:
    • 使用我们提供的库文件
    • 安装v3.0.2-h的Arduino esp32
    • Arduino IDE的用户名必须是英文,出现中文会导致无法找到对应文件

如果安装的Arduino esp32的版本不同,可能会出现报错,推荐安装我们提供的版本去进行测试与开发。

UART_Test

UART_Test 示例,用于测试UART 接口的使用,此接口连接GPIO43(TXD)、GPIO44(RXD) 作 UART0 使用

  • 烧录代码后,USB to Type C线接入“UART”Type C接口,打开串口调试助手,送消息给ESP32-S3-Touch-LCD-4.3,ESP32-S3-Touch-LCD-4.3会把收到的消息返回给串口调试助手,注意需要选择正确的COM口和波特率,发送消息前勾选“加回车换行/AddCrLf”


Sensor_AD

Sensor_AD 示例,用于测试Sensor AD 座子的使用,此接口连接 GPIO6 作 ADC 使用,可以接入 Sensor套件等器件

  • 烧录代码后,Sensor AD座子连接“HY2.0 2P 转杜邦公头 3P 10cm”,可打开串口调试助手观察AD引脚读取的数据,ADC analog value为读取的ADC模拟值,ADC millivolts value为ADC转化的毫伏值
  • 将AD引脚与GND引脚短接,读取的值如下图所示:


  • 将AD引脚与3V3引脚短接,读取的值如下图所示:


I2C_Test

I2C_Test 示例,用于测试I2C 座子的使用,此接口连接GPIO8(SDA)、GPIO9(SCL) 作 I2C通讯 使用

  • 使用该例程驱动BME680环境传感器,编译前需要通过LIBRARY MANAGER->安装“BME68x Sensor library”库
  • 烧录代码后,I2C座子连接“HY2.0 2P 转杜邦公头 4P 10cm”,连接BME680环境传感器,可检测温度、湿度、大气压、气体,打开串口调试助手,可看到①为温度(℃),②为大气压(Pa),③为相对湿度(%RH),④为气体阻值(ohms),⑤为状态


RS485_Test

RS485_Test 示例,用于测试RS-485 座子的使用,此接口连接GPIO15(TXD)、GPIO16(RXD) 作 RS485通讯 使用

  • 烧录代码后,该例程需要使用到USB转RS485转换器,RS-485 座子连接“HY2.0 2P 转杜邦公头 2P 10cm”,再连接USB转RS485转换器,USB转RS485转换器连接电脑
  • 打开串口调试助手,发送RS485消息给ESP32-S3-Touch-LCD-4.3,ESP32-S3-Touch-LCD-4.3会把收到的消息返回给串口调试助手,注意需要选择正确的COM口和波特率,发送消息前勾选“加回车换行/AddCrLf”


SD_Test

SD_Test 示例,用于测试SD卡座的使用,需先插入SD卡,烧录代码后对SD卡进行读写操作

  • 烧录代码后,ESP32-S3-Touch-LCD-4.3会识别SD卡的类型和大小,再对进行文件的增删改查


TWAItransmit

TWAItransmit 示例,用于测试CAN卡座的使用,此接口连接GPIO20(TXD)、GPIO19(RXD) 作 CAN通讯 使用

  • 烧录代码后,使用 “HY2.0 2P 转杜邦公头 2P 红黑 10cm” 线缆对应连接 ESP32-S3-Touch-LCD-4.3 和 USB-CAN-A 的 CAN H 和 CAN L引脚
  • 打开串口调试助手,可以看到Esp32-s3-touch-lcd-4.3已经开始发送CAN消息
  • USB-CAN-A 连接电脑,打开USB-CAN-A_TOOL_2.0 上位机,选择对应COM口, 按下图所示 2000000 端口波特率,CAN波特率 50.000Kbps,即可看到Esp32-s3-touch-lcd-4.3发送的CAN消息


TWAIreceive

TWAIreceive 示例,用于测试CAN卡座的使用,此接口连接GPIO20(TXD)、GPIO19(RXD) 作 CAN通讯 使用

  • 烧录代码后,使用 “HY2.0 2P 转杜邦公头 2P 红黑 10cm” 线缆对应连接 ESP32-S3-Touch-LCD-4.3 和 USB-CAN-A 的 CAN H 和 CAN L引脚
  • USB-CAN-A 连接电脑,打开USB-CAN-A_TOOL_2.0 上位机,选择对应COM口, 按下图所示 2000000 端口波特率,CAN波特率 500.000Kbps,即可发送CAN消息至Esp32-s3-touch-lcd-4.3


  • 打开串口调试助手,可以看到Esp32-s3-touch-lcd-4.3已经开始接收CAN消息(若接收报错,可多进行几次复位与软件重新开启设备,耐心等待)


lvgl_Porting

lvgl_Porting 示例,用于测试RGB触摸屏幕的使用

  • 烧录代码后,可进行一系列触屏操作,是可供用户LVGL移植的例程(若烧录代码后,屏幕无反应,可查看是否有在Arduino IDE -> Tools正确配置:选择对应 Flash(8MB) 和使能 PSRAM(8MB OPI))
  • 此处运行的是LVGL的demo,底层使用的是ESP Display Panel,常见问题可以点击此处查看:英文链接 中文链接

DrawColorBar

DrawColorBar 示例,用于测试RGB屏幕的使用

  • 烧录代码后,可观察屏幕显示蓝色、绿色、红色的色带(若烧录代码后,屏幕无反应,可查看是否有在Arduino IDE -> Tools正确配置:选择对应 Flash(8MB) 和使能 PSRAM(8MB OPI))

ESP-IDF

注意:在使用ESP-IDF例程前,请先检查ESP-IDF环境与下载设置是否正确配置,具体操作可查看ESP-IDF环境配置

UART_Test

UART_Test 示例,用于测试UART 接口的使用,此接口连接GPIO43(TXD)、GPIO44(RXD) 作 UART0 使用

  • 烧录代码后,USB to Type C线接入“UART”Type C接口,打开串口调试助手,送消息给ESP32-S3-Touch-LCD-7,ESP32-S3-Touch-LCD-7会把收到的消息返回给串口调试助手,注意需要选择正确的COM口和波特率,发送消息前勾选“加回车换行/AddCrLf”


Sensor_AD

Sensor_AD 示例,用于测试Sensor AD 座子的使用,此接口连接 GPIO6 作 ADC 使用,可以接入 Sensor套件等器件

  • 烧录代码后,Sensor AD座子连接“HY2.0 2P 转杜邦公头 3P 10cm”,可打开串口调试助手观察AD引脚读取的数据,ADC analog value为读取的ADC模拟值,ADC millivolts value为ADC转化的毫伏值
  • 将AD引脚与GND引脚短接,读取的值如下图所示:


  • 将AD引脚与3V3引脚短接,读取的值如下图所示:


I2C_Test

I2C_Test 示例,用于测试I2C 座子的使用,扫描各种I2C设备的地址

  • 烧录代码后,连接 I2C设备(本文使用BME680 Environmental Sensor) 和 ESP32-S3-Touch-LCD-7 对应引脚,打开串口调试助手 选择 115200 波特率打开选择对应 COM 口通信(可先将ESP-IDF的COM口关闭,否则会占用COM口导致无法打开串口)


  • 按下 ESP32-S3-Touch-LCD-7 的 Reset 按键,SSCOM 会打印信息,按如下图所示输入 i2cdetect ,则会打印 77,I2C 座子测试通过


RS485_Test

RS485_Test 示例,用于测试RS 485座子的使用

  • 烧录代码后,对应连接 USB TO RS485 和 ESP32-S3-Touch-LCD-7 的 A 和 B 引脚,USB TO RS485 连接电脑后打开 串口调试助手 选择对应 COM 口通信
  • 按如下图所示选择 115200 波特率,发送任意字符则会回环显示,RS485座子测试通过


TWAItransmit

TWAItransmit 示例,用于测试CAN卡座的使用,此接口连接GPIO20(TXD)、GPIO19(RXD) 作 CAN通讯 使用

  • 烧录代码后,使用 “HY2.0 2P 转杜邦公头 2P 红黑 10cm” 线缆对应连接 ESP32-S3-Touch-LCD-7 和 USB-CAN-A 的 CAN H 和 CAN L引脚
  • 打开串口调试助手,可以看到Esp32-s3-touch-lcd-7已经开始发送CAN消息
  • USB-CAN-A 连接电脑,打开USB-CAN-A_TOOL_2.0 上位机,选择对应COM口, 按下图所示 2000000 端口波特率,CAN波特率 50.000Kbps,即可看到Esp32-s3-touch-lcd-7发送的CAN消息


TWAIreceive

TWAIreceive 示例,用于测试CAN卡座的使用,此接口连接GPIO20(TXD)、GPIO19(RXD) 作 CAN通讯 使用

  • 烧录代码后,使用 “HY2.0 2P 转杜邦公头 2P 红黑 10cm” 线缆对应连接 ESP32-S3-Touch-LCD-7 和 USB-CAN-A 的 CAN H 和 CAN L引脚
  • USB-CAN-A 连接电脑,打开USB-CAN-A_TOOL_2.0 上位机,选择对应COM口, 按下图所示 2000000 端口波特率,CAN波特率 500.000Kbps,即可发送CAN消息至Esp32-s3-touch-lcd-7


  • 打开串口调试助手,可以看到Esp32-s3-touch-lcd-7已经开始接收CAN消息(若接收报错,可多进行几次复位与软件重新开启设备,耐心等待)

lvgl_Porting

lvgl_Porting 示例,用于测试RGB触摸屏幕的使用

  • 烧录代码后,可进行一系列触屏操作,是可供用户LVGL移植的例程
  • RGB LCD驱动可以参考此链接
  • GT911驱动可以参考此链接

FAQ

问题:ESP32-S3-Touch-LCD-4.3 CAN接收失败?

①重新启动UCANV2.0.exe中COM口,多按几次ESP32-S3-Touch-LCD-4.3复位键
②将串口调试助手上的“DTR”、“RTS”的勾选去掉


问题:ESP32-S3-Touch-LCD-4.3 烧录RGB屏幕显示的Arduino程序后无反应?

若烧录代码后,屏幕无反应,可查看是否有在Arduino IDE -> Tools正确配置:选择对应 Flash(8MB) 和使能 PSRAM(8MB OPI))


问题:ESP32-S3-Touch-LCD-4.3 烧录Arduino的RGB屏幕程序编译不通过、报错?

检查是否有安装库ESP32-S3-Display-libraries,请参考安装步骤


问题:为什么库都是安装好的,烧录lvgl程序报错缺少lv_cong.h?

安装库的路径出现中文导致检索不到库文件


问题:为什么屏幕没显示或者例程编译出错、超时?

可以参考以下步骤:


技术支持

周一-周五(9:30-6:30)周六(9:30-5:30)

手机:13434470212

邮箱:services04@spotpear.cn

QQ:202004841