3.8 KiB
3.8 KiB
| ST7789 屏幕引脚 | ESP32-S3 CAM 物理 GPIO | 核心功能 | 备注(无冲突 / 安全) |
|---|---|---|---|
| SCL / SCK | GPIO12 | SPI 时钟 | 纯通用 IO,无板载功能 |
| SDA / MOSI | GPIO11 | SPI 数据 | 纯通用 IO,无板载功能 |
| CS | GPIO10 | 片选 | 纯通用 IO,无板载功能 |
| DC / RS | GPIO9 | 数据 / 命令 | 纯通用 IO,无板载功能 |
| RST | GPIO13 | 复位 | 纯通用 IO,无板载功能 |
| BL | GPIO14 | 背光控制 | 纯通用 IO,无板载功能 |
| VCC | 3.3V | 供电 | 严禁接 5V |
| GND | GND | 接地 | 必须共地 |
LCD_PIN_MOSI = 42 LCD_PIN_SCLK = 21 LCD_PIN_CS = 45 LCD_PIN_DC = 47 LCD_PIN_RST = 46 LCD_PIN_BL = 14
🚨 核心硬件问题分析(结合你的 ESP32-S3-CAM 引脚图)
根据你提供的开发板引脚图,我发现了3 个致命硬件问题,这直接导致屏幕无显示:
1. 「SPI 时钟 / 数据引脚与 USB 功能冲突」
你代码中使用的 GPIO19(SCLK) 和 GPIO20(MOSI),在你的 ESP32-S3-CAM 板上是USB_D + 和 USB_D- 引脚(看放大的引脚图)。
- 当你用 USB 线连接电脑供电 / 调试时,这两个引脚会被USB 控制器强制占用,无法作为 SPI 总线使用,导致 SPI 通信完全失败,屏幕无响应。
- 即使不接 USB,这两个引脚也有内部的 USB 电路,可能存在信号干扰,不适合做 SPI 高速信号。
2. 「背光引脚 GPIO38 与板载 SD 卡电路冲突」
你使用的 GPIO38(BL),在开发板上是SD 卡的 SD_CMD 引脚:
- 板载 SD 卡电路会给 GPIO38 加上拉 / 下拉电阻,你外接的背光信号会被干扰,导致背光无法正常点亮,屏幕一直黑屏。
- 即使背光勉强点亮,也可能因为信号冲突导致屏幕工作不稳定。
3. 「引脚选择不符合 ESP32-S3 的 SPI 硬件映射」
ESP32-S3 的硬件 SPI 有固定的映射关系,你之前的代码用了 SPI(1),但 GPIO19/20 根本不是硬件 SPI 的引脚,导致 SPI 无法初始化,无法发送任何数据。
✅ 修正方案:更换无冲突的引脚
根据你的开发板引脚图,为你重新选择一套无任何板载功能冲突、适合 SPI 的引脚,并修改代码:
表格
| 功能 | 原引脚 | 新引脚 | 新引脚说明 |
|---|---|---|---|
| SPI_SCLK | GPIO19 | GPIO12 | CAM_Y2,无板载功能,通用 GPIO |
| SPI_MOSI | GPIO20 | GPIO11 | CAM_Y3,无板载功能,通用 GPIO |
| SPI_CS | GPIO45 | GPIO10 | CAM_Y4,无板载功能,通用 GPIO |
| DC/RS | GPIO47 | GPIO9 | CAM_Y5,无板载功能,通用 GPIO |
| RST | GPIO21 | GPIO13 | CAM_PCLK,无板载功能,通用 GPIO |
| BL 背光 | GPIO38 | GPIO14 | CAM_HREF,无板载功能,通用 GPIO |
📋 最终定型无冲突引脚表(永久保存)
表格
| LCD 功能 | ST7789 引脚 | ESP32-S3 CAM 分配 GPIO | 冲突检查 | 状态 |
|---|---|---|---|---|
| SPI 时钟 | SCK/SCL | GPIO21 | 未被摄像头 / USB/SD 占用 | ✅ 安全 |
| SPI 数据 | MOSI/SDA | GPIO42 | 未被摄像头 / USB/SD 占用 | ✅ 安全 |
| 片选 | CS | GPIO45 | 未被摄像头 / USB/SD 占用 | ✅ 安全 |
| 数据 / 命令 | DC/RS | GPIO47 | 未被摄像头 / USB/SD 占用 | ✅ 安全 |
| 复位 | RST | GPIO46 | 未被摄像头 / USB/SD 占用 | ✅ 安全 |
| 背光 | BL | GPIO14 | 未被摄像头 / USB/SD 占用 | ✅ 安全 |
| 供电 | VCC | 3.3V | - | ✅ |
| 接地 | GND | GND | - | ✅ |