电子纸显示屏接线
电子纸显示屏接线
本节介绍 ESP32 与电子纸显示模块之间的硬件连接。正确的接线对于可靠的通信和显示操作至关重要。完成本节后,你将能够:
- 识别 Waveshare 电子纸显示屏的引脚功能
- 使用 SPI 接口将电子纸显示屏连接到 ESP32
- 理解每个连接引脚的作用
- 通过测试草图验证接线
开始本节前,请确保:
- 对 SPI 通信协议有基本了解
- 熟悉 ESP32 GPIO 引脚
- ESP32 开发板(推荐:ESP32 DevKit 或 XIAO ESP32-C3)
- Waveshare 电子纸显示屏(任意尺寸,推荐 2.13”)
- 杜邦线(母对母)
- 面包板(可选)
SPI 接口概览
Section titled “SPI 接口概览”电子纸显示屏通过 SPI(串行外设接口)与 ESP32 通信,这是一种使用四个主要信号的同步串行通信协议:
ESP32 ─────────────────────── 电子纸显示屏 │ ├── SCK(串行时钟)────────→ SCK ├── MOSI(主出从入)───────→ DIN ├── CS(片选)───────────→ CS └── DC(数据/命令)───────→ DC
附加信号: ├── RST(复位)──────────→ RST └── BUSY(忙信号)────────→ BUSY信号描述:
| 信号 | 方向 | 功能 |
|---|---|---|
| SCK | ESP32 → 显示屏 | 串行时钟信号 |
| MOSI/DIN | ESP32 → 显示屏 | 发送到显示屏的数据 |
| CS | ESP32 → 显示屏 | 低电平有效片选 |
| DC | ESP32 → 显示屏 | 数据(高电平)或命令(低电平) |
| RST | ESP32 → 显示屏 | 硬件复位 |
| BUSY | 显示屏 → ESP32 | 显示屏忙指示 |
Waveshare 2.13” 电子纸(推荐引脚分配):
| 电子纸引脚 | 描述 | ESP32 GPIO |
|---|---|---|
| VCC / 3.3V | 电源(3.3V) | 3.3V |
| GND | 地 | GND |
| DIN / MOSI | SPI 数据输入 | GPIO 23 |
| SCK / CLK | SPI 时钟 | GPIO 18 |
| CS | 片选 | GPIO 5 |
| DC | 数据/命令 | GPIO 17 |
| RST | 复位 | GPIO 16 |
| BUSY | 忙状态 | GPIO 4 |
注意:这些引脚分配可在软件中配置。以上使用的是 ESP32 最常见的默认配置。
XIAO ESP32-C3 的替代引脚映射:
| 电子纸引脚 | ESP32-XIAO C3 引脚 |
|---|---|
| VCC | 3.3V |
| GND | GND |
| DIN / MOSI | GPIO 3 |
| SCK / CLK | GPIO 2 |
| CS | GPIO 5 |
| DC | GPIO 4 |
| RST | GPIO 6 |
| BUSY | GPIO 7 |
步骤 1:准备硬件
Section titled “步骤 1:准备硬件”准备以下组件:
所需材料:- ESP32 开发板 × 1- Waveshare 电子纸显示屏(2.13")× 1- 母对母杜邦线 × 8- Micro USB 线 × 1- 面包板(可选,但有帮助)步骤 2:连接电源线
Section titled “步骤 2:连接电源线”首先连接电源和地:
ESP32 3.3V ──────────── 电子纸 VCCESP32 GND ──────────── 电子纸 GND警告:不要使用 5V!电子纸显示屏需要 3.3V 电源。连接 5V 可能永久损坏显示屏。
步骤 3:连接 SPI 数据线
Section titled “步骤 3:连接 SPI 数据线”连接 SPI 通信线:
ESP32 GPIO 23 ───────── 电子纸 DIN(MOSI)ESP32 GPIO 18 ───────── 电子纸 SCK(CLK)ESP32 GPIO 5 ───────── 电子纸 CSESP32 GPIO 17 ───────── 电子纸 DC步骤 4:连接控制线
Section titled “步骤 4:连接控制线”连接剩余的控制信号:
ESP32 GPIO 16 ───────── 电子纸 RSTESP32 GPIO 4 ───────── 电子纸 BUSY┌────────────────────────────────────────────────────────┐│ ESP32 DevKit ││ ││ 3.3V ──────────────────────────────────────────────────┼──→ VCC(电子纸)│ GND ──────────────────────────────────────────────────┼──→ GND(电子纸)│ GPIO 23(MOSI)────────────────────────────────────────┼──→ DIN│ GPIO 18(SCK)─────────────────────────────────────────┼──→ SCK│ GPIO 5 (CS)────────────────────────────────────────┼──→ CS│ GPIO 17(DC)──────────────────────────────────────────┼──→ DC│ GPIO 16(RST)────────────────────────────────────────┼──→ RST│ GPIO 4 (BUSY)──────────────────────────────────────┼──→ BUSY└────────────────────────────────────────────────────────┘接线后进行以下检查:
- VCC 连接到 3.3V(不是 5V)
- GND 已连接
- 所有 SPI 引脚连接到正确的 GPIO
- 无松动连接
- 杜邦线完全插入
上传此最小接线测试草图:
#include <SPI.h>
// 引脚定义#define EPD_CS 5#define EPD_DC 17#define EPD_RST 16#define EPD_BUSY 4
void setup() { Serial.begin(115200);
// 初始化控制引脚 pinMode(EPD_CS, OUTPUT); pinMode(EPD_DC, OUTPUT); pinMode(EPD_RST, OUTPUT); pinMode(EPD_BUSY, INPUT);
digitalWrite(EPD_CS, HIGH);
// 复位显示屏 digitalWrite(EPD_RST, LOW); delay(10); digitalWrite(EPD_RST, HIGH); delay(10);
// 检查 BUSY 信号 int busyState = digitalRead(EPD_BUSY); Serial.print("BUSY 引脚状态:"); Serial.println(busyState);
Serial.println("接线测试完成!");}
void loop() { // 此处无需操作}预期输出:
BUSY 引脚状态:1接线测试完成!问题 1:显示屏无显示
Section titled “问题 1:显示屏无显示”症状:
- 屏幕保持纯白或空白
- 上传草图后无可见变化
可能原因:
- 电源线接反
- 杜邦线松动
- 显示屏未供电
解决方案:
- 用万用表验证电源:检查电子纸排针上 VCC 和 GND 之间的电压(预期:约 3.3V)
- 检查所有杜邦线是否完全插入
- 验证 ESP32 已通电(USB 已连接,板载 LED 亮)
- 尝试重新插拔显示屏连接器
问题 2:显示屏显示局部更新伪影
Section titled “问题 2:显示屏显示局部更新伪影”症状:
- 残影或先前图像的痕迹
- 屏幕上的随机像素或线条
可能原因:
- BUSY 引脚未连接或配置错误
- 初始化时序问题
解决方案:
- 验证 BUSY 引脚连接
- 检查引脚分配是否与代码匹配
- 确保正确的初始化顺序(复位 → 等待 → 初始化)
问题 3:SPI 通信失败
Section titled “问题 3:SPI 通信失败”症状:
- 编译成功但显示屏无响应
- 串行监视器显示初始化错误
解决方案:
- 仔细检查所有 SPI 引脚连接
- 验证代码中的 GPIO 编号与物理连接一致
- 使用不同的 SPI 总线速度(较慢)进行测试
- ✅ 使用母对母杜邦线进行临时原型制作
- ✅ 保持线缆短(< 20cm)以避免信号衰减
- ✅ 在显示屏附近的 VCC 和 GND 之间添加 10µF 电容以确保稳定供电
- ❌ 避免在任何电子纸引脚上使用 5V
- ❌ 不要在 ESP32 通电时热插拔显示屏
- ❌ 在噪声环境中,BUSY 信号线不要超过 10cm
- 电子纸显示屏使用 SPI 接口——需要 6 个信号线(SCK、MOSI、CS、DC、RST、BUSY)加电源
- 仅使用 3.3V——电子纸显示屏不耐 5V
- 引脚分配可配置——GxEPD2 库允许自定义引脚映射
- BUSY 信号至关重要——显示屏需要时间完成内部刷新周期
- 在构建复杂应用前始终用测试草图验证接线