forked from PetteriAimonen/ED060SC4_driver
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathREADME
More file actions
71 lines (39 loc) · 2.4 KB
/
README
File metadata and controls
71 lines (39 loc) · 2.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
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位一个像素点。
- 更大的屏幕可能需要其他的菊花链连接,原理图有示例。