ipsdisplay  2.1.0.0
ipsdisplay.h
Go to the documentation of this file.
1 /****************************************************************************
2 ** Copyright (C) 2020 MikroElektronika d.o.o.
3 ** Contact: https://www.mikroe.com/contact
4 **
5 ** Permission is hereby granted, free of charge, to any person obtaining a copy
6 ** of this software and associated documentation files (the "Software"), to deal
7 ** in the Software without restriction, including without limitation the rights
8 ** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 ** copies of the Software, and to permit persons to whom the Software is
10 ** furnished to do so, subject to the following conditions:
11 ** The above copyright notice and this permission notice shall be
12 ** included in all copies or substantial portions of the Software.
13 **
14 ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15 ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16 ** OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17 ** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18 ** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
19 ** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20 ** USE OR OTHER DEALINGS IN THE SOFTWARE.
21 ****************************************************************************/
22 
28 #ifndef IPSDISPLAY_H
29 #define IPSDISPLAY_H
30 
31 #ifdef __cplusplus
32 extern "C"{
33 #endif
34 
39 #ifdef PREINIT_SUPPORTED
40 #include "preinit.h"
41 #endif
42 
43 #ifdef MikroCCoreVersion
44  #if MikroCCoreVersion >= 1
45  #include "delays.h"
46  #endif
47 #endif
48 
49 #include "drv_digital_out.h"
50 #include "drv_digital_in.h"
51 #include "drv_spi_master.h"
52 #include "spi_specifics.h"
53 
74 #define IPSDISPLAY_CMD_NOP 0x00
75 #define IPSDISPLAY_CMD_SWRESET 0x01
76 #define IPSDISPLAY_CMD_RDDID 0x04
77 #define IPSDISPLAY_CMD_RDDST 0x09
78 #define IPSDISPLAY_CMD_RDDPM 0x0A
79 #define IPSDISPLAY_CMD_RDDMADCTL 0x0B
80 #define IPSDISPLAY_CMD_RDDCOLMOD 0x0C
81 #define IPSDISPLAY_CMD_RDDIM 0x0D
82 #define IPSDISPLAY_CMD_RDDSM 0x0E
83 #define IPSDISPLAY_CMD_RDDSDR 0x0F
84 #define IPSDISPLAY_CMD_SLPIN 0x10
85 #define IPSDISPLAY_CMD_SLPOUT 0x11
86 #define IPSDISPLAY_CMD_PTLON 0x12
87 #define IPSDISPLAY_CMD_NORON 0x13
88 #define IPSDISPLAY_CMD_INVOFF 0x20
89 #define IPSDISPLAY_CMD_INVON 0x21
90 #define IPSDISPLAY_CMD_GAMSET 0x26
91 #define IPSDISPLAY_CMD_DISPOFF 0x28
92 #define IPSDISPLAY_CMD_DISPON 0x29
93 #define IPSDISPLAY_CMD_CASET 0x2A
94 #define IPSDISPLAY_CMD_RASET 0x2B
95 #define IPSDISPLAY_CMD_RAMWR 0x2C
96 #define IPSDISPLAY_CMD_RAMRD 0x2E
97 #define IPSDISPLAY_CMD_PTLAR 0x30
98 #define IPSDISPLAY_CMD_VSCRDEF 0x33
99 #define IPSDISPLAY_CMD_TEOFF 0x34
100 #define IPSDISPLAY_CMD_TEON 0x35
101 #define IPSDISPLAY_CMD_MADCTL 0x36
102 #define IPSDISPLAY_CMD_VSCRSADD 0x37
103 #define IPSDISPLAY_CMD_IDMOFF 0x38
104 #define IPSDISPLAY_CMD_IDMON 0x39
105 #define IPSDISPLAY_CMD_COLMOD 0x3A
106 #define IPSDISPLAY_CMD_RAMWRC 0x3C
107 #define IPSDISPLAY_CMD_RAMRDC 0x3E
108 #define IPSDISPLAY_CMD_TESCAN 0x44
109 #define IPSDISPLAY_CMD_RDTESCAN 0x45
110 #define IPSDISPLAY_CMD_WRDISBV 0x51
111 #define IPSDISPLAY_CMD_RDDISBV 0x52
112 #define IPSDISPLAY_CMD_WRCTRLD 0x53
113 #define IPSDISPLAY_CMD_RDCTRLD 0x54
114 #define IPSDISPLAY_CMD_WRCACE 0x55
115 #define IPSDISPLAY_CMD_RDCABC 0x56
116 #define IPSDISPLAY_CMD_WRCABCMB 0x5E
117 #define IPSDISPLAY_CMD_RDCABCMB 0x5F
118 #define IPSDISPLAY_CMD_RDABCSDR 0x68
119 #define IPSDISPLAY_CMD_RDID1 0xDA
120 #define IPSDISPLAY_CMD_RDID2 0xDB
121 #define IPSDISPLAY_CMD_RDID3 0xDC
122 
127 #define IPSDISPLAY_CMD_RAMCTRL 0xB0
128 #define IPSDISPLAY_CMD_RGBCTRL 0xB1
129 #define IPSDISPLAY_CMD_PORCTRL 0xB2
130 #define IPSDISPLAY_CMD_FRCTRL1 0xB3
131 #define IPSDISPLAY_CMD_PARCTRL 0xB5
132 #define IPSDISPLAY_CMD_GCTRL 0xB7
133 #define IPSDISPLAY_CMD_GTADJ 0xB8
134 #define IPSDISPLAY_CMD_DGMEN 0xBA
135 #define IPSDISPLAY_CMD_VCOMS 0xBB
136 #define IPSDISPLAY_CMD_POWSAVE 0xBC
137 #define IPSDISPLAY_CMD_DLPOFFSAVE 0xBD
138 #define IPSDISPLAY_CMD_LCMCTRL 0xC0
139 #define IPSDISPLAY_CMD_IDSET 0xC1
140 #define IPSDISPLAY_CMD_VDVVRHEN 0xC2
141 #define IPSDISPLAY_CMD_VRHS 0xC3
142 #define IPSDISPLAY_CMD_VDVSET 0xC4
143 #define IPSDISPLAY_CMD_VCMOFSET 0xC5
144 #define IPSDISPLAY_CMD_FRCTR2 0xC6
145 #define IPSDISPLAY_CMD_CABCCTRL 0xC7
146 #define IPSDISPLAY_CMD_REGSEL1 0xC8
147 #define IPSDISPLAY_CMD_REGSEL2 0xCA
148 #define IPSDISPLAY_CMD_PWMFRSEL 0xCC
149 #define IPSDISPLAY_CMD_PWCTRL1 0xD0
150 #define IPSDISPLAY_CMD_VAPVANEN 0xD2
151 #define IPSDISPLAY_CMD_CMD2EN0 0xDF
152 #define IPSDISPLAY_CMD_CMD2EN1 0x5A
153 #define IPSDISPLAY_CMD_CMD2EN2 0x69
154 #define IPSDISPLAY_CMD_CMD2EN3 0x02
155 #define IPSDISPLAY_CMD_PVGAMCTRL 0xE0
156 #define IPSDISPLAY_CMD_NVGAMCTRL 0xE1
157 #define IPSDISPLAY_CMD_DGMLUTR 0xE2
158 #define IPSDISPLAY_CMD_DGMLUTB 0xE3
159 #define IPSDISPLAY_CMD_GATECTRL 0xE4
160 #define IPSDISPLAY_CMD_SPI2EN 0xE7
161 #define IPSDISPLAY_CMD_PWCTRL2 0xE8
162 #define IPSDISPLAY_CMD_EQCTRL 0xE9
163 #define IPSDISPLAY_CMD_PROMCTRL 0xEC
164 #define IPSDISPLAY_CMD_PROMEN 0xFA
165 #define IPSDISPLAY_CMD_NVMSET 0xFC
166 #define IPSDISPLAY_CMD_PROMACT 0xFE
167  // ipsdisplay_cmd
169 
184 #define IPSDISPLAY_MADCTL_DEFAULT 0x00
185 #define IPSDISPLAY_MADCTL_MY 0x80
186 #define IPSDISPLAY_MADCTL_MX 0x40
187 #define IPSDISPLAY_MADCTL_MV 0x20
188 #define IPSDISPLAY_MADCTL_ML 0x10
189 #define IPSDISPLAY_MADCTL_RGB 0x08
190 #define IPSDISPLAY_MADCTL_MH 0x04
191 
196 #define IPSDISPLAY_COLMOD_RGB_65K 0x50
197 #define IPSDISPLAY_COLMOD_RGB_262K 0x60
198 #define IPSDISPLAY_COLMOD_RGB_MASK 0x70
199 #define IPSDISPLAY_COLMOD_CTRL_12BIT_PIXEL 0x03
200 #define IPSDISPLAY_COLMOD_CTRL_16BIT_PIXEL 0x05
201 #define IPSDISPLAY_COLMOD_CTRL_18BIT_PIXEL 0x06
202 #define IPSDISPLAY_COLMOD_CTRL_16M_TRUNCATED 0x07
203 #define IPSDISPLAY_COLMOD_CTRL_MASK 0x07
204 
209 #define IPSDISPLAY_PORCTRL_0_BPA_DEFAULT 0x0C
210 #define IPSDISPLAY_PORCTRL_0_BPA_MASK 0x7F
211 #define IPSDISPLAY_PORCTRL_1_FPA_DEFAULT 0x0C
212 #define IPSDISPLAY_PORCTRL_1_FPA_MASK 0x7F
213 #define IPSDISPLAY_PORCTRL_2_PSEN_DISABLE 0x00
214 #define IPSDISPLAY_PORCTRL_2_PSEN_ENABLE 0x01
215 #define IPSDISPLAY_PORCTRL_3_BPB_DEFAULT 0x30
216 #define IPSDISPLAY_PORCTRL_3_BPB_MASK 0xF0
217 #define IPSDISPLAY_PORCTRL_3_FPB_DEFAULT 0x03
218 #define IPSDISPLAY_PORCTRL_3_FPB_MASK 0x0F
219 #define IPSDISPLAY_PORCTRL_4_BPC_DEFAULT 0x30
220 #define IPSDISPLAY_PORCTRL_4_BPC_MASK 0xF0
221 #define IPSDISPLAY_PORCTRL_4_FPC_DEFAULT 0x03
222 #define IPSDISPLAY_PORCTRL_4_FPC_MASK 0x0F
223 
228 #define IPSDISPLAY_GCTRL_VGHS_DEFAULT 0x30
229 #define IPSDISPLAY_GCTRL_VGHS_MASK 0x70
230 #define IPSDISPLAY_GCTRL_VGLS_DEFAULT 0x05
231 #define IPSDISPLAY_GCTRL_VGLS_MASK 0x07
232 
237 #define IPSDISPLAY_VCOMS_VCOM_DEFAULT 0x19
238 #define IPSDISPLAY_VCOMS_VCOM_MASK 0x3F
239 
244 #define IPSDISPLAY_LCMCTRL_XMY 0x40
245 #define IPSDISPLAY_LCMCTRL_XBGR 0x20
246 #define IPSDISPLAY_LCMCTRL_XINV 0x10
247 #define IPSDISPLAY_LCMCTRL_XMX 0x08
248 #define IPSDISPLAY_LCMCTRL_XMH 0x04
249 #define IPSDISPLAY_LCMCTRL_XMV 0x02
250 #define IPSDISPLAY_LCMCTRL_XGS 0x01
251 
256 #define IPSDISPLAY_VDVVRHEN_CMDEN_DISABLE 0x00
257 #define IPSDISPLAY_VDVVRHEN_CMDEN_ENABLE 0x01
258 
263 #define IPSDISPLAY_VRHS_DEFAULT 0x12
264 #define IPSDISPLAY_VRHS_MASK 0x3F
265 
270 #define IPSDISPLAY_VDVSET_DEFAULT 0x20
271 #define IPSDISPLAY_VDVSET_MASK 0x3F
272 
277 #define IPSDISPLAY_FRCTR2_NLA_DEFAULT 0x00
278 #define IPSDISPLAY_FRCTR2_NLA_MASK 0xE0
279 #define IPSDISPLAY_FRCTR2_RTNA_DEFAULT 0x0F
280 #define IPSDISPLAY_FRCTR2_RTNA_MASK 0x1F
281 
286 #define IPSDISPLAY_PWCTRL1_0_DEFAULT 0xA4
287 #define IPSDISPLAY_PWCTRL1_1_AVDD_DEFAULT 0x80
288 #define IPSDISPLAY_PWCTRL1_1_AVDD_MASK 0xC0
289 #define IPSDISPLAY_PWCTRL1_1_AVCL_DEFAULT 0x20
290 #define IPSDISPLAY_PWCTRL1_1_AVCL_MASK 0x30
291 #define IPSDISPLAY_PWCTRL1_1_VDS_DEFAULT 0x01
292 #define IPSDISPLAY_PWCTRL1_1_VDS_MASK 0x03
293 
298 #define IPSDISPLAY_PVGAMCTRL_0_V63P_DEFAULT 0xD0
299 #define IPSDISPLAY_PVGAMCTRL_0_V63P_MASK 0xF0
300 #define IPSDISPLAY_PVGAMCTRL_0_V0P_DEFAULT 0x00
301 #define IPSDISPLAY_PVGAMCTRL_0_V0P_MASK 0x0F
302 #define IPSDISPLAY_PVGAMCTRL_1_V1P_DEFAULT 0x04
303 #define IPSDISPLAY_PVGAMCTRL_1_V1P_MASK 0x3F
304 #define IPSDISPLAY_PVGAMCTRL_2_V2P_DEFAULT 0x0D
305 #define IPSDISPLAY_PVGAMCTRL_2_V2P_MASK 0x3F
306 #define IPSDISPLAY_PVGAMCTRL_3_V4P_DEFAULT 0x11
307 #define IPSDISPLAY_PVGAMCTRL_3_V4P_MASK 0x1F
308 #define IPSDISPLAY_PVGAMCTRL_4_V6P_DEFAULT 0x13
309 #define IPSDISPLAY_PVGAMCTRL_4_V6P_MASK 0x1F
310 #define IPSDISPLAY_PVGAMCTRL_5_J0P_DEFAULT 0x20
311 #define IPSDISPLAY_PVGAMCTRL_5_J0P_MASK 0x30
312 #define IPSDISPLAY_PVGAMCTRL_5_J13P_DEFAULT 0x0B
313 #define IPSDISPLAY_PVGAMCTRL_5_J13P_MASK 0x0F
314 #define IPSDISPLAY_PVGAMCTRL_6_V20P_DEFAULT 0x3F
315 #define IPSDISPLAY_PVGAMCTRL_6_V20P_MASK 0x7F
316 #define IPSDISPLAY_PVGAMCTRL_7_V36P_DEFAULT 0x50
317 #define IPSDISPLAY_PVGAMCTRL_7_V36P_MASK 0x70
318 #define IPSDISPLAY_PVGAMCTRL_7_V27P_DEFAULT 0x04
319 #define IPSDISPLAY_PVGAMCTRL_7_V27P_MASK 0x07
320 #define IPSDISPLAY_PVGAMCTRL_8_V43P_DEFAULT 0x4C
321 #define IPSDISPLAY_PVGAMCTRL_8_V43P_MASK 0x7F
322 #define IPSDISPLAY_PVGAMCTRL_9_J1P_DEFAULT 0x10
323 #define IPSDISPLAY_PVGAMCTRL_9_11P_MASK 0x30
324 #define IPSDISPLAY_PVGAMCTRL_9_V50P_DEFAULT 0x08
325 #define IPSDISPLAY_PVGAMCTRL_9_V50P_MASK 0x0F
326 #define IPSDISPLAY_PVGAMCTRL_10_V57P_DEFAULT 0x0D
327 #define IPSDISPLAY_PVGAMCTRL_10_V57P_MASK 0x1F
328 #define IPSDISPLAY_PVGAMCTRL_11_V59P_DEFAULT 0x0B
329 #define IPSDISPLAY_PVGAMCTRL_11_V59P_MASK 0x1F
330 #define IPSDISPLAY_PVGAMCTRL_12_V61P_DEFAULT 0x1F
331 #define IPSDISPLAY_PVGAMCTRL_12_V61P_MASK 0x3F
332 #define IPSDISPLAY_PVGAMCTRL_13_V62P_DEFAULT 0x23
333 #define IPSDISPLAY_PVGAMCTRL_13_V62P_MASK 0x3F
334 
339 #define IPSDISPLAY_NVGAMCTRL_0_V63N_DEFAULT 0xD0
340 #define IPSDISPLAY_NVGAMCTRL_0_V63N_MASK 0xF0
341 #define IPSDISPLAY_NVGAMCTRL_0_V0N_DEFAULT 0x00
342 #define IPSDISPLAY_NVGAMCTRL_0_V0N_MASK 0x0F
343 #define IPSDISPLAY_NVGAMCTRL_1_V1N_DEFAULT 0x04
344 #define IPSDISPLAY_NVGAMCTRL_1_V1N_MASK 0x3F
345 #define IPSDISPLAY_NVGAMCTRL_2_V2N_DEFAULT 0x0C
346 #define IPSDISPLAY_NVGAMCTRL_2_V2N_MASK 0x3F
347 #define IPSDISPLAY_NVGAMCTRL_3_V4N_DEFAULT 0x11
348 #define IPSDISPLAY_NVGAMCTRL_3_V4N_MASK 0x1F
349 #define IPSDISPLAY_NVGAMCTRL_4_V6N_DEFAULT 0x13
350 #define IPSDISPLAY_NVGAMCTRL_4_V6N_MASK 0x1F
351 #define IPSDISPLAY_NVGAMCTRL_5_J0N_DEFAULT 0x20
352 #define IPSDISPLAY_NVGAMCTRL_5_J0N_MASK 0x30
353 #define IPSDISPLAY_NVGAMCTRL_5_J13N_DEFAULT 0x0C
354 #define IPSDISPLAY_NVGAMCTRL_5_J13N_MASK 0x0F
355 #define IPSDISPLAY_NVGAMCTRL_6_V20N_DEFAULT 0x3F
356 #define IPSDISPLAY_NVGAMCTRL_6_V20N_MASK 0x7F
357 #define IPSDISPLAY_NVGAMCTRL_7_V36N_DEFAULT 0x40
358 #define IPSDISPLAY_NVGAMCTRL_7_V36N_MASK 0x70
359 #define IPSDISPLAY_NVGAMCTRL_7_V27N_DEFAULT 0x04
360 #define IPSDISPLAY_NVGAMCTRL_7_V27N_MASK 0x07
361 #define IPSDISPLAY_NVGAMCTRL_8_V43N_DEFAULT 0x51
362 #define IPSDISPLAY_NVGAMCTRL_8_V43N_MASK 0x7F
363 #define IPSDISPLAY_NVGAMCTRL_9_J1N_DEFAULT 0x20
364 #define IPSDISPLAY_NVGAMCTRL_9_11N_MASK 0x30
365 #define IPSDISPLAY_NVGAMCTRL_9_V50N_DEFAULT 0x0F
366 #define IPSDISPLAY_NVGAMCTRL_9_V50N_MASK 0x0F
367 #define IPSDISPLAY_NVGAMCTRL_10_V57N_DEFAULT 0x1F
368 #define IPSDISPLAY_NVGAMCTRL_10_V57N_MASK 0x1F
369 #define IPSDISPLAY_NVGAMCTRL_11_V59N_DEFAULT 0x1F
370 #define IPSDISPLAY_NVGAMCTRL_11_V59N_MASK 0x1F
371 #define IPSDISPLAY_NVGAMCTRL_12_V61N_DEFAULT 0x20
372 #define IPSDISPLAY_NVGAMCTRL_12_V61N_MASK 0x3F
373 #define IPSDISPLAY_NVGAMCTRL_13_V62N_DEFAULT 0x23
374 #define IPSDISPLAY_NVGAMCTRL_13_V62N_MASK 0x3F
375 
380 #define IPSDISPLAY_RES_WIDTH 135
381 #define IPSDISPLAY_RES_HEIGHT 240
382 #define IPSDISPLAY_NUM_PIXELS ( ( uint16_t ) IPSDISPLAY_RES_WIDTH * IPSDISPLAY_RES_HEIGHT )
383 
388 #define IPSDISPLAY_POS_WIDTH_MIN 0
389 #define IPSDISPLAY_POS_WIDTH_MAX ( IPSDISPLAY_RES_WIDTH - 1 )
390 #define IPSDISPLAY_POS_HEIGHT_MIN 0
391 #define IPSDISPLAY_POS_HEIGHT_MAX ( IPSDISPLAY_RES_HEIGHT - 1 )
392 #define IPSDISPLAY_POS_OFFSET_LEFT 52
393 #define IPSDISPLAY_POS_OFFSET_RIGHT 53
394 #define IPSDISPLAY_POS_OFFSET_UP 40
395 #define IPSDISPLAY_POS_OFFSET_DOWN 40
396 
401 #define IPSDISPLAY_FONT_WIDTH 6
402 #define IPSDISPLAY_FONT_HEIGHT 12
403 #define IPSDISPLAY_FONT_TEXT_SPACE 1
404 #define IPSDISPLAY_FONT_ASCII_OFFSET 32
405 #define IPSDISPLAY_FONT_WIDTH_MSB 0x80
406 
411 #define IPSDISPLAY_ROTATION_VERTICAL_0 0
412 #define IPSDISPLAY_ROTATION_VERTICAL_180 1
413 #define IPSDISPLAY_ROTATION_HORIZONTAL_0 2
414 #define IPSDISPLAY_ROTATION_HORIZONTAL_180 3
415 
420 #define IPSDISPLAY_COLOR_BLACK 0x0000
421 #define IPSDISPLAY_COLOR_WHITE 0xFFFF
422 #define IPSDISPLAY_COLOR_RED 0xF800
423 #define IPSDISPLAY_COLOR_LIME 0x07E0
424 #define IPSDISPLAY_COLOR_BLUE 0x001F
425 #define IPSDISPLAY_COLOR_YELLOW 0xFFE0
426 #define IPSDISPLAY_COLOR_CYAN 0x07FF
427 #define IPSDISPLAY_COLOR_MAGENTA 0xF81F
428 #define IPSDISPLAY_COLOR_SILVER 0xBDF7
429 #define IPSDISPLAY_COLOR_GRAY 0x8410
430 #define IPSDISPLAY_COLOR_MAROON 0x8000
431 #define IPSDISPLAY_COLOR_OLIVE 0x8400
432 #define IPSDISPLAY_COLOR_GREEN 0x0400
433 #define IPSDISPLAY_COLOR_PURPLE 0x8010
434 #define IPSDISPLAY_COLOR_TEAL 0x0410
435 #define IPSDISPLAY_COLOR_NAVY 0x0010
436 
445 #define IPSDISPLAY_SET_DATA_SAMPLE_EDGE SET_SPI_DATA_SAMPLE_EDGE
446 #define IPSDISPLAY_SET_DATA_SAMPLE_MIDDLE SET_SPI_DATA_SAMPLE_MIDDLE
447  // ipsdisplay_set
449 
464 #define IPSDISPLAY_MAP_MIKROBUS( cfg, mikrobus ) \
465  cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \
466  cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \
467  cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \
468  cfg.cs = MIKROBUS( mikrobus, MIKROBUS_CS ); \
469  cfg.rst = MIKROBUS( mikrobus, MIKROBUS_RST ); \
470  cfg.dc = MIKROBUS( mikrobus, MIKROBUS_INT )
471  // ipsdisplay_map // ipsdisplay
474 
479 typedef struct
480 {
481  // Output pins
482  digital_out_t rst;
483  digital_out_t dc;
484  digital_out_t cs;
486  // Modules
487  spi_master_t spi;
489  uint8_t rotation;
491 } ipsdisplay_t;
492 
497 typedef struct
498 {
499  // Communication gpio pins
500  pin_name_t miso;
501  pin_name_t mosi;
502  pin_name_t sck;
503  pin_name_t cs;
505  // Additional gpio pins
506  pin_name_t rst;
507  pin_name_t dc;
509  // static variable
510  uint32_t spi_speed;
511  spi_master_mode_t spi_mode;
514 
519 typedef struct
520 {
521  uint16_t x;
522  uint16_t y;
525 
530 typedef enum
531 {
533  IPSDISPLAY_ERROR = -1
534 
536 
553 
568 
582 
594 err_t ipsdisplay_write_cmd ( ipsdisplay_t *ctx, uint8_t cmd );
595 
610 err_t ipsdisplay_write_cmd_par ( ipsdisplay_t *ctx, uint8_t cmd, uint8_t *data_in, uint8_t len );
611 
624 err_t ipsdisplay_write_data ( ipsdisplay_t *ctx, uint16_t *data_in, uint16_t len );
625 
635 
645 
655 
665 
675 
690 err_t ipsdisplay_set_rotation ( ipsdisplay_t *ctx, uint8_t rotation );
691 
707 
719 err_t ipsdisplay_fill_screen ( ipsdisplay_t *ctx, uint16_t color );
720 
736 err_t ipsdisplay_write_char ( ipsdisplay_t *ctx, ipsdisplay_point_t start_pt, uint8_t data_in, uint16_t color );
737 
753 err_t ipsdisplay_write_string ( ipsdisplay_t *ctx, ipsdisplay_point_t start_pt, uint8_t *data_in, uint16_t color );
754 
768 err_t ipsdisplay_draw_pixel ( ipsdisplay_t *ctx, ipsdisplay_point_t start_pt, uint16_t color );
769 
786  ipsdisplay_point_t end_pt, uint16_t color );
787 
804  ipsdisplay_point_t end_pt, uint16_t color );
805 
819 err_t ipsdisplay_draw_circle ( ipsdisplay_t *ctx, ipsdisplay_point_t center_pt, uint8_t radius, uint16_t color );
820 
836 err_t ipsdisplay_draw_picture ( ipsdisplay_t *ctx, uint8_t rotation, const uint16_t *image );
837 
838 #ifdef __cplusplus
839 }
840 #endif
841 #endif // IPSDISPLAY_H
842  // ipsdisplay
844 
845 // ------------------------------------------------------------------------ END
ipsdisplay_draw_circle
err_t ipsdisplay_draw_circle(ipsdisplay_t *ctx, ipsdisplay_point_t center_pt, uint8_t radius, uint16_t color)
IPS Display draw circle function.
ipsdisplay_t::rst
digital_out_t rst
Definition: ipsdisplay.h:482
ipsdisplay_cfg_t::cs
pin_name_t cs
Definition: ipsdisplay.h:503
ipsdisplay_cfg_t::spi_speed
uint32_t spi_speed
Definition: ipsdisplay.h:510
ipsdisplay_cfg_t::rst
pin_name_t rst
Definition: ipsdisplay.h:506
ipsdisplay_point_t
IPS Display Click point coordinates object.
Definition: ipsdisplay.h:520
ipsdisplay_t::cs
digital_out_t cs
Definition: ipsdisplay.h:484
spi_specifics.h
This file contains SPI specific macros, functions, etc.
ipsdisplay_reset_device
void ipsdisplay_reset_device(ipsdisplay_t *ctx)
IPS Display reset device function.
ipsdisplay_write_cmd
err_t ipsdisplay_write_cmd(ipsdisplay_t *ctx, uint8_t cmd)
IPS Display write cmd function.
ipsdisplay_cfg_t
IPS Display Click configuration object.
Definition: ipsdisplay.h:498
ipsdisplay_draw_rectangle
err_t ipsdisplay_draw_rectangle(ipsdisplay_t *ctx, ipsdisplay_point_t start_pt, ipsdisplay_point_t end_pt, uint16_t color)
IPS Display draw rectangle function.
ipsdisplay_t
IPS Display Click context object.
Definition: ipsdisplay.h:480
ipsdisplay_t::rotation
uint8_t rotation
Definition: ipsdisplay.h:489
ipsdisplay_write_char
err_t ipsdisplay_write_char(ipsdisplay_t *ctx, ipsdisplay_point_t start_pt, uint8_t data_in, uint16_t color)
IPS Display write char function.
ipsdisplay_cfg_t::sck
pin_name_t sck
Definition: ipsdisplay.h:502
ipsdisplay_point_t::y
uint16_t y
Definition: ipsdisplay.h:522
ipsdisplay_draw_picture
err_t ipsdisplay_draw_picture(ipsdisplay_t *ctx, uint8_t rotation, const uint16_t *image)
IPS Display draw picture function.
ipsdisplay_init
err_t ipsdisplay_init(ipsdisplay_t *ctx, ipsdisplay_cfg_t *cfg)
IPS Display initialization function.
ipsdisplay_cfg_setup
void ipsdisplay_cfg_setup(ipsdisplay_cfg_t *cfg)
IPS Display configuration object setup function.
ipsdisplay_draw_line
err_t ipsdisplay_draw_line(ipsdisplay_t *ctx, ipsdisplay_point_t start_pt, ipsdisplay_point_t end_pt, uint16_t color)
IPS Display draw line function.
IPSDISPLAY_OK
@ IPSDISPLAY_OK
Definition: ipsdisplay.h:532
IPSDISPLAY_ERROR
@ IPSDISPLAY_ERROR
Definition: ipsdisplay.h:533
ipsdisplay_t::spi
spi_master_t spi
Definition: ipsdisplay.h:487
ipsdisplay_set_rotation
err_t ipsdisplay_set_rotation(ipsdisplay_t *ctx, uint8_t rotation)
IPS Display set rotation function.
ipsdisplay_disable_device
void ipsdisplay_disable_device(ipsdisplay_t *ctx)
IPS Display disable device function.
ipsdisplay_default_cfg
err_t ipsdisplay_default_cfg(ipsdisplay_t *ctx)
IPS Display default configuration function.
ipsdisplay_cfg_t::miso
pin_name_t miso
Definition: ipsdisplay.h:500
ipsdisplay_t::dc
digital_out_t dc
Definition: ipsdisplay.h:483
ipsdisplay_point_t::x
uint16_t x
Definition: ipsdisplay.h:521
ipsdisplay_cfg_t::mosi
pin_name_t mosi
Definition: ipsdisplay.h:501
ipsdisplay_write_string
err_t ipsdisplay_write_string(ipsdisplay_t *ctx, ipsdisplay_point_t start_pt, uint8_t *data_in, uint16_t color)
IPS Display write string function.
ipsdisplay_draw_pixel
err_t ipsdisplay_draw_pixel(ipsdisplay_t *ctx, ipsdisplay_point_t start_pt, uint16_t color)
IPS Display draw pixel function.
ipsdisplay_enable_device
void ipsdisplay_enable_device(ipsdisplay_t *ctx)
IPS Display enable device function.
ipsdisplay_cfg_t::spi_mode
spi_master_mode_t spi_mode
Definition: ipsdisplay.h:511
ipsdisplay_enter_data_mode
void ipsdisplay_enter_data_mode(ipsdisplay_t *ctx)
IPS Display enter data mode function.
ipsdisplay_enter_cmd_mode
void ipsdisplay_enter_cmd_mode(ipsdisplay_t *ctx)
IPS Display enter cmd mode function.
ipsdisplay_fill_screen
err_t ipsdisplay_fill_screen(ipsdisplay_t *ctx, uint16_t color)
IPS Display fill screen function.
ipsdisplay_write_cmd_par
err_t ipsdisplay_write_cmd_par(ipsdisplay_t *ctx, uint8_t cmd, uint8_t *data_in, uint8_t len)
IPS Display write cmd par function.
ipsdisplay_return_value_t
ipsdisplay_return_value_t
IPS Display Click return value data.
Definition: ipsdisplay.h:531
ipsdisplay_write_data
err_t ipsdisplay_write_data(ipsdisplay_t *ctx, uint16_t *data_in, uint16_t len)
IPS Display write data function.
ipsdisplay_set_pos
err_t ipsdisplay_set_pos(ipsdisplay_t *ctx, ipsdisplay_point_t start_pt, ipsdisplay_point_t end_pt)
IPS Display set pos function.
ipsdisplay_cfg_t::dc
pin_name_t dc
Definition: ipsdisplay.h:507