跳转到内容

电子纸显示屏接线

电子纸显示屏接线

本节介绍 ESP32 与电子纸显示模块之间的硬件连接。正确的接线对于可靠的通信和显示操作至关重要。完成本节后,你将能够:

  • 识别 Waveshare 电子纸显示屏的引脚功能
  • 使用 SPI 接口将电子纸显示屏连接到 ESP32
  • 理解每个连接引脚的作用
  • 通过测试草图验证接线

开始本节前,请确保:

  • 对 SPI 通信协议有基本了解
  • 熟悉 ESP32 GPIO 引脚
  • ESP32 开发板(推荐:ESP32 DevKit 或 XIAO ESP32-C3)
  • Waveshare 电子纸显示屏(任意尺寸,推荐 2.13”)
  • 杜邦线(母对母)
  • 面包板(可选)

电子纸显示屏通过 SPI(串行外设接口)与 ESP32 通信,这是一种使用四个主要信号的同步串行通信协议:

ESP32 ─────────────────────── 电子纸显示屏
├── SCK(串行时钟)────────→ SCK
├── MOSI(主出从入)───────→ DIN
├── CS(片选)───────────→ CS
└── DC(数据/命令)───────→ DC
附加信号:
├── RST(复位)──────────→ RST
└── BUSY(忙信号)────────→ BUSY

信号描述

信号方向功能
SCKESP32 → 显示屏串行时钟信号
MOSI/DINESP32 → 显示屏发送到显示屏的数据
CSESP32 → 显示屏低电平有效片选
DCESP32 → 显示屏数据(高电平)或命令(低电平)
RSTESP32 → 显示屏硬件复位
BUSY显示屏 → ESP32显示屏忙指示

Waveshare 2.13” 电子纸(推荐引脚分配)

电子纸引脚描述ESP32 GPIO
VCC / 3.3V电源(3.3V)3.3V
GNDGND
DIN / MOSISPI 数据输入GPIO 23
SCK / CLKSPI 时钟GPIO 18
CS片选GPIO 5
DC数据/命令GPIO 17
RST复位GPIO 16
BUSY忙状态GPIO 4

注意:这些引脚分配可在软件中配置。以上使用的是 ESP32 最常见的默认配置。

XIAO ESP32-C3 的替代引脚映射

电子纸引脚ESP32-XIAO C3 引脚
VCC3.3V
GNDGND
DIN / MOSIGPIO 3
SCK / CLKGPIO 2
CSGPIO 5
DCGPIO 4
RSTGPIO 6
BUSYGPIO 7

准备以下组件:

所需材料:
- ESP32 开发板 × 1
- Waveshare 电子纸显示屏(2.13")× 1
- 母对母杜邦线 × 8
- Micro USB 线 × 1
- 面包板(可选,但有帮助)

首先连接电源和地:

ESP32 3.3V ──────────── 电子纸 VCC
ESP32 GND ──────────── 电子纸 GND

警告:不要使用 5V!电子纸显示屏需要 3.3V 电源。连接 5V 可能永久损坏显示屏。

连接 SPI 通信线:

ESP32 GPIO 23 ───────── 电子纸 DIN(MOSI)
ESP32 GPIO 18 ───────── 电子纸 SCK(CLK)
ESP32 GPIO 5 ───────── 电子纸 CS
ESP32 GPIO 17 ───────── 电子纸 DC

连接剩余的控制信号:

ESP32 GPIO 16 ───────── 电子纸 RST
ESP32 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
接线测试完成!

症状

  • 屏幕保持纯白或空白
  • 上传草图后无可见变化

可能原因

  • 电源线接反
  • 杜邦线松动
  • 显示屏未供电

解决方案

  • 用万用表验证电源:检查电子纸排针上 VCC 和 GND 之间的电压(预期:约 3.3V)
  • 检查所有杜邦线是否完全插入
  • 验证 ESP32 已通电(USB 已连接,板载 LED 亮)
  • 尝试重新插拔显示屏连接器

问题 2:显示屏显示局部更新伪影

Section titled “问题 2:显示屏显示局部更新伪影”

症状

  • 残影或先前图像的痕迹
  • 屏幕上的随机像素或线条

可能原因

  • BUSY 引脚未连接或配置错误
  • 初始化时序问题

解决方案

  • 验证 BUSY 引脚连接
  • 检查引脚分配是否与代码匹配
  • 确保正确的初始化顺序(复位 → 等待 → 初始化)

症状

  • 编译成功但显示屏无响应
  • 串行监视器显示初始化错误

解决方案

  1. 仔细检查所有 SPI 引脚连接
  2. 验证代码中的 GPIO 编号与物理连接一致
  3. 使用不同的 SPI 总线速度(较慢)进行测试
  • 使用母对母杜邦线进行临时原型制作
  • 保持线缆短(< 20cm)以避免信号衰减
  • 在显示屏附近的 VCC 和 GND 之间添加 10µF 电容以确保稳定供电
  • 避免在任何电子纸引脚上使用 5V
  • 不要在 ESP32 通电时热插拔显示屏
  • 在噪声环境中,BUSY 信号线不要超过 10cm
  1. 电子纸显示屏使用 SPI 接口——需要 6 个信号线(SCK、MOSI、CS、DC、RST、BUSY)加电源
  2. 仅使用 3.3V——电子纸显示屏不耐 5V
  3. 引脚分配可配置——GxEPD2 库允许自定义引脚映射
  4. BUSY 信号至关重要——显示屏需要时间完成内部刷新周期
  5. 在构建复杂应用前始终用测试草图验证接线