找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 280|回复: 3
打印 上一主题 下一主题
收起左侧

TI CC2510 51单片机驱动SES墨水屏的一些技术细节

[复制链接]
跳转到指定楼层
楼主




具体的硬件和软件 网上都有开源资料, 这里不多说。
但是网上的版本和我手上的硬件不太一样, 所以发了我手上的实物连接图。
我们看几个技术细节:
网上 普遍认为 , 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 架构的,  完全不兼容了。



评分

参与人数 1黑币 +90 收起 理由
admin + 90 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:628113 发表于 2024-9-6 14:30 | 只看该作者
图中的那个 叮当猫 是专门为这个屏 处理的。 分辨率是 146x152, 分成 黑白和红色两张图。 附带了取样参数。
黑白:

红色:

采样参数:

回复

使用道具 举报

板凳
ID:628113 发表于 2024-9-13 14:20 | 只看该作者


补充一张 Doraemon 实际显示的三色图。

                                                                #if UC8151_WIDTH  == 152
                                                                                                for (i = 0; i < sizeof(DORAEMON_BW146X152)-6; i++)//UC8151_BUF_LEN-sizeof(DORAEMON_BW146X152)+6
                                                                                                {
                                                                                                                *(UC8151_BW_DATA+i)=~DORAEMON_BW146X152[i+6];                                                                
                                                                                                }   
                                                                                                for (i = 0; i < sizeof(DORAEMON_R146X152)-6; i++)//UC8151_BUF_LEN-sizeof(DORAEMON_BW146X152)+6
                                                                                                {
                                                                                                                *(UC8151_R_DATA+i)=DORAEMON_R146X152[i+6];                                                                
                                                                                                }                                                                                                
       
                                                                                                               
                                                                #endif

注意 黑色赋值前面的 ~ 号。
回复

使用道具 举报

地板
ID:628113 发表于 2024-9-13 14:22 | 只看该作者
黑底白字不多见, 这是对比图。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表