前言

咸鱼给我推了一批全新墨水屏。看了一下,全新带膜,膜上标签是黄色,应该是黑白黄三色的。问了老板,说是没有技术手册和例程。一片三元,咬咬牙买了10片回来研究。

外观

26Pin焊接式排线,需要自己垫一点东西+剪窄一点。外观看起来类似之前买的HSSE屏幕,不过这款是黑白黄。

排线丝印 反面型号,标签写的是E213A49

屏幕排线型号HINK-E0213A31-A0-A0,查了一下墨水屏丝印对应驱动表,只查到了HINK-E0213A30-A0-A0这款是250x122黑白墨水屏,主控芯片SSD1675B

合力泰(HINK)的屏幕排线丝印,如果是相邻的两个数字(如A07与A08),往往是采用不同主控芯片的同一种类屏幕。

HINK-E0213A07SSD1675B的黑白红三色,而HINK-E0213A08UC8151c的黑白红三色,两者都是212x104分辨率的。

反正只有两种可能:要么SSD,要么UC。IL3895:什么在想我的事情

UC驱动测试

之前做 2.13寸黑白红墨水屏 时用的是UC8251的驱动。直接加载没有反应。失败。

对于UC的屏幕,只要发送0x04让其开机就行了,不用设置其他参数也能进行刷新。

SSD驱动测试

找了HINK-E0213A22这款屏幕的驱动,芯片是SSD1675B,分辨率250x122,颜色黑白红。轻松秒杀~

第一张图使用大连佳显的驱动点亮,但是刷新时会附带上一张图片的残影,且多次刷新后才能消失。推测和LUT选择以及驱动电压有关。换用GxEPD2的库点亮并刷新,一切正常。选择Z98的驱动即可:GxEPD2_213_Z98c

此外,SSD1675B设置边框颜色使用0x3C指令,之后输入颜色。0x05是白色,0x06是彩色,0x04是黑色。

指令 颜色
0x00 B
0x01 W
0x02 C
0x03
0x04 B
0x05 W
0x06 C
0x07

亮屏例程示例

以下来自GxEPD2库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
void EPD_HW_Init(void)
{
EPD_W21_RST_0; // Module reset
delay(10); // At least 10ms delay
EPD_W21_RST_1;
delay(10); // At least 10ms delay

Epaper_READBUSY();
Epaper_Write_Command(0x12); // SWRESET
Epaper_READBUSY();

Epaper_Write_Command(0x01); // Driver output control
Epaper_Write_Data(0xF9);
Epaper_Write_Data(0x00);
Epaper_Write_Data(0x00);

Epaper_Write_Command(0x11); // data entry mode
Epaper_Write_Data(0x03); // 佳显驱动为01

Epaper_Write_Command(0x3C); // BorderWavefrom
Epaper_Write_Data(0x05);

Epaper_Write_Command(0x18); // Read built-in temperature sensor
Epaper_Write_Data(0x80);

/* 应该是温度传感器初始化
Epaper_Write_Command(0x1A); // temperature sensor
Epaper_Write_Data(0x0F);
Epaper_Write_Data(0x00);
*/

Epaper_Write_Command(0x21); // Display update control
Epaper_Write_Data(0x00);
Epaper_Write_Data(0x80);

Epaper_READBUSY();
}

void EPD_Yellow(void)
{
unsigned int i;
Epaper_Write_Command(0x24); // write RAM for black(0)/white (1)
for (i = 0; i < ALLSCREEN_GRAGHBYTES; i++)
{
Epaper_Write_Data(0xff);
}
Epaper_Write_Command(0x26); // write RAM for black(0)/white (1)
for (i = 0; i < ALLSCREEN_GRAGHBYTES; i++)
{
Epaper_Write_Data(0xff);
}
EPD_Update();
}

void EPD_Update(void)
{
Epaper_Write_Command(0x22); // Display Update Control
Epaper_Write_Data(0xF7); //(0xF7);

Epaper_Write_Command(0x20); // Activate Display Update Sequence
Epaper_READBUSY();
}

void EPD_DeepSleep(void)
{
Epaper_Write_Command(0x10); // enter deep sleep
Epaper_Write_Data(0x01);
delay(100);
}
void Epaper_READBUSY(void)
{
while (1)
{ //=1 BUSY
if (isEPD_W21_BUSY == 0)
break;
}
}

完结撒花!

封面图来自:#ポケモン ポケモッンログ - わ的插画

还在摸索如何读取内置的温度传感器值。这样子就可以直接当温度时钟了

还在研究如何多色局刷快刷,我记得有例子的。

2024.07.20 非常奇怪,边框只有初始化的时候设置才行,而且是永久生效。还在研究。