最近在设计墨水屏的驱动,这里记录下学习过程。
理论
GDEW029T5D
是一款Eink电子纸显示屏,296×128分辨率,支持局部刷新、支持黑白显示电子墨水屏,它的IC芯片是:UC8151D。 https://www.good-display.cn/product/210.html
规格书中说明了它的参考电路。有了参考电路后硬件设计就非常的简单了。
这款墨水屏使用的是 SPI 串口通信,我一般都是使用 platformio 进行开发 esp32,用的库是 GxEPD2,platformio 和规格书中中对接口的说法不是很一样,但也就是英文单词使用的缩写不一样,稍微猜一下也就对了。
1)BUSY :电子纸忙信号。
2)RES :电子纸复位信号,低电平有效。
3)D/C :数据/命令 读写选择,高电平为数据,低电平为命令。
4)CS :片选,低电平有效。
5)SCK :SPI 串口通信时钟信号线。
6)SDI :SPI 串口通信数据信号线。
我这里使用的 GPIO 定义如下:
GxEPD2_BW<GxEPD2_290_T5D, GxEPD2_290_T5D::HEIGHT> display(GxEPD2_290_T5D(/*CS=D8*/ SS, /*DC=D3*/ 10, /*RST=D4*/ 3, /*BUSY=D2*/ 2));
platformio 对 esp32c3 设置的默认引脚定义为:(文件位置位于:C:\Users\用户名\.platformio\packages\framework-arduinoespressif32\variants\esp32c3\pins_arduino.h
)
static const uint8_t SS = 7;
static const uint8_t MOSI = 6;
static const uint8_t MISO = 5;
static const uint8_t SCK = 4;
电路板
有了以上的准备,下一步就是画板子了。
附录
不同型号的电子纸需要匹配不同的 RESE 电阻,选择错误的 RESE 电阻会导致电
子纸无法刷新画面。
电路板中 R2 为 0.47Ω,可以通过更换为 3Ω 来支持其他的屏幕,支持列表如下:
1) R2 为 0.47Ω 时适用于:
1.54 寸显示屏:GDEW0154T8、GDEW0154I9F、GDEW0154Z17、GDEW0154Z04、
GDEW0154C39
2.13 寸显示屏:GDEW0213T5、GDEW0213I5F、GDEW0213Z16、GDEW0213C38
2.6 寸显示屏:GDEW026T0、GDEW026Z3
2.7 寸显示屏:GDEW027W3、GDEW027C44
2.9 寸显示屏:GDEW029T5、GDEW029I6F、GDEW029Z10、GDEW029C32
3.71 寸显示屏:GDEW0371W7、GDEW0371Z80
4.2 寸显示屏:GDEW042T2、GDEW042Z15、GDEW042C37
5.83 寸显示屏:GDEW0583T8、GDEW0583Z21、GDEW0583Z83、GDEW0583C64
7.5 寸显示屏:GDEW075T7、GDEW075Z08、GDEW075Z09、GDEW075C21、GDEW075C64
2)R2 为 3Ω 时适用于:
1.54 寸显示屏:GDEP015OC1、GDEH0154D67、GDEM0154E97LT
2.04 寸显示屏:GDE021A1
2.13 寸显示屏:GDEH0213B73、GDEH0213D30LT、GDEM0213E28LT
2.9 寸显示屏:GDEH029A1、GDEH029D56LT、GDEM029E27LT
5.83 寸显示屏:GDEW0583T7
7.5 寸显示屏:GDEW075T8