
ESP32-S3-Touch-LCD-4.3C 是微雪 (Waveshare) 低成本高性能开发板,集成 2.4GHz WiFi、BLE5、大容量 Flash 与 PSRAM,板载 4.3 英寸电容触摸 LCD,可流畅运行 LVGL GUI,搭载 ES8311 音频编解码器与 ES7210 四通道 ADC,支持语音采集与播放,并提供丰富 I2C、宽电压 IO 等接口,适用于 IoT、移动设备与智能家居等应用。



ESP32-S3-Touch-LCD-4.3C 支持 Arduino IDE 和 ESP-IDF 两种开发框架,为开发者提供灵活的选择,您可以根据项目需求和个人偏好选择合适的开发工具。
两种开发方式各有优势,开发者可根据自身需求和技能水平选择。Arduino 简单易学、上手快,适合初学者和非专业人士;ESP-IDF 则提供更高级的开发工具和更强的控制能力,适合有专业背景或对性能要求较高的开发者,更适用于复杂项目开发。
Arduino IDE 是一款便捷灵活、易于上手的开源电子原型平台。无需太多基础知识,简单学习后即可快速开发。Arduino 拥有庞大的全球用户社区,提供海量开源代码、项目示例和教程,以及丰富的库资源,封装了复杂功能,让开发者能够快速实现各种功能。您可以参考 Arduino IDE 开发环境搭建教程 完成初始设置,教程中同时提供了相关示例程序供参考。
ESP-IDF 全称 Espressif IoT Development Framework,是乐鑫科技为 ESP 系列芯片推出的专业开发框架。它基于 C 语言开发,包含编译器、调试器、烧录工具等,支持命令行或集成开发环境(如 Visual Studio Code 配合 Espressif IDF 插件)开发,插件提供代码导航、项目管理、调试等功能。我们推荐使用 VS Code 进行开发,具体配置过程可参考 ESP-IDF (VS Code) 开发环境搭建教程,教程中同时提供了相关示例程序供参考。
请参考 安装和配置 Arduino IDE 教程 下载安装 Arduino IDE 并添加 ESP32 支持。
要运行示例,需要安装对应的库。
可从 此链接 下载 ESP32-S3-Touch-LCD-4.3C 开发板的示例程序包。包内的 arduino\libraries 目录已包含本教程所需的全部库文件。
| 库或文件名称 | 说明 | 版本 | 安装方式 |
|---|---|---|---|
| lvgl | LVGL 图形库 | v8.4.0 | 通过库管理器或手动安装 |
| lv_conf.h | LVGL 配置文件 | —— | 手动安装 |
LVGL 及其驱动库的版本之间存在较强的依赖关系。例如,为 LVGL v8 编写的驱动可能不兼容 LVGL v9。为确保示例能够稳定复现,推荐使用上表列出的特定版本。混合使用不同版本的库可能导致编译失败或运行时异常。
安装步骤:
进入已下载的 示例程序包。
将其 arduino\libraries 目录下的所有文件夹(lvgl 和 lv_conf.h 等)复制到 Arduino 的库文件夹中。
Arduino 库文件夹的路径通常是:c:\Users\<用户名>\Documents\Arduino\libraries。
也可以在 Arduino IDE 中通过 文件 > 首选项,查看“项目文件夹位置”来定位。库文件夹就是此路径下的 libraries 文件夹。
其他安装方式请参考:Arduino 库管理教程。

Arduino 示例程序位于 示例程序包 的 arduino/examples 目录中。
| 示例程序 | 基础例程说明 | 依赖库 |
|---|---|---|
| 01_i2c | 测试 I2C 功能 | - |
| 02_rtc | 测试 RTC 功能 | - |
| 03_lcd | 测试 LCD 功能 | - |
| 04_isolation_io | 测试 ISOLATION_IO 功能 | - |
| 05_sd | 测试 SD 卡 | - |
| 06_touch | 测试显示屏触控功能 | - |
| 07_display_bmp | 测试 SD 卡图片显示 | - |
| 08_wifi_scan | 扫描附近 WIFI,并显示 WIFI 名 | - |
| 09_wifi_sta | 测试 STA 功能 | - |
| 10_wifi_ap | 测试 AP 功能 | - |
| 11_speaker_microphone | 测试麦克风拾音功能和喇叭播放功能 | - |
| 12_lvgl_transplant | LVGL demo 测试 | LVGL |
| 13_lvgl_btn | 画一个按钮,控制 GPIO 工作 | LVGL |
| 14_lvgl_slider | 画一个滑动条,控制背光和 GPIO 输出,并显示电池电压 | LVGL |
| 15_udp_tcp_ntp | 实现 UDP/TCP 通信,并实现 NTP 时间同步 | LVGL |
本示例演示如何通过 I2C 控制 IO 扩展芯片,从而周期性控制 LCD 背光的开关,形成闪烁效果。
setup():
loop():
本示例演示如何使用板载 PCF85063 RTC 芯片,实现实时时钟显示与闹钟提醒功能。
setup():
loop():
打开串口调试助手向 ESP32-S3-Touch-LCD-4.3C 发送消息,该设备会将收到的消息返回给串口调试助手

本示例演示如何初始化 LCD 并显示各种图形、文本和图片。
setup() :
Paint_NewImage() :
Paint_DrawRectangle() :
Paint_DrawString_EN() :
本示例通过显示器验证隔离 IO 功能是否正常。

setup() :
Serial.begin(115200) :
DEV_I2C_Init() :
IO_EXTENSION_Init() :
本示例通过显示器输出 SD 卡的挂载情况
setup() :
sd_mmc_init() :
read_sd_capacity() :
sd_mmc_unmount() :
烧录成功后,屏幕显示 SD 卡容量 ,若没插上 SD 卡则显示* SD Card Fail!

本示例演示了如何使用 5 点触摸。
setup() :
touch_gt911_read_point() :
waveshare_rgb_lcd_display() :
烧录成功后,可以实现五点触摸功能。
07_display_bmp
本示例展示了如何从 SD 卡读取并显示 BMP 图片。
setup() :
list_files(const char *base_path) :
sd_mmc_init() :
touch_gt911_init() :
GUI_ReadBmp() :
烧录成功后,左/右导航箭头区域可以切换显示上一张或下一张 BMP 图片并更新导航箭头绘制。

本示例演示了在屏幕上显示扫描到的 WiFi 名称(无法显示中文 WiFi 名)。
setup() :
wifi_scan_init() :
wifi_scan() :
烧录成功后,在屏幕上显示扫描到的 WiFi 名称。

本示例展示了如何使用屏幕显示连接热点的 IP 信息
setup() :
wifi_sta_init(USER_SSID, USER_PASS) :
烧录成功后,连接成功或失败后更新屏幕右侧显示 IP 地址、Wi-Fi 名称等信息或连接失败消息。

本示例展示了如何使用屏幕显示热点的连接情况,会在屏幕上显示连接设备的 MAC 地址
setup() :
wifi_ap_init(USER_SSID, USER_PASS) :
wifi_ap_StationNum() :
wifi_ap_StationMac(station_mac, i) :
烧录成功后,会显示 wifi 设备的连接数量和 MAC 地址。

本示例演示了通过触摸屏实现实现录音和播放功能。
setup() :
play_or_pause(bool play) :
codec_init() :
mic_i2s_read() / speaker_i2s_write() :
烧录成功后,当点击指定区域时切换录音/播放相应操作,实现录音和播放功能。
12_lvgl_transplant
本示例演示了 LVGL 移植。
setup() :
lv_demo_widgets() :
烧录成功后,显示 lvgl 的示例程序

setup() :
lvgl_btn() :
btn_event_cb(lv_event_t * e) :
烧录成功后,会在屏幕中间显示一个按钮,打开串口监视器,进行交互操作时,监视器会输出“Button Pressed.”。

setup() :
loop() :
lvgl_slider() :
slider_event_cb(lv_event_t * e) :
bat_cb(lv_timer_t * timer) :
烧录成功后,显示滑动控件和电量信息,可以通过滑动组件控制图片亮度。

setup() :
ui_init() 加载界面,并创建 wifi_connect_task 任务进行后台联网与对时。loop() :
lvgl_port_lock 确保线程安全地更新屏幕上的时间显示标签。wifi_connect_task() :
烧录成功后,屏幕显示系统初始化信息,联网成功后将通过 NTP 获取并实时刷新显示当前日期与时间。

以下说明以 Windows 10/11 为主。macOS / Linux 请参阅 Espressif 官方指南: https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/get-started/index.html
安装 Visual Studio Code: https://code.visualstudio.com/
在 VS Code 中安装 ESP-IDF 扩展(扩展视图 Ctrl+Shift+X,搜索 ESP-IDF 并安装)。
安装完成后,侧栏会出现 Espressif 图标,打开后选择 Configure ESP-IDF Extension,进入配置向导。
建议使用快速(Express)配置,按需选择:
点击 Install 开始自动下载与安装 ESP-IDF、工具链和创建 Python 虚拟环境,等待安装完成提示即可。
若安装失败或需重装,可尝试删除 C:\Users\%Username%\esp 与 C:\Users\%Username%\.espressif 后重试。
ESP-IDF 示例程序包 位于 examples/esp-idf 中
下面给出每个示例的目的、要点说明与运行效果(以便快速上手)。
| 示例程序 | 基础例程说明 | 依赖库 |
|---|---|---|
| 01_i2c | 使用 I2C 控制 IO 扩展芯片,从而周期性控制 LCD 背光的开关,形成闪烁效果。 | - |
| 02_rtc | 使用板载 RTC 芯片,实现实时时钟显示与闹钟提醒功能。 | - |
| 03_lcd | 初始化 LCD 并显示各种图形、文本和图片。 | - |
| 04_isolation_io | 通过显示器验证隔离 IO 功能是否正常。 | - |
| 05_sd | 通过显示器输出 SD 卡的挂载情况。 | - |
| 06_touch | 演示了如何使用 5 点触摸。 | - |
| 07_display_bmp | 展示了如何从 SD 卡读取并显示 BMP 图片。 | - |
| 08_wifi_scan | 扫描附近 Wi-Fi 并在屏幕显示 SSID 列表。 | - |
| 09_wifi_sta | 以 STA 模式连接 AP 并显示 IP 信息。 | - |
| 10_wifi_ap | 使用屏幕显示热点的连接情况,显示连接设备的 MAC 地址。 | - |
| 11_speaker_microphone | 录音与播放示例(codec、I2S)。 | - |
| 12_lvgl_transplant | LVGL 移植并运行官方 demo。 | LVGL |
| 13_lvgl_codec | LVGL 与音频结合示例。 | LVGL |
| 14_tcp_udp_ntp | 展示 TCP/UDP 通信与 NTP 时间同步示例。 | LVGL |
本示例演示如何通过 I2C 控制 IO 扩展芯片,从而周期性控制 LCD 背光的开关,形成闪烁效果。
i2c_config_t 结构体定义 SDA/SCL 引脚及频率,并调用 i2c_driver_install 注册驱动。i2c_master_write_to_device 向扩展芯片发送控制指令,利用位运算修改特定引脚的电平状态。本示例演示板载 PCF85063 的时间读写与闹钟功能。
串口或屏幕显示当前时间;闹钟触发时输出提示信息。

本示例演示 LCD 初始化与基础绘制流程,验证 RGB LCD 显示链路与帧缓冲刷新。
esp_lcd_new_rgb_panel 创建面板句柄,配置 RGB 接口时序参数以适配 4.3 寸屏幕的分辨率。MALLOC_CAP_SPIRAM 标志在外部 PSRAM 中分配 Framebuffer,解决高分辨率显示对 SRAM 占用过大的问题。本示例验证隔离 IO 功能。

本示例演示 SD 卡 挂载与文件系统访问,并在屏幕上显示挂载状态与基础信息。
fopen)访问 FATFS 分区。屏幕提示挂载成功/失败,并显示卡容量、文件列表或测试文件读写结果。

本示例演示触摸控制器驱动与 5 点触摸 读取,验证触摸坐标与屏幕坐标映射。
烧录成功后,显示 5 点触摸读取,并根据触点坐标实时绘制圆形。
07_display_bmp
本示例从 SD 卡读取 BMP 文件并显示到屏幕,验证文件读取、解码与显示刷新链路。
屏幕显示 SD 卡中的 BMP 图片;串口输出图片信息与加载耗时。

本示例扫描周围 Wi‑Fi 热点并在屏幕上展示 SSID/RSSI/加密方式 等信息。
true 或 false。本示例以 STA 模式连接指定 AP,并在屏幕上显示连接状态与 IP 信息。
屏幕显示连接成功与分配到的 IP;断开时提示重连状态。

本示例启用 SoftAP 热点,并在屏幕上显示连接设备信息(如 MAC、连接数量)。

本示例演示音频采集与播放链路,包含 麦克风录音 与 扬声器播放(Codec + I2S)。
可听到回放音频;串口输出录音/播放状态与音频参数。12_lvgl_transplant
本示例完成 LVGL 基础移植,验证显示驱动、触摸输入与 LVGL 刷新流程,并运行官方 demo。

本示例将 LVGL UI 与音频功能结合,演示 UI 控制音量/播放状态等交互。
屏幕显示音频控制界面并可操作;播放状态与音量变化实时生效。

本示例演示基础网络通信(TCP/UDP)与 NTP 对时流程,验证网络栈与时间同步功能。
localtime 等时间相关接口提供正确的基础时间。串口输出连接信息;使用网络调试助手设置对应 IP 地址和端口号,可以进行基本数据交互;并且屏幕显示网络状态与当前时间。

应用程序包括:squareline 示例、手写测试、图片显示、音乐播放、AI 对话、设置(WLAN、声音调节、背光调节、电池电压跟 CPU 温度获取和隔离 IO 测试)和麦克风测试。
简单说明一下每个程序的使用跟功能。
图片显示、音乐播放测试需要将 .\firmware\sdcard 中的两个文件夹复制到 SD 卡中,SD 卡的文件系统必须为 FAT32 格式,否则点击图标会重启系统。
此示例直接跑一下 squareline 的 demo





此示例测试触摸屏是否正常

此示例是读取 SD 卡中的图片文件进行显示

此示例是播放 SD 卡中的音乐,可以通过右边的喇叭按键调节声音大小

此示例运行小智 AI,配置好小智后,对他说:“返回应用界面”,就可以回到桌面

此示例中有一些小部件,简单介绍一下
此部件演示 WIFI 功能,具体操作如下:

此部件演示声音调节跟亮度调节功能

此部件展示 CPU 温度跟当前电池电压

此部件展示隔离 IO 的测试,需要将 DI0 连接 DO0,DI1 连接 DO1

此示例测试麦克风是否正常,拾音并通过动画显示出来

如果刷了其他程序无法测试,可以通过下面的方法恢复出厂设置
需要会使用 Flash Tool,不会可以点击此链接学习
将 .\firmware\ESP32-S3-Touch-LCD-4.3C-Test.bin 添加到 Flash Tool 中,烧录地址为 0x00
将开发板连接到电脑,通过设备管理器查看 COM 口,然后在 Flash Tool 选择对应的 COM,点击开始即可,等待烧录成功后,摁下 RESET 按键即可

①. 添加固件文件
②. 输入烧录地址
③. 选择开发板的 COM
④. 开始烧录
⑤. 烧录完成
开发板设计文件
ESP32-S3 芯片官方手册
板载器件数据手册
周一-周五(9:30-6:30)周六(9:30-5:30)
手机:13434470212
邮箱:services04@spotpear.cn
QQ:202004841
