Skip to content

Bluebear233/ED060SC4_driver

 
 

Repository files navigation

1. 介绍

这是元太ED060SC4 800*600 墨水屏驱动。这个驱动是适用在单片机直接连接屏幕的,不支持带有控制IC的屏幕。

要使用这个驱动,需要单片机能控制下面的信号:

Gate 驱动: SPV, CKV, GMODE.
Source 驱动: CL, LE, OE, SPH, D0-D7.
电源: +-15V, +22V, -20V, digital Vdd

"example_schematics.png"这个是电路原理图,里面介绍ED060SC4的连接、电源电路、
使用的是STM32L151单片机。

需要注意更大的屏幕(比如800*600)由多个独立的gate驱动信号组成。就像原理图里面的菊花链。

关于更多墨水屏的信息
http://essentialscrap.com/eink/



2. 帧缓冲器仿真

因为单片机没有足够的内存来储存这个画面,这个驱动仿真储存在内存中的帧。
驱动将帧缓冲在EINK_NUMBUFFERS缓冲块中,之后将数据写入屏幕。
下面的宏定义控制着缓冲区大小。数值更大将会提高写的数据并且需要更多的内存。

#define EINK_BLOCKWIDTH 20    // 缓冲区一个块的宽度
#define EINK_BLOCKHEIGHT 20   // 缓冲区一个块的高度
#define EINK_NUMBUFFERS 40    // 缓冲区块的数量

在写入图像后,使用下面的函数来刷新缓冲区:

    #include <ed060sc4.h>
    gdispControl(GDISP_CONTROL_FLUSH, 0);

使用下面的函数关闭显示屏缓冲区也会跟着刷新

    gdispSetPowerMode(powerOff);



3. 清屏和写入波形


驱动在驱动显示屏的时候是不知道元太官方的波形,主要这是商业秘密不会公开的。
驱动主要使用相反的波形来代替原来的波形

下面的宏定义跟波形相关

#define EINK_BLINKCLEAR TRUE      // 首先明确相反的颜色
#define EINK_CLEARCOUNT 10        // 清屏次数
#define EINK_WRITECOUNT 4         // 刷新时的清屏次数

增加清屏和写屏次数能提高对比度,但是会降低刷屏速度和提高功耗


4. 时钟频率

因为驱动是一位一位的显示,时钟频率对于单片机来说非常重要。
这个通过EINK_CLOCKDELAY这个宏定义来控制。通过设置它来保证最短50纳秒的延迟。


5. 其他类型的屏幕支持

这个驱动可以驱动大部分的元太屏幕,但是到目前为止只测试了ED060SC4。
需要注意的事项:

- 一些屏幕使用的是4位一个像素点。这个驱动是假设当前屏幕为2位一个像素点。
- 更大的屏幕可能需要其他的菊花链连接,原理图有示例。

  

About

Driver for the ED060SC4 E-ink display

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 70.6%
  • C++ 29.4%