外设驱动(一)E

您所在的位置:网站首页 电子墨水屏驱动原理图解 外设驱动(一)E

外设驱动(一)E

2024-07-09 22:20| 来源: 网络整理| 查看: 265

嵌入式应用笔记

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

移植

开源库移植(一)轻量级环形缓冲区LwRB

驱动

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

墨水屏应用前言1 参考资料2 硬件参数3 硬件驱动4常用SPI指令4.1通常初始化指令4.1.1软件复位0x124.1.2驱动器输出控制0x014.1.3边框设置0x3C4.1.4 *扫描原理与像素点写入模式设置0x114.2通常显示指令4.2.1 扫描像素点地址设置0x44\0x45\0x4E\0x4F5 软件驱动5.1 初始化函数5.2 缓冲区显示函数设计5.2.1 扫描显示原理与指令测试5.3 刷屏函数设计

1 参考资料

原理: -知乎-全勾教育《墨水屏是什么?墨水屏是否真的护眼?》 -知乎-Topbook《墨水屏真的能保护你的眼睛?》

硬件驱动: 立创-墨水屏Eink通用驱动板 立创-并口墨水屏ESP32开发板

微雪电子资料

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-uAVCOM引脚输出VCOM--TBD-V 3 硬件驱动

//施工

4常用SPI指令

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

4.1通常初始化指令 4.1.1软件复位0x12

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

4.1.2驱动器输出控制0x01 读写权限D/CD7D6D5D4D3D2D1D0W写1A7A6A5A4A3A2A1A0默认配置-00000000 4.1.3边框设置0x3C

//施工

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

指令表:

读写权限DCD7D6D5D4D3D2D1D0W写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

指令表:

0x44DCD7D6D5D4D3D2D1D0W写1---A4A3A2A1A0W写1---B4B3B2B1B0默认配置0x00-00000000默认配置0x12-000100100x45DCD7D6D5D4D3D2D1D0W写1A7A6A5A4A3A2A1A0W写1B7B6B5B4B3B2B1B0默认配置0x00-00000000默认配置0xF9-111110010x4EDCD7D6D5D4D3D2D1D0W写1---A4A3A2A1A0默认配置0x00-000000000x4FDCD7D6D5D4D3D2D1D0W写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


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3