1 /**
2  * @file lv_st7735.c
3  *
4  */
5 
6 /*********************
7  *      INCLUDES
8  *********************/
9 #include "lv_st7735.h"
10 
11 #if LV_USE_ST7735
12 
13 /*********************
14  *      DEFINES
15  *********************/
16 
17 #define CMD_GAMSET      0x26
18 
19 #define CMD_FRMCTR1     0xB1
20 #define CMD_FRMCTR2     0xB2
21 #define CMD_FRMCTR3     0xB3
22 #define CMD_INVCTR      0xB4
23 #define CMD_DISSET5     0xB6
24 
25 #define CMD_PWCTR1      0xC0
26 #define CMD_PWCTR2      0xC1
27 #define CMD_PWCTR3      0xC2
28 #define CMD_PWCTR4      0xC3
29 #define CMD_PWCTR5      0xC4
30 #define CMD_VMCTR1      0xC5
31 #define CMD_VMOFCTR     0xC7
32 
33 #define CMD_NVFCTR1     0xD9
34 
35 #define CMD_GMCTRP1     0xE0
36 #define CMD_GMCTRN1     0xE1
37 
38 #define CMD_PWCTR6      0xFC
39 
40 /**********************
41  *      TYPEDEFS
42  **********************/
43 
44 /**********************
45  *  STATIC PROTOTYPES
46  **********************/
47 
48 /**********************
49  *  STATIC CONSTANTS
50  **********************/
51 
52 /* init commands for buydisplay.com ER-TFTM018-3 */
53 static const uint8_t init_cmd_list[] = {
54     0xB1,       3,  0x05, 0x3C, 0x3C,
55     0xB2,       3,  0x05, 0x3C, 0x3C,
56     0xB3,       6,  0x05, 0x3C, 0x3C, 0x05, 0x3C, 0x3C,
57     0xB4,       1,  0x03,
58     0xC0,       3,  0x28, 0x08, 0x04,
59     0xC1,       1,  0XC0,
60     0xC2,       2,  0x0D, 0x00,
61     0xC3,       2,  0x8D, 0x2A,
62     0xC4,       2,  0x8D, 0xEE,
63     0xC5,       1,  0x10,
64     0xE0,       16, 0x04, 0x22, 0x07, 0x0A, 0x2E, 0x30, 0x25, 0x2A, 0x28, 0x26, 0x2E, 0x3A, 0x00, 0x01, 0x03, 0x13,
65     0xE1,       16, 0x04, 0x16, 0x06, 0x0D, 0x2D, 0x26, 0x23, 0x27, 0x27, 0x25, 0x2D, 0x3B, 0x00, 0x01, 0x04, 0x13,
66     LV_LCD_CMD_DELAY_MS, LV_LCD_CMD_EOF
67 };
68 
69 /**********************
70  *  STATIC VARIABLES
71  **********************/
72 
73 /**********************
74  *      MACROS
75  **********************/
76 
77 /**********************
78  *   GLOBAL FUNCTIONS
79  **********************/
80 
lv_st7735_create(uint32_t hor_res,uint32_t ver_res,lv_lcd_flag_t flags,lv_st7735_send_cmd_cb_t send_cmd_cb,lv_st7735_send_color_cb_t send_color_cb)81 lv_display_t * lv_st7735_create(uint32_t hor_res, uint32_t ver_res, lv_lcd_flag_t flags,
82                                 lv_st7735_send_cmd_cb_t send_cmd_cb, lv_st7735_send_color_cb_t send_color_cb)
83 {
84     lv_display_t * disp = lv_lcd_generic_mipi_create(hor_res, ver_res, flags, send_cmd_cb, send_color_cb);
85     lv_lcd_generic_mipi_send_cmd_list(disp, init_cmd_list);
86     return disp;
87 }
88 
lv_st7735_set_gap(lv_display_t * disp,uint16_t x,uint16_t y)89 void lv_st7735_set_gap(lv_display_t * disp, uint16_t x, uint16_t y)
90 {
91     lv_lcd_generic_mipi_set_gap(disp, x, y);
92 }
93 
lv_st7735_set_invert(lv_display_t * disp,bool invert)94 void lv_st7735_set_invert(lv_display_t * disp, bool invert)
95 {
96     lv_lcd_generic_mipi_set_invert(disp, invert);
97 }
98 
lv_st7735_set_gamma_curve(lv_display_t * disp,uint8_t gamma)99 void lv_st7735_set_gamma_curve(lv_display_t * disp, uint8_t gamma)
100 {
101     lv_lcd_generic_mipi_set_gamma_curve(disp, gamma);
102 }
103 
lv_st7735_send_cmd_list(lv_display_t * disp,const uint8_t * cmd_list)104 void lv_st7735_send_cmd_list(lv_display_t * disp, const uint8_t * cmd_list)
105 {
106     lv_lcd_generic_mipi_send_cmd_list(disp, cmd_list);
107 }
108 
109 /**********************
110  *   STATIC FUNCTIONS
111  **********************/
112 
113 #endif  /*LV_USE_ST7735*/
114