我的板卡:微雪 ESP32-S3-Touch-LCD-1.28
用户已确认现已换成 ESP32-S3-Touch-LCD-1.28,继续使用本页 Touch 目标。之前提供的无 Touch 板资料不适用于背光和显示引脚。更换物理板卡后,旧板的烧录成功记录不代表新板已写入程序。
本教程的主力板卡是你已有的 Waveshare ESP32-S3-Touch-LCD-1.28(带 Touch 的型号)。Zephyr v4.2.0 已包含该板专用配置,无需先自行移植。
固定编译目标
esp32s3_touch_lcd_1_28/esp32s3/procpu
板卡名称为 esp32s3_touch_lcd_1_28,SoC 为 esp32s3,主核为 procpu。不要再使用旧教程的经典 ESP32 目标,也不要混用外观相似的无 Touch 型号。
已核对的硬件连接
| 功能 | 本板配置 |
|---|---|
| 主控 / 存储 | ESP32-S3,16 MB Flash,2 MB PSRAM |
| USB 接口 | Type-C,通过 CH343P 转 UART0 |
| 默认串口 | GPIO43 TX / GPIO44 RX,115200 波特率 |
| 屏幕 | GC9A01A,240×240,SPI |
| 背光 | GPIO2;Zephyr 别名 pwm-lcd0,LEDC 通道 0 |
| 触摸 | CST816S;I²C SDA GPIO6 / SCL GPIO7,INT GPIO5,RST GPIO13 |
| BOOT | GPIO0;与 RESET 配合进入下载模式 |
这些连接以微雪硬件资料及 v4.2.0 的板卡 DTS / pinctrl 为依据。板上有传感器不代表每项功能已在本教程验证。
为什么改成背光实验
v4.2.0 这块板的 DTS 没有普通 GPIO LED 的 led0 别名,但有 pwm-lcd0。因此先跑 Hello World,再控制屏幕背光;不要直接构建普通 samples/basic/blinky,也不需要为了点灯先接外部 LED。
背光是照明,屏幕图像需要另一套显示初始化。Hello World 没有显示逻辑,屏幕没有新画面是正常的,应以串口输出判断。
板卡文件和应用工程的关系
Zephyr 的板卡定义位于工作区的 zephyr/boards/,本项目选择的是:
~/Projects/zephyr-workspace/zephyr/boards/waveshare/esp32s3_touch_lcd_1_28/
这里的 DTS 和 pinctrl 文件描述 GPIO、LEDC 背光、LCD、触摸、UART 和 Flash 等硬件连接。构建时通过 -b 选择板卡和处理器核:
-b esp32s3_touch_lcd_1_28/esp32s3/procpu
应用工程位于 applications/,例如:
~/Projects/zephyr-workspace/applications/waveshare-backlight/
├── CMakeLists.txt
├── prj.conf
├── app.overlay
└── src/main.c
其中 main.c 是程序逻辑,prj.conf 开启功能,app.overlay 只为当前应用覆盖设备树。本项目的背光 overlay 将 PWM 输出限制到 GPIO2,并设置实验所需的 PWM 周期;它不会替换整块板卡定义。
完整构建命令把两者合并到独立的构建目录:
cd ~/Projects/zephyr-workspace/zephyr
west build -p always -b esp32s3_touch_lcd_1_28/esp32s3/procpu \
../applications/waveshare-backlight -d build/waveshare-backlight
最终生成的 build/waveshare-backlight/zephyr/zephyr.bin 才是交给 west flash 烧录的固件。修改板卡 DTS、驱动、应用源码或配置后,必须重新执行 west build;west flash 只烧录现有构建结果。
本机状态
2026-09-18:已用 Python 3.12.14、SDK 0.17.2 和 Zephyr v4.2.0 为该目标成功编译、烧录,并从串口观察到 Hello World 启动输出。