外设驱动(一)E-Paper墨水屏扫描显示原理

本文详细介绍了电子墨水屏的工作原理,特别是122*250像素2.13inch墨水屏的驱动及扫描机制。通过实例解析了不同指令如软件复位、驱动器输出控制、边框设置和像素点写入模式设置等,以及它们对显示的影响。同时,文章展示了在不同配置下的显示效果,为理解墨水屏的驱动提供了实用的参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

嵌入式应用笔记

此系列作为产品过程中记录开源库移植和一些遇到的问题,包括有效资源、要点、函数、方法和一些使用心得。

移植

驱动

  • 驱动应用(一)低功耗墨水屏硬件驱动与扫描原理

前言

  • 电子墨水屏EPD,是一种革新信息显示的新方法和技术。像多数传统墨水一样,电子墨水和改变它颜色的线路是可以打印到许多表面的,从弯曲塑料、聚脂膜、纸到布。和传统纸差异是电子墨水在通电时改变颜色,并且可以像传统屏幕那样显示变化的图像。
  • 其每个像素点是由单个电子墨水组成,电子墨水可以看成一个个胶囊的样子。每一个胶囊里面有液体电荷,其中正电荷染白色,负电荷染黑色。当我们在一侧给予正负电压,带有电荷的液体就会被分别吸引和排斥。这样,每一个像素点就可以显示白色或者黑色了。
  • 本章用122*250像素的2.13inch墨水屏,通过实际的测试,表述其驱动中的扫描原理,该屏内部控制器采用IL3895,注:相同系列,越大的墨水屏指令相同,设置的位数却更多。


1 参考资料

2 硬件参数

参数标记条件最小值典型值最大值单位
单接地Vss--0-V
逻辑电源电压Vci-2.23.03.7V
逻辑高电平Voh-0.9Vci--V
逻辑低电平Vol---0.1VciV
典型功率PtypVci=3.0V-9-mW
睡眠功率Psleep--0.003-mW
睡眠电流Isleep--20-uA
深度睡眠电流Idsleep--1-uA
VCOM引脚输出VCOM--TBD-V

3 硬件驱动

//施工

4常用SPI指令

每个指令有多个位进行设置,可以类比单片机寄存器配置

4.1通常初始化指令

4.1.1软件复位0x12

将命令参数重置为默认值,在深度睡眠模式(0x10)下不起作用,RAM不重置。

4.1.2驱动器输出控制0x01

读写权限D/CD7D6D5D4D3D2D1D0
W写1A7A6A5A4A3A2A1A0
默认配置-00000000

4.1.3边框设置0x3C

//施工

4.1.4 *扫描原理与像素点写入模式设置0x11

指令表:

读写权限DCD7D6D5D4D3D2D1D0
W写1-----AMID1ID0
默认配置-00000000

说明

其内部管理了一个地址计数器,自动地在某方向加减地址,通过AM设置方向;ID控制加减。

  • ID[0]=“1”时,将数据写入RAM后,X地址计数器将自动增加1。
  • ID[0]=“0”时,将数据写入RAM后,X地址计数器会自动减少1。
  • ID[1]=“1”时,将数据写入RAM后,Y地址计数器将自动增加1。
  • ID[1]=“0”时,将数据写入RAM后,Y地址计数器会自动减少1。
  • AM=“0”时,地址计数器在X方向上更新。
  • AM=“1”时,地址计数器在Y方向上更新。
  • 当选择窗口地址后,数据将以ID[1:0]和AM位指定的方式写入由窗口地址指定的RAM区域。
    在这里插入图片描述

4.2通常显示指令

4.2.1 扫描像素点地址设置0x44\0x45\0x4E\0x4F

指令表:

0x44DCD7D6D5D4D3D2D1D0
W写1---A4A3A2A1A0
W写1---B4B3B2B1B0
默认配置0x00-00000000
默认配置0x12-00010010
0x45DCD7D6D5D4D3D2D1D0
W写1A7A6A5A4A3A2A1A0
W写1B7B6B5B4B3B2B1B0
默认配置0x00-00000000
默认配置0xF9-11111001
0x4EDCD7D6D5D4D3D2D1D0
W写1---A4A3A2A1A0
默认配置0x00-00000000
0x4FDCD7D6D5D4D3D2D1D0
W写1A7A6A5A4A3A2A1A0
默认配置0x00-00000000

说明

0x44、0x45通过地址单元指定窗口地址

  • 0x44:A[4:0]设置窗口的X方向起始地址
  • 0x44:B[4:0]设置窗口的X方向终止地址
  • 0x45:A[7:0]设置窗口的Y方向起始地址
  • 0x45:B[7:0]设置窗口的Y方向起始地址

0x4E、0x4F设置RAM地址计数器的初值

  • 0x4E:A[4:0]设置当前RAM地址X方向计数器的值
  • 0x4F:A[7:0]设置当前RAM地址Y方向计数器的值

5 软件驱动

5.1 初始化函数

5.2 缓冲区显示函数设计

5.2.1 扫描显示原理与指令测试

这里非常重要,由于在使用过程中发现手册可能描述的不太清楚,于是测试程序写入同一个数组条件下,更改配置,附上效果图。

屏幕坐标系
该坐标系X轴总宽为0x0f,即16字节(128像素),其中边框占6像素。

请添加图片描述
一段测试代码

墨水屏像素点为一位,0为黑色,1为白色

//实验数组,先写入一段40像素黑线,空白8像素,黑线16像素,空8像素,黑线24像素,空16像素,黑线56像素,
uint8_t einkbmp[]={
0X00,0X00,0X00,0X00,0X00,0XFF,0X00,0X00,0XFF,0X00,0X00,0X00,0XFF,0XFF,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
/* 省略 */}

//初始化函数中调整配置
void EINK_INIT(void)
{
	/* 省略初始化函数 */
	EINK_WRITECOM(0x11);	    // 写入扫描方向控制指令
    EINK_WRITEDATA(0x01);    // 0b0000 0001写入配置,调整该设置
	/* 省略初始化函数 */
}
//实验函数
void TEST_IMG()
{
    uint16_t pcnt = 0;// 复位或保存提示字节序号
	READBUSY();//判忙,显示屏BUSY线不占线才往下执行,否则报错
	SetpointXY(0,0x0f,0xf9,0);//设置起始、终点坐标
	EINK_WRITECOM(0x24);// 复位或保存提示字节序号            
    for(uint16_t col=0; col<250; col++)   // 总共250 GATE列  // send 128x250bits ram 2D13
        for(uint16_t row=0; row<16; row++,pcnt++)  // 总共128 SOURCE行,每个像素1bit,即 128/8=16 字节    
        	EINK_WRITEDATA(einkbmp[pcnt]);
	//此处省略显示刷屏函数	
}

实际效果程序写入显示效果

实践得真知

扫描设置\窗口坐标(0.0)(0.F9)(0F.0)(0F.F9)
AM+ID[0:1] =000,窗口设置为(0F,F9)到(0,0)从该点写入,应该左上只有一个点,然后越界,很奇怪有5个像素Pulpit rock从该点写入,应该左下只有一个点,然后越界,很奇怪有5个像素从该点写入会越界,故第二行会显示在最下面从原点写入会越界,故第二行会显示在最下面
AM+ID[0:1] =001,窗口设置为(0,F9)到(0F,0)Pulpit rock从原点写入会越界,故第二行会显示在最下面从该点写入会Y轴递减,X递增,所以顺序显示从该点写入会越界,所以右上有一个像素点从该点写入会越界,所以右下有一个像素点
AM+ID[0:1] =010Pulpit rock从原点写入会越界,故第二行会显示在最下面从该点写入会Y轴递减,X递增,所以顺序显示从该点写入和预期相符从该点写入会越界,所以右下有一个像素点
AM+ID[0:1] =011row 2, cell 2row 2, cell 1row 2, cell 2row 2, cell 1
AM+ID[0:1] =100row 2, cell 2row 2, cell 1row 2, cell 2row 2, cell 1
AM+ID[0:1] =101row 2, cell 2row 2, cell 1row 2, cell 2row 2, cell 1
AM+ID[0:1] =110row 2, cell 2row 2, cell 1row 2, cell 2row 2, cell 1
AM+ID[0:1] =111Pulpit rock从原点写入出现X方向显示为为一个字节从该点写入会Y轴递减,X递增,所以顺序显示从该点写入和预期相符从该点写入会越界,所以右下有一个像素点

5.3 刷屏函数设计

//施工

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DJTU_LZY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值