最近这周没有更新,一方面有别的事情做耽误了,一方面是又搞了个新玩具。
事情的起因是这样的,逛淘宝的时候无意间看到了咸鱼上有人卖12.48寸的三色电子纸,价格非常诱人。和他联系了一下,竟然是全新的。我估摸着是买回来没法驱动吧,哈哈。
于是象征性的砍了一下价格(本来心想他拒绝砍价我就顺理成章的不买了), 结果他爽快的答应了(这不禁让我感觉砍价砍少了)。
拿到手之后第一件事情当然是点亮了(第一次从咸鱼买东西,价格低到不敢相信是好用的)。让我没想到的是竟然一次点亮!
接下来就是研究这块巨无霸屏幕了。
首先最好奇的就是他是如何做到SPI传输这么大的屏幕的像素点数据。
之前玩过7.5寸的屏幕,之前的经验是有个寄存器R10H是专门负责数据存储的。 数据手册很好读懂,就是说一个byte存两个像素点的数据(这种电子纸是不支持局部刷新的,所以每次都要灌入所有的数据),首先send command,之后连续灌入所有的像素信息。
但是这个大家伙可是1304*948分辨率的,1304*948/2=641568。估计驱动芯片不应该有这么大的缓存才对。而且这个屏幕并不支持灰度,继续这样岂不是浪费缓存。
后来差了手册才恍然大悟。
这货是通过两个寄存器配合达到显示黑白红的(为什么是两个呢?我猜是因为还有黑白的产品,这样可以公用相同的芯片)。
简单来说直接看下表就行了:
颜色 | 0x10 | 0x13 |
白色 | 0xff | 0x00 |
黑色 | 0x00 | 0x00 |
红色 | 0xff/0x00 | 0xff |
如果你想显示黑白的,直接搞 0x13。 如果你想显示黑白红,红/白色的搞 0x13,黑/白搞0x10。
最为搞笑的是这个接口:
发现不一样的地方么?M1,S1,M2,S2?肯定有鬼。
仔细读了手册,原来厂家并没有全局的寄存器,厂家是把四块小屏幕拼起来了(中国的厂家就是”聪明“)所以会有四路片选信号。就像下图所展示的:
四部分分别命名为S2,M2,M1,S1,他们在程序中是依次进行传输的。
其中S2,M1是同样大小的分辨率:648*492,M2,S1是同样大小的分辨率:656*492。他们的横竖加起来分辨率就是: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条!!!
理解了原理就可以编程了。随后我会更新相关的代码
本篇文章来源于微信公众号: 来条消息
本文章搜集于互联网,版权属于原出处!公开讯息可转载! 地址:https://einkcn.com/post/1175.html