|
@@ -1,176 +1,176 @@
|
|
|
-#include "luat_base.h"
|
|
|
|
|
-#include "luat_lcd.h"
|
|
|
|
|
-#include "luat_gpio.h"
|
|
|
|
|
-#include "luat_spi.h"
|
|
|
|
|
-#include "luat_malloc.h"
|
|
|
|
|
-#include "luat_timer.h"
|
|
|
|
|
-
|
|
|
|
|
-#define LUAT_LOG_TAG "gc9306"
|
|
|
|
|
-#include "luat_log.h"
|
|
|
|
|
-
|
|
|
|
|
-#define LCD_W 240
|
|
|
|
|
-#define LCD_H 320
|
|
|
|
|
-#define LCD_DIRECTION 0
|
|
|
|
|
-
|
|
|
|
|
-static int gc9306_init(luat_lcd_conf_t* conf) {
|
|
|
|
|
- if (conf->w == 0)
|
|
|
|
|
- conf->w = LCD_W;
|
|
|
|
|
- if (conf->h == 0)
|
|
|
|
|
- conf->h = LCD_H;
|
|
|
|
|
- if (conf->direction == 0)
|
|
|
|
|
- conf->direction = LCD_DIRECTION;
|
|
|
|
|
-
|
|
|
|
|
- if (conf->pin_pwr != 255)
|
|
|
|
|
- luat_gpio_mode(conf->pin_pwr, Luat_GPIO_OUTPUT, Luat_GPIO_DEFAULT, Luat_GPIO_LOW); // POWER
|
|
|
|
|
- luat_gpio_mode(conf->pin_dc, Luat_GPIO_OUTPUT, Luat_GPIO_DEFAULT, Luat_GPIO_HIGH); // DC
|
|
|
|
|
- luat_gpio_mode(conf->pin_rst, Luat_GPIO_OUTPUT, Luat_GPIO_DEFAULT, Luat_GPIO_LOW); // RST
|
|
|
|
|
-
|
|
|
|
|
- if (conf->pin_pwr != 255)
|
|
|
|
|
- luat_gpio_set(conf->pin_pwr, Luat_GPIO_LOW);
|
|
|
|
|
- luat_gpio_set(conf->pin_rst, Luat_GPIO_LOW);
|
|
|
|
|
- luat_timer_mdelay(100);
|
|
|
|
|
- luat_gpio_set(conf->pin_rst, Luat_GPIO_HIGH);
|
|
|
|
|
-
|
|
|
|
|
- // 发送初始化命令
|
|
|
|
|
- lcd_write_cmd(conf,0xfe);
|
|
|
|
|
- lcd_write_cmd(conf,0xef);
|
|
|
|
|
-
|
|
|
|
|
- lcd_write_cmd(conf,0x36);
|
|
|
|
|
- if(conf->direction==0)lcd_write_data(conf,0x48);
|
|
|
|
|
- else if(conf->direction==1)lcd_write_data(conf,0xE8);
|
|
|
|
|
- else if(conf->direction==2)lcd_write_data(conf,0x28);
|
|
|
|
|
- else lcd_write_data(conf,0x38);
|
|
|
|
|
-
|
|
|
|
|
- lcd_write_cmd(conf,0x3a);
|
|
|
|
|
- lcd_write_data(conf,0x05);
|
|
|
|
|
-
|
|
|
|
|
- lcd_write_cmd(conf,0xad);
|
|
|
|
|
- lcd_write_data(conf,0x33);
|
|
|
|
|
- lcd_write_cmd(conf,0xaf);
|
|
|
|
|
- lcd_write_data(conf,0x55);
|
|
|
|
|
- lcd_write_cmd(conf,0xae);
|
|
|
|
|
- lcd_write_data(conf,0x2b);
|
|
|
|
|
-
|
|
|
|
|
- lcd_write_cmd(conf,0xa4);
|
|
|
|
|
- lcd_write_data(conf,0x44);
|
|
|
|
|
- lcd_write_data(conf,0x44);
|
|
|
|
|
-
|
|
|
|
|
- lcd_write_cmd(conf,0xa5);
|
|
|
|
|
- lcd_write_data(conf,0x42);
|
|
|
|
|
- lcd_write_data(conf,0x42);
|
|
|
|
|
-
|
|
|
|
|
- lcd_write_cmd(conf,0xaa);
|
|
|
|
|
- lcd_write_data(conf,0x88);
|
|
|
|
|
- lcd_write_data(conf,0x88);
|
|
|
|
|
-
|
|
|
|
|
- lcd_write_cmd(conf,0xae);
|
|
|
|
|
- lcd_write_data(conf,0x2b);
|
|
|
|
|
-
|
|
|
|
|
- lcd_write_cmd(conf,0xe8);
|
|
|
|
|
- lcd_write_data(conf,0x11);
|
|
|
|
|
- lcd_write_data(conf,0x0b);
|
|
|
|
|
-
|
|
|
|
|
- lcd_write_cmd(conf,0xe3);
|
|
|
|
|
- lcd_write_data(conf,0x01);
|
|
|
|
|
- lcd_write_data(conf,0x10);
|
|
|
|
|
-
|
|
|
|
|
- lcd_write_cmd(conf,0xff);
|
|
|
|
|
- lcd_write_data(conf,0x61);
|
|
|
|
|
- lcd_write_cmd(conf,0xac);
|
|
|
|
|
- lcd_write_data(conf,0x00);
|
|
|
|
|
-
|
|
|
|
|
- lcd_write_cmd(conf,0xaf);
|
|
|
|
|
- lcd_write_data(conf,0x67);
|
|
|
|
|
- lcd_write_cmd(conf,0xa6);
|
|
|
|
|
- lcd_write_data(conf,0x2a);
|
|
|
|
|
- lcd_write_data(conf,0x2a);
|
|
|
|
|
-
|
|
|
|
|
- lcd_write_cmd(conf,0xa7);
|
|
|
|
|
- lcd_write_data(conf,0x2b);
|
|
|
|
|
- lcd_write_data(conf,0x2b);
|
|
|
|
|
-
|
|
|
|
|
- lcd_write_cmd(conf,0xa8);
|
|
|
|
|
- lcd_write_data(conf,0x18);
|
|
|
|
|
- lcd_write_data(conf,0x18);
|
|
|
|
|
-
|
|
|
|
|
- lcd_write_cmd(conf,0xa9);
|
|
|
|
|
- lcd_write_data(conf,0x2a);
|
|
|
|
|
- lcd_write_data(conf,0x2a);
|
|
|
|
|
-
|
|
|
|
|
- lcd_write_cmd(conf,0x2a);
|
|
|
|
|
- lcd_write_data(conf,0x00);
|
|
|
|
|
- lcd_write_data(conf,0x00);
|
|
|
|
|
- lcd_write_data(conf,0x00);
|
|
|
|
|
- lcd_write_data(conf,0xef);
|
|
|
|
|
- lcd_write_cmd(conf,0x2b);
|
|
|
|
|
- lcd_write_data(conf,0x00);
|
|
|
|
|
- lcd_write_data(conf,0x00);
|
|
|
|
|
- lcd_write_data(conf,0x01);
|
|
|
|
|
- lcd_write_data(conf,0x3f);
|
|
|
|
|
- lcd_write_cmd(conf,0x2c);
|
|
|
|
|
-
|
|
|
|
|
- lcd_write_cmd(conf,0xF0);
|
|
|
|
|
- lcd_write_data(conf,0x02);
|
|
|
|
|
- lcd_write_data(conf,0x00);
|
|
|
|
|
- lcd_write_data(conf,0x00);
|
|
|
|
|
- lcd_write_data(conf,0x1b);
|
|
|
|
|
- lcd_write_data(conf,0x1f);
|
|
|
|
|
- lcd_write_data(conf,0x0b);
|
|
|
|
|
-
|
|
|
|
|
- lcd_write_cmd(conf,0xF1);
|
|
|
|
|
- lcd_write_data(conf,0x01);
|
|
|
|
|
- lcd_write_data(conf,0x03);
|
|
|
|
|
- lcd_write_data(conf,0x00);
|
|
|
|
|
- lcd_write_data(conf,0x28);
|
|
|
|
|
- lcd_write_data(conf,0x2b);
|
|
|
|
|
- lcd_write_data(conf,0x0e);
|
|
|
|
|
-
|
|
|
|
|
- lcd_write_cmd(conf,0xF2);
|
|
|
|
|
- lcd_write_data(conf,0x0b);
|
|
|
|
|
- lcd_write_data(conf,0x08);
|
|
|
|
|
- lcd_write_data(conf,0x3b);
|
|
|
|
|
- lcd_write_data(conf,0x04);
|
|
|
|
|
- lcd_write_data(conf,0x03);
|
|
|
|
|
- lcd_write_data(conf,0x4c);
|
|
|
|
|
-
|
|
|
|
|
- lcd_write_cmd(conf,0xF3);
|
|
|
|
|
- lcd_write_data(conf,0x0e);
|
|
|
|
|
- lcd_write_data(conf,0x07);
|
|
|
|
|
- lcd_write_data(conf,0x46);
|
|
|
|
|
- lcd_write_data(conf,0x04);
|
|
|
|
|
- lcd_write_data(conf,0x05);
|
|
|
|
|
- lcd_write_data(conf,0x51);
|
|
|
|
|
-
|
|
|
|
|
- lcd_write_cmd(conf,0xF4);
|
|
|
|
|
- lcd_write_data(conf,0x08);
|
|
|
|
|
- lcd_write_data(conf,0x15);
|
|
|
|
|
- lcd_write_data(conf,0x15);
|
|
|
|
|
- lcd_write_data(conf,0x1f);
|
|
|
|
|
- lcd_write_data(conf,0x22);
|
|
|
|
|
- lcd_write_data(conf,0x0F);
|
|
|
|
|
-
|
|
|
|
|
- lcd_write_cmd(conf,0xF5);
|
|
|
|
|
- lcd_write_data(conf,0x0b);
|
|
|
|
|
- lcd_write_data(conf,0x13);
|
|
|
|
|
- lcd_write_data(conf,0x11);
|
|
|
|
|
- lcd_write_data(conf,0x1f);
|
|
|
|
|
- lcd_write_data(conf,0x21);
|
|
|
|
|
- lcd_write_data(conf,0x0F);
|
|
|
|
|
-
|
|
|
|
|
- /* Sleep Out */
|
|
|
|
|
- lcd_write_cmd(conf,0x11);
|
|
|
|
|
- /* wait for power stability */
|
|
|
|
|
- luat_timer_mdelay(100);
|
|
|
|
|
- lcd_write_cmd(conf,0x2c);
|
|
|
|
|
- luat_lcd_clear(conf,WHITE);
|
|
|
|
|
- /* display on */
|
|
|
|
|
- luat_lcd_display_on(conf);
|
|
|
|
|
- lcd_write_cmd(conf,0x2c);
|
|
|
|
|
- return 0;
|
|
|
|
|
-};
|
|
|
|
|
-
|
|
|
|
|
-const luat_lcd_opts_t lcd_opts_gc9306 = {
|
|
|
|
|
- .name = "gc9306",
|
|
|
|
|
- .init = gc9306_init,
|
|
|
|
|
-};
|
|
|
|
|
-
|
|
|
|
|
|
|
+#include "luat_base.h"
|
|
|
|
|
+#include "luat_lcd.h"
|
|
|
|
|
+#include "luat_gpio.h"
|
|
|
|
|
+#include "luat_spi.h"
|
|
|
|
|
+#include "luat_malloc.h"
|
|
|
|
|
+#include "luat_timer.h"
|
|
|
|
|
+
|
|
|
|
|
+#define LUAT_LOG_TAG "gc9306x"
|
|
|
|
|
+#include "luat_log.h"
|
|
|
|
|
+
|
|
|
|
|
+#define LCD_W 240
|
|
|
|
|
+#define LCD_H 320
|
|
|
|
|
+#define LCD_DIRECTION 0
|
|
|
|
|
+
|
|
|
|
|
+static int gc9306x_init(luat_lcd_conf_t* conf) {
|
|
|
|
|
+ if (conf->w == 0)
|
|
|
|
|
+ conf->w = LCD_W;
|
|
|
|
|
+ if (conf->h == 0)
|
|
|
|
|
+ conf->h = LCD_H;
|
|
|
|
|
+ if (conf->direction == 0)
|
|
|
|
|
+ conf->direction = LCD_DIRECTION;
|
|
|
|
|
+
|
|
|
|
|
+ if (conf->pin_pwr != 255)
|
|
|
|
|
+ luat_gpio_mode(conf->pin_pwr, Luat_GPIO_OUTPUT, Luat_GPIO_DEFAULT, Luat_GPIO_LOW); // POWER
|
|
|
|
|
+ luat_gpio_mode(conf->pin_dc, Luat_GPIO_OUTPUT, Luat_GPIO_DEFAULT, Luat_GPIO_HIGH); // DC
|
|
|
|
|
+ luat_gpio_mode(conf->pin_rst, Luat_GPIO_OUTPUT, Luat_GPIO_DEFAULT, Luat_GPIO_LOW); // RST
|
|
|
|
|
+
|
|
|
|
|
+ if (conf->pin_pwr != 255)
|
|
|
|
|
+ luat_gpio_set(conf->pin_pwr, Luat_GPIO_LOW);
|
|
|
|
|
+ luat_gpio_set(conf->pin_rst, Luat_GPIO_LOW);
|
|
|
|
|
+ luat_timer_mdelay(100);
|
|
|
|
|
+ luat_gpio_set(conf->pin_rst, Luat_GPIO_HIGH);
|
|
|
|
|
+
|
|
|
|
|
+ // 发送初始化命令
|
|
|
|
|
+ lcd_write_cmd(conf,0xfe);
|
|
|
|
|
+ lcd_write_cmd(conf,0xef);
|
|
|
|
|
+
|
|
|
|
|
+ lcd_write_cmd(conf,0x36);
|
|
|
|
|
+ if(conf->direction==0)lcd_write_data(conf,0x48);
|
|
|
|
|
+ else if(conf->direction==1)lcd_write_data(conf,0xE8);
|
|
|
|
|
+ else if(conf->direction==2)lcd_write_data(conf,0x28);
|
|
|
|
|
+ else lcd_write_data(conf,0x38);
|
|
|
|
|
+
|
|
|
|
|
+ lcd_write_cmd(conf,0x3a);
|
|
|
|
|
+ lcd_write_data(conf,0x05);
|
|
|
|
|
+
|
|
|
|
|
+ lcd_write_cmd(conf,0xad);
|
|
|
|
|
+ lcd_write_data(conf,0x33);
|
|
|
|
|
+ lcd_write_cmd(conf,0xaf);
|
|
|
|
|
+ lcd_write_data(conf,0x55);
|
|
|
|
|
+ lcd_write_cmd(conf,0xae);
|
|
|
|
|
+ lcd_write_data(conf,0x2b);
|
|
|
|
|
+
|
|
|
|
|
+ lcd_write_cmd(conf,0xa4);
|
|
|
|
|
+ lcd_write_data(conf,0x44);
|
|
|
|
|
+ lcd_write_data(conf,0x44);
|
|
|
|
|
+
|
|
|
|
|
+ lcd_write_cmd(conf,0xa5);
|
|
|
|
|
+ lcd_write_data(conf,0x42);
|
|
|
|
|
+ lcd_write_data(conf,0x42);
|
|
|
|
|
+
|
|
|
|
|
+ lcd_write_cmd(conf,0xaa);
|
|
|
|
|
+ lcd_write_data(conf,0x88);
|
|
|
|
|
+ lcd_write_data(conf,0x88);
|
|
|
|
|
+
|
|
|
|
|
+ lcd_write_cmd(conf,0xae);
|
|
|
|
|
+ lcd_write_data(conf,0x2b);
|
|
|
|
|
+
|
|
|
|
|
+ lcd_write_cmd(conf,0xe8);
|
|
|
|
|
+ lcd_write_data(conf,0x11);
|
|
|
|
|
+ lcd_write_data(conf,0x0b);
|
|
|
|
|
+
|
|
|
|
|
+ lcd_write_cmd(conf,0xe3);
|
|
|
|
|
+ lcd_write_data(conf,0x01);
|
|
|
|
|
+ lcd_write_data(conf,0x10);
|
|
|
|
|
+
|
|
|
|
|
+ lcd_write_cmd(conf,0xff);
|
|
|
|
|
+ lcd_write_data(conf,0x61);
|
|
|
|
|
+ lcd_write_cmd(conf,0xac);
|
|
|
|
|
+ lcd_write_data(conf,0x00);
|
|
|
|
|
+
|
|
|
|
|
+ lcd_write_cmd(conf,0xaf);
|
|
|
|
|
+ lcd_write_data(conf,0x67);
|
|
|
|
|
+ lcd_write_cmd(conf,0xa6);
|
|
|
|
|
+ lcd_write_data(conf,0x2a);
|
|
|
|
|
+ lcd_write_data(conf,0x2a);
|
|
|
|
|
+
|
|
|
|
|
+ lcd_write_cmd(conf,0xa7);
|
|
|
|
|
+ lcd_write_data(conf,0x2b);
|
|
|
|
|
+ lcd_write_data(conf,0x2b);
|
|
|
|
|
+
|
|
|
|
|
+ lcd_write_cmd(conf,0xa8);
|
|
|
|
|
+ lcd_write_data(conf,0x18);
|
|
|
|
|
+ lcd_write_data(conf,0x18);
|
|
|
|
|
+
|
|
|
|
|
+ lcd_write_cmd(conf,0xa9);
|
|
|
|
|
+ lcd_write_data(conf,0x2a);
|
|
|
|
|
+ lcd_write_data(conf,0x2a);
|
|
|
|
|
+
|
|
|
|
|
+ lcd_write_cmd(conf,0x2a);
|
|
|
|
|
+ lcd_write_data(conf,0x00);
|
|
|
|
|
+ lcd_write_data(conf,0x00);
|
|
|
|
|
+ lcd_write_data(conf,0x00);
|
|
|
|
|
+ lcd_write_data(conf,0xef);
|
|
|
|
|
+ lcd_write_cmd(conf,0x2b);
|
|
|
|
|
+ lcd_write_data(conf,0x00);
|
|
|
|
|
+ lcd_write_data(conf,0x00);
|
|
|
|
|
+ lcd_write_data(conf,0x01);
|
|
|
|
|
+ lcd_write_data(conf,0x3f);
|
|
|
|
|
+ lcd_write_cmd(conf,0x2c);
|
|
|
|
|
+
|
|
|
|
|
+ lcd_write_cmd(conf,0xF0);
|
|
|
|
|
+ lcd_write_data(conf,0x02);
|
|
|
|
|
+ lcd_write_data(conf,0x00);
|
|
|
|
|
+ lcd_write_data(conf,0x00);
|
|
|
|
|
+ lcd_write_data(conf,0x1b);
|
|
|
|
|
+ lcd_write_data(conf,0x1f);
|
|
|
|
|
+ lcd_write_data(conf,0x0b);
|
|
|
|
|
+
|
|
|
|
|
+ lcd_write_cmd(conf,0xF1);
|
|
|
|
|
+ lcd_write_data(conf,0x01);
|
|
|
|
|
+ lcd_write_data(conf,0x03);
|
|
|
|
|
+ lcd_write_data(conf,0x00);
|
|
|
|
|
+ lcd_write_data(conf,0x28);
|
|
|
|
|
+ lcd_write_data(conf,0x2b);
|
|
|
|
|
+ lcd_write_data(conf,0x0e);
|
|
|
|
|
+
|
|
|
|
|
+ lcd_write_cmd(conf,0xF2);
|
|
|
|
|
+ lcd_write_data(conf,0x0b);
|
|
|
|
|
+ lcd_write_data(conf,0x08);
|
|
|
|
|
+ lcd_write_data(conf,0x3b);
|
|
|
|
|
+ lcd_write_data(conf,0x04);
|
|
|
|
|
+ lcd_write_data(conf,0x03);
|
|
|
|
|
+ lcd_write_data(conf,0x4c);
|
|
|
|
|
+
|
|
|
|
|
+ lcd_write_cmd(conf,0xF3);
|
|
|
|
|
+ lcd_write_data(conf,0x0e);
|
|
|
|
|
+ lcd_write_data(conf,0x07);
|
|
|
|
|
+ lcd_write_data(conf,0x46);
|
|
|
|
|
+ lcd_write_data(conf,0x04);
|
|
|
|
|
+ lcd_write_data(conf,0x05);
|
|
|
|
|
+ lcd_write_data(conf,0x51);
|
|
|
|
|
+
|
|
|
|
|
+ lcd_write_cmd(conf,0xF4);
|
|
|
|
|
+ lcd_write_data(conf,0x08);
|
|
|
|
|
+ lcd_write_data(conf,0x15);
|
|
|
|
|
+ lcd_write_data(conf,0x15);
|
|
|
|
|
+ lcd_write_data(conf,0x1f);
|
|
|
|
|
+ lcd_write_data(conf,0x22);
|
|
|
|
|
+ lcd_write_data(conf,0x0F);
|
|
|
|
|
+
|
|
|
|
|
+ lcd_write_cmd(conf,0xF5);
|
|
|
|
|
+ lcd_write_data(conf,0x0b);
|
|
|
|
|
+ lcd_write_data(conf,0x13);
|
|
|
|
|
+ lcd_write_data(conf,0x11);
|
|
|
|
|
+ lcd_write_data(conf,0x1f);
|
|
|
|
|
+ lcd_write_data(conf,0x21);
|
|
|
|
|
+ lcd_write_data(conf,0x0F);
|
|
|
|
|
+
|
|
|
|
|
+ /* Sleep Out */
|
|
|
|
|
+ lcd_write_cmd(conf,0x11);
|
|
|
|
|
+ /* wait for power stability */
|
|
|
|
|
+ luat_timer_mdelay(100);
|
|
|
|
|
+ lcd_write_cmd(conf,0x2c);
|
|
|
|
|
+ luat_lcd_clear(conf,WHITE);
|
|
|
|
|
+ /* display on */
|
|
|
|
|
+ luat_lcd_display_on(conf);
|
|
|
|
|
+ lcd_write_cmd(conf,0x2c);
|
|
|
|
|
+ return 0;
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+const luat_lcd_opts_t lcd_opts_gc9306x = {
|
|
|
|
|
+ .name = "gc9306x",
|
|
|
|
|
+ .init = gc9306x_init,
|
|
|
|
|
+};
|
|
|
|
|
+
|