1
- '''
2
-
3
-
4
- // Color definitions for backwards compatibility with old sketches
5
- // use colour definitions like TFT_BLACK to make sketches more portable
6
- #define S6D02A1_BLACK 0x0000 /* 0, 0, 0 */
7
- #define S6D02A1_NAVY 0x000F /* 0, 0, 128 */
8
- #define S6D02A1_DARKGREEN 0x03E0 /* 0, 128, 0 */
9
- #define S6D02A1_DARKCYAN 0x03EF /* 0, 128, 128 */
10
- #define S6D02A1_MAROON 0x7800 /* 128, 0, 0 */
11
- #define S6D02A1_PURPLE 0x780F /* 128, 0, 128 */
12
- #define S6D02A1_OLIVE 0x7BE0 /* 128, 128, 0 */
13
- #define S6D02A1_LIGHTGREY 0xC618 /* 192, 192, 192 */
14
- #define S6D02A1_DARKGREY 0x7BEF /* 128, 128, 128 */
15
- #define S6D02A1_BLUE 0x001F /* 0, 0, 255 */
16
- #define S6D02A1_GREEN 0x07E0 /* 0, 255, 0 */
17
- #define S6D02A1_CYAN 0x07FF /* 0, 255, 255 */
18
- #define S6D02A1_RED 0xF800 /* 255, 0, 0 */
19
- #define S6D02A1_MAGENTA 0xF81F /* 255, 0, 255 */
20
- #define S6D02A1_YELLOW 0xFFE0 /* 255, 255, 0 */
21
- #define S6D02A1_WHITE 0xFFFF /* 255, 255, 255 */
22
- #define S6D02A1_ORANGE 0xFD20 /* 255, 165, 0 */
23
- #define S6D02A1_GREENYELLOW 0xAFE5 /* 173, 255, 47 */
24
- #define S6D02A1_PINK 0xF81F
25
-
26
-
27
- // Delay between some initialisation commands
28
- #define TFT_INIT_DELAY 0x80
29
-
30
-
31
- // Generic commands used by TFT_eSPI.cpp
32
- #define TFT_NOP 0x00
33
- #define TFT_SWRST 0x01
34
-
35
- #define TFT_INVOFF 0x20
36
- #define TFT_INVON 0x21
37
-
38
- #define TFT_DISPOFF 0x28
39
- #define TFT_DISPON 0x29
40
-
41
- #define TFT_CASET 0x2A
42
- #define TFT_PASET 0x2B
43
- #define TFT_RAMWR 0x2C
44
-
45
- #define TFT_RAMRD 0x2E
46
- #define TFT_IDXRD 0x00 //0xDD // ILI9341 only, indexed control register read
47
-
48
- #define TFT_MADCTL 0x36
49
- #define TFT_MAD_MY 0x80
50
- #define TFT_MAD_MX 0x40
51
- #define TFT_MAD_MV 0x20
52
- #define TFT_MAD_ML 0x10
53
- #define TFT_MAD_BGR 0x08
54
- #define TFT_MAD_MH 0x04
55
- #define TFT_MAD_RGB 0x00
56
-
57
-
58
-
59
- // Initialization commands for S6D02A1 screens
60
- static const uint8_t S6D02A1_cmds[] PROGMEM =
61
- {
62
- 29,
63
- 0xf0, 2, 0x5a, 0x5a, // Excommand2
64
- 0xfc, 2, 0x5a, 0x5a, // Excommand3
65
- 0x26, 1, 0x01, // Gamma set
66
- 0xfa, 15, 0x02, 0x1f, 0x00, 0x10, 0x22, 0x30, 0x38, 0x3A, 0x3A, 0x3A, 0x3A, 0x3A, 0x3d, 0x02, 0x01, // Positive gamma control
67
- 0xfb, 15, 0x21, 0x00, 0x02, 0x04, 0x07, 0x0a, 0x0b, 0x0c, 0x0c, 0x16, 0x1e, 0x30, 0x3f, 0x01, 0x02, // Negative gamma control
68
- 0xfd, 11, 0x00, 0x00, 0x00, 0x17, 0x10, 0x00, 0x01, 0x01, 0x00, 0x1f, 0x1f, // Analog parameter control
69
- 0xf4, 15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x07, 0x00, 0x3C, 0x36, 0x00, 0x3C, 0x36, 0x00, // Power control
70
- 0xf5, 13, 0x00, 0x70, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x66, 0x06, // VCOM control
71
- 0xf6, 11, 0x02, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x06, 0x01, 0x00, // Source control
72
- 0xf2, 17, 0x00, 0x01, 0x03, 0x08, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x04, 0x08, 0x08, //Display control
73
- 0xf8, 1, 0x11, // Gate control
74
- 0xf7, 4, 0xc8, 0x20, 0x00, 0x00, // Interface control
75
- 0xf3, 2, 0x00, 0x00, // Power sequence control
76
- 0x11, TFT_INIT_DELAY, 50, // Wake
77
- 0xf3, 2+TFT_INIT_DELAY, 0x00, 0x01, 50, // Power sequence control
78
- 0xf3, 2+TFT_INIT_DELAY, 0x00, 0x03, 50, // Power sequence control
79
- 0xf3, 2+TFT_INIT_DELAY, 0x00, 0x07, 50, // Power sequence control
80
- 0xf3, 2+TFT_INIT_DELAY, 0x00, 0x0f, 50, // Power sequence control
81
- 0xf4, 15+TFT_INIT_DELAY, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x07, 0x00, 0x3C, 0x36, 0x00, 0x3C, 0x36, 0x00, 50, // Power control
82
- 0xf3, 2+TFT_INIT_DELAY, 0x00, 0x1f, 50, // Power sequence control
83
- 0xf3, 2+TFT_INIT_DELAY, 0x00, 0x7f, 50, // Power sequence control
84
- 0xf3, 2+TFT_INIT_DELAY, 0x00, 0xff, 50, // Power sequence control
85
- 0xfd, 11, 0x00, 0x00, 0x00, 0x17, 0x10, 0x00, 0x00, 0x01, 0x00, 0x16, 0x16, // Analog parameter control
86
- 0xf4, 15, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x07, 0x00, 0x3C, 0x36, 0x00, 0x3C, 0x36, 0x00, // Power control
87
- 0x36, 1, 0xC8, // Memory access data control
88
- 0x35, 1, 0x00, // Tearing effect line on
89
- 0x3a, 1+TFT_INIT_DELAY, 0x05, 150, // Interface pixel control
90
- 0x29, 0, // Display on
91
- 0x2c, 0 // Memory write
92
- };
93
-
94
- '''
1
+
2
+ import time
3
+ from micropython import const # NOQA
4
+
5
+ import lvgl as lv # NOQA
6
+ import lcd_bus # NOQA
7
+ import display_driver_framework
8
+
9
+
10
+ STATE_HIGH = display_driver_framework .STATE_HIGH
11
+ STATE_LOW = display_driver_framework .STATE_LOW
12
+ STATE_PWM = display_driver_framework .STATE_PWM
13
+
14
+ BYTE_ORDER_RGB = display_driver_framework .BYTE_ORDER_RGB
15
+ BYTE_ORDER_BGR = display_driver_framework .BYTE_ORDER_BGR
16
+
17
+
18
+ class S6D02A1 (display_driver_framework .DisplayDriver ):
19
+
20
+ def init (self ):
21
+ param_buf = bytearray (17 )
22
+ param_mv = memoryview (param_buf )
23
+
24
+ param_buf [0 ] = 0x5a
25
+ param_buf [1 ] = 0x5a
26
+ self .set_params (0xf0 , param_mv [:2 ])
27
+
28
+ param_buf [0 ] = 0x5a
29
+ param_buf [1 ] = 0x5a
30
+ self .set_params (0xfc , param_mv [:2 ])
31
+
32
+ param_buf [0 ] = 0x01
33
+ self .set_params (0x26 , param_mv [:1 ])
34
+
35
+ param_buf [:15 ] = bytearray ([
36
+ 0x02 , 0x1f , 0x00 , 0x10 , 0x22 , 0x30 , 0x38 ,
37
+ 0x3A , 0x3A , 0x3A , 0x3A , 0x3A , 0x3d , 0x02 , 0x01
38
+ ])
39
+ self .set_params (0xfa , param_mv [:15 ])
40
+
41
+ param_buf [:15 ] = bytearray ([
42
+ 0x21 , 0x00 , 0x02 , 0x04 , 0x07 , 0x0a , 0x0b ,
43
+ 0x0c , 0x0c , 0x16 , 0x1e , 0x30 , 0x3f , 0x01 , 0x02
44
+ ])
45
+ self .set_params (0xfb , param_mv [:15 ])
46
+
47
+ param_buf [:11 ] = bytearray ([
48
+ 0x00 , 0x00 , 0x00 , 0x17 , 0x10 ,
49
+ 0x00 , 0x01 , 0x01 , 0x00 , 0x1f , 0x1f
50
+ ])
51
+ self .set_params (0xfd , param_mv [:11 ])
52
+
53
+ param_buf [:15 ] = bytearray ([
54
+ 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x3f , 0x3f ,
55
+ 0x07 , 0x00 , 0x3C , 0x36 , 0x00 , 0x3C , 0x36 , 0x00
56
+ ])
57
+ self .set_params (0xf4 , param_mv [:15 ])
58
+
59
+ param_buf [:13 ] = bytearray ([
60
+ 0x00 , 0x70 , 0x66 , 0x00 , 0x00 , 0x00 ,
61
+ 0x00 , 0x00 , 0x00 , 0x00 , 0x6d , 0x66 , 0x06
62
+ ])
63
+ self .set_params (0xf5 , param_mv [:13 ])
64
+
65
+ param_buf [:11 ] = bytearray ([
66
+ 0x02 , 0x00 , 0x3f , 0x00 , 0x00 ,
67
+ 0x00 , 0x02 , 0x00 , 0x06 , 0x01 , 0x00
68
+ ])
69
+ self .set_params (0xf6 , param_mv [:11 ])
70
+
71
+ param_buf [:17 ] = bytearray ([
72
+ 0x00 , 0x01 , 0x03 , 0x08 , 0x08 , 0x04 , 0x00 , 0x00 , 0x00 ,
73
+ 0x00 , 0x00 , 0x01 , 0x00 , 0x00 , 0x04 , 0x08 , 0x08
74
+ ])
75
+ self .set_params (0xf2 , param_mv [:17 ])
76
+
77
+ param_buf [0 ] = 0x11
78
+ self .set_params (0xf8 , param_mv [:1 ])
79
+
80
+ param_buf [:4 ] = bytearray ([0xc8 , 0x20 , 0x00 , 0x00 ])
81
+ self .set_params (0xf7 , param_mv [:4 ])
82
+
83
+ param_buf [0 ] = 0x00
84
+ param_buf [1 ] = 0x00
85
+ self .set_params (0xf3 , param_mv [:2 ])
86
+
87
+ self .set_params (0x11 )
88
+ time .sleep_ms (50 )
89
+
90
+ param_buf [0 ] = 0x00
91
+ param_buf [1 ] = 0x01
92
+ self .set_params (0xf3 , param_mv [:2 ])
93
+
94
+ time .sleep_ms (50 )
95
+
96
+ param_buf [0 ] = 0x00
97
+ param_buf [1 ] = 0x03
98
+ self .set_params (0xf3 , param_mv [:2 ])
99
+
100
+ time .sleep_ms (50 )
101
+
102
+ param_buf [0 ] = 0x00
103
+ param_buf [1 ] = 0x07
104
+ self .set_params (0xf3 , param_mv [:2 ])
105
+
106
+ time .sleep_ms (50 )
107
+
108
+ param_buf [0 ] = 0x00
109
+ param_buf [1 ] = 0x0f
110
+ self .set_params (0xf3 , param_mv [:2 ])
111
+
112
+ time .sleep_ms (50 )
113
+
114
+ param_buf [:15 ] = bytearray ([
115
+ 0x00 , 0x04 , 0x00 , 0x00 , 0x00 , 0x3f , 0x3f ,
116
+ 0x07 , 0x00 , 0x3C , 0x36 , 0x00 , 0x3C , 0x36 , 0x00
117
+ ])
118
+ self .set_params (0xf4 , param_mv [:15 ])
119
+
120
+ time .sleep_ms (50 )
121
+
122
+ param_buf [0 ] = 0x00
123
+ param_buf [1 ] = 0x1f
124
+ self .set_params (0xf3 , param_mv [:2 ])
125
+
126
+ time .sleep_ms (50 )
127
+
128
+ param_buf [0 ] = 0x00
129
+ param_buf [1 ] = 0x7f
130
+ self .set_params (0xf3 , param_mv [:2 ])
131
+
132
+ time .sleep_ms (50 )
133
+
134
+ param_buf [0 ] = 0x00
135
+ param_buf [1 ] = 0xff
136
+ self .set_params (0xf3 , param_mv [:2 ])
137
+
138
+ time .sleep_ms (50 )
139
+
140
+ param_buf [:11 ] = bytearray ([
141
+ 0x00 , 0x00 , 0x00 , 0x17 , 0x10 ,
142
+ 0x00 , 0x00 , 0x01 , 0x00 , 0x16 , 0x16
143
+ ])
144
+ self .set_params (0xfd , param_mv [:11 ])
145
+
146
+ param_buf [:15 ] = bytearray ([
147
+ 0x00 , 0x09 , 0x00 , 0x00 , 0x00 , 0x3f , 0x3f ,
148
+ 0x07 , 0x00 , 0x3C , 0x36 , 0x00 , 0x3C , 0x36 , 0x00
149
+ ])
150
+ self .set_params (0xf4 , param_mv [:15 ])
151
+
152
+ param_buf [0 ] = 0xC8
153
+ self .set_params (0x36 , param_mv [:1 ])
154
+
155
+ param_buf [0 ] = 0x00
156
+ self .set_params (0x35 , param_mv [:1 ])
157
+
158
+ param_buf [0 ] = 0x05
159
+ self .set_params (0x3a , param_mv [:1 ])
160
+
161
+ time .sleep_ms (150 )
162
+
163
+ self .set_params (0x29 )
164
+ self .set_params (0x2c )
0 commit comments