跳到主要内容

12.48inch e-Paper Module (B) 产品说明

SKU产品
待补12.48inch e-Paper Module (B)

版本说明​

  • V2:硬件结构及接口与V1版本兼容,使用V2程序。如果您是第一次采购,并且屏幕背面带有V2标签,直接使用V2程序即可。
  • V1:使用V1程序。

特点​

  • 尺寸: 12.48inch
  • 外形尺寸(裸屏):261.40mm × 211.00mm × 1.20mm
  • 外形尺寸(亚克力外壳):280.0mm x 229.5mm
  • 显示尺寸:252.98mm × 190.90mm
  • 工作电压:3.3V/5V
  • 通信接口:SPI
  • 点距:0.194mm × 0.194mm
  • 分辨率:1304 x 984
  • 显示颜色:黑、白、红
  • 灰度等级:2
  • 全局刷新 :37s
  • 刷新功耗 : 82.5mW(typ.)
  • 休眠电流 : <0.01uA(接近0)
  • 工作温度 : 0 ~ 40 ℃
  • 存储温度 : -25 ~ 60 ℃

【备注】:
刷新时间:刷新时间为实验测试数据,实际刷新时间会有误差,以实际效果为准。全局刷新过程中会有闪烁效果,这个是正常现象
刷新功耗:功耗数据为实验测试数据,实际功耗由于驱动板的存在和实际使用情况的不同,会有一定误差,以实际效果为准
在低温环境下进行刷新可能出现显示偏色,需要在25℃的环境中静止6小时后,在进行刷新。

SPI 通信时序​

E-paper-spi-timing

由于墨水屏只需要显示,这里将从机发,主机收的数据线(MISO)隐藏。
CS:从机片选,当CS为低电平的时候,芯片使能
DC:数据/命令控制引脚,当DC=0时写入命令;DC=1时写入数据
SCLK: SPI通信时钟
SDIN:SPI通信主机发送,从机接收
时序:CPHL=0, CPOL=0 (SPI0)
【备注】具体关于SPI通信的相关信息,可以自行网上搜索资料了解 PS:如果显示有出现错位或者分区不同步请尝试降低SPI速率

屏幕图片刷新实质​

上面了解到屏幕使用的是SPI通信,对于此屏幕可能有些客户会觉得奇怪为什么会有两个排线?
对于此问题的解释就是该屏幕是由4块小屏幕拼接而成变得大尺寸屏幕,因此对应着4路片选信号。

  • 刷新实质

简略图如下:

12

我们把四部分分别命名为S2,M2,M1,S1,他们在程序中是依次进行传输的。
其中S2,M1是同样大小的分辨率:648492,M2,S1是同样大小的分辨率:656492.
他们的横竖加起来分辨率就是:1304*984

  • 控制原理

4个屏幕,那么他们就对应这4个SPI从机,所需要的控制线就是4个屏幕的总数:
一般SPI接口类显示屏具有以下4条控制线:MOSI,SCLK,CS,DC
然后需要最基本电源和复位:VCC,GND,RST
由于墨水屏的刷新特性,会一直闪烁,用于表示屏幕忙碌:BUSY
为了节省接口,其中4块屏幕共用VCC,GND,MOSI,SCLK;2块屏幕共用DC,RST
此时,重点来了,4块屏幕所需要电源线加控制线16条:

12

  • 核心代码分析

屏幕要进行工作,一般都会进行复位并初始化一些相关的寄存器,然后传输图像数据,最后打开显示。
这里主要讲述传输图像数据:
对于黑白或者红白,我们都可以认为是一张二阶灰度图片,那么一个字节的8个位就对应8个像素点,那么S2部分和M1部分:一行像素点有648点,将占用648/8 = 81个字节,有492列,总共占用81 * 492 = 39852个字节。同理M2部分与S1部分:一行像素点有656点,将占用656/8 = 82个字节,有492列,总共占用82 * 492 = 40344个字节。
12.48inch e-paper的寄存器0x13和0x10分别用于控制黑色图片数据和红色图片数据的传输。
他们的关系如下:

颜色0x100x13
白色0xff0x00
黑色0x000x00
红色0xff/0x000xff

下面以黑白屏为例子:

void EPD_12in48_Display(const UBYTE *Image)
{
int x,y;
//S1 part 648*492
EPD_S2_SendCommand(0x13);
for(y = 0; y < 492; y++)
for(x = 0; x < 81; x++) {
EPD_S2_SendData(*(Image + (y*163 + x)));
}

//M2 part 656*492
EPD_M2_SendCommand(0x13);
for(y = 0; y < 492; y++)
for(x = 81; x < 163; x++) {
EPD_M2_SendData(*(Image+ (y*163) +x));
}

//S1 part 656*492
EPD_S1_SendCommand(0x13);
for(y = 492; y < 984; y++)
for(x = 81; x < 163; x++) {
EPD_S1_SendData(*(Image+ (y*163) +x));
}

//M1 part 648*492
EPD_M1_SendCommand(0x13);
for(y = 492; y < 984; y++)
for(x = 0; x < 81; x++) {
EPD_M1_SendData(*(Image+ (y*163) +x));
}

EPD_12in48_TurnOnDisplay();
}

我们提供了基于4个硬件平台的示例程序,分别是Raspberry Pi, Arduino UNO, STM32以及ESP32。您可以根据自己的需求查看。