具体的硬件和软件 网上都有开源资料, 这里不多说。
但是网上的版本和我手上的硬件不太一样, 所以发了我手上的实物连接图。
我们看几个技术细节:
网上 普遍认为 , EPD屏驱动是 UC8151
但是 实际上不对。 实际上是 IL0373
因为 UC8151 不需要配置 LUT 0x20-0x24 , 但该屏在单色模式,必须配置 LUT。
这种EPD 寄存器比一般屏还少一点, 本来应该更简单, 但是实际上驱动很麻烦。
该屏幕 全局刷新时, 需要填写 6KB 的全局缓冲区(/8压缩后),如果是3色屏,则需要额外的 6KB 缓冲空间, 所以对单片机RAM要求高.
该屏幕 局部刷新时, 可以只建立局部区域的缓冲区,刷新和RAM会减少。 写入两次,一次写入需要反色消去数据, 第二次写入要显示值
反色消除原理: 让白色的墨水全部回到上面, 黑色的全部回到下面。例如仅(10,10) 目前是黑的, 即此时 黑色墨水在上,白色在下;
这时候写入反色(白色)消除原来的数据, 仅将这一位上下颜色翻转,从而避免了全部翻转速度很慢的问题。
但这里有个问题, 单个点的翻转电场会影响到周围点, 导致数次以后,周围值被改变了,导致模糊。所以不能连续很多次仅局部刷新。
例如 CC2510 这样的MCU , 最大 RAM 只有 4KB , 没办法支持全屏缓冲,即便单色也不够。
=====两种方案====
对于RAM巨大的高档MCU:
采用 全缓冲模式, 建立 6KB 的全缓冲区, 3色模式 需要 12KB 全缓冲区
所有函数全部操作内存缓冲区, 最后刷入屏内存, 这个和平时单色屏BUFFER模式并没区别;
但是大容量MCU耗电自然也高,用来驱动这种超低速为了极致省电的屏的意义实在不大。
对于小容量的低功耗MCU:
一般RAM都在 6KB 以下, 建立内存全缓冲是不可能了。
但出现另外一个问题, 没有缓冲就不知道先前显示的内容, 也就没法反刷OLD数据,导致不支持局部刷新。
而全屏刷新又非常的慢,而且刷新闪烁极为严重。
所以 , 墨水屏 适合一次写入 内容不再经常修改的情况。对于例如 时钟 这样的应用, 墨水屏并不合适。
我前面的尝试是这样的, 日期 星期 和背景的PANDA 一起, 每小时 全局刷新一次, 只有 一个 144 x50 的时钟区域, 是局部刷新,
每分钟刷一次。 即使这样,其实效果也不是很理想。
现在墨水屏已经廉价到 带MCU 都不到 5元, 虽然实用有些鸡肋, 但玩玩还是可以的。
后期 的 墨水屏 都不是 51单片机了 , 一般都是 ARM M0 架构的, 完全不兼容了。
|