Browse Source

add:lcd新增sleepcmd wakecmd direction0 direction90 direction180 direction270参数

Dozingfiretruck 2 years ago
parent
commit
b8742a1675
3 changed files with 40 additions and 6 deletions
  1. 2 2
      components/lcd/luat_lcd.c
  2. 5 1
      components/lcd/luat_lcd.h
  3. 33 3
      components/lcd/luat_lib_lcd.c

+ 2 - 2
components/lcd/luat_lcd.c

@@ -209,7 +209,7 @@ int luat_lcd_sleep(luat_lcd_conf_t* conf) {
     if (conf->pin_pwr != 255)
         luat_gpio_set(conf->pin_pwr, Luat_GPIO_LOW);
     luat_rtos_task_sleep(5);
-    lcd_write_cmd_data(conf,0x10, NULL, 0);
+    lcd_write_cmd_data(conf,conf->opts->sleep_cmd?conf->opts->sleep_cmd:LUAT_LCD_DEFAULT_SLEEP, NULL, 0);
     return 0;
 }
 
@@ -217,7 +217,7 @@ int luat_lcd_wakeup(luat_lcd_conf_t* conf) {
     if (conf->pin_pwr != 255)
         luat_gpio_set(conf->pin_pwr, Luat_GPIO_HIGH);
     luat_rtos_task_sleep(5);
-    lcd_write_cmd_data(conf,0x11, NULL, 0);
+    lcd_write_cmd_data(conf,conf->opts->wakeup_cmd?conf->opts->wakeup_cmd:LUAT_LCD_DEFAULT_WAKEUP, NULL, 0);
     return 0;
 }
 

+ 5 - 1
components/lcd/luat_lcd.h

@@ -32,8 +32,10 @@
 
 struct luat_lcd_opts;
 
-enum{
+#define LUAT_LCD_DEFAULT_SLEEP  0X10
+#define LUAT_LCD_DEFAULT_WAKEUP 0X11
 
+enum{
 	LUAT_LCD_IM_3_WIRE_9_BIT_INTERFACE_I = 5,
 	LUAT_LCD_IM_4_WIRE_8_BIT_INTERFACE_I = 6,
 	LUAT_LCD_IM_3_WIRE_9_BIT_INTERFACE_II = 13,
@@ -74,6 +76,8 @@ typedef struct luat_lcd_conf {
 
 typedef struct luat_lcd_opts {
     const char* name;
+    uint8_t sleep_cmd;
+    uint8_t wakeup_cmd;
     uint8_t direction0;
     uint8_t direction90;
     uint8_t direction180;

+ 33 - 3
components/lcd/luat_lib_lcd.c

@@ -67,7 +67,7 @@ luat_color_t lcd_str_fg_color,lcd_str_bg_color;
 lcd显示屏初始化
 @api lcd.init(tp, args)
 @string lcd类型,当前支持:<br>st7796<br>st7789<br>st7735<br>st7735v<br>st7735s<br>gc9a01<br>gc9106l<br>gc9306x<br>ili9486<br>custom
-@table 附加参数,与具体设备有关:<br>pin_pwr(背光)为可选项,可不设置<br>port:spi端口,例如0,1,2...如果为device方式则为"device"<br>pin_dc:lcd数据/命令选择引脚<br>pin_rst:lcd复位引脚<br>pin_pwr:lcd背光引脚 可选项,可不设置<br>direction:lcd屏幕方向 0:0° 1:180° 2:270° 3:90°<br>w:lcd 水平分辨率<br>h:lcd 竖直分辨率<br>xoffset:x偏移(不同屏幕ic 不同屏幕方向会有差异)<br>yoffset:y偏移(不同屏幕ic 不同屏幕方向会有差异)
+@table 附加参数,与具体设备有关:<br>pin_pwr(背光)为可选项,可不设置<br>port:spi端口,例如0,1,2...如果为device方式则为"device"<br>pin_dc:lcd数据/命令选择引脚<br>pin_rst:lcd复位引脚<br>pin_pwr:lcd背光引脚 可选项,可不设置<br>direction:lcd屏幕方向 0:0° 1:180° 2:270° 3:90°<br>w:lcd 水平分辨率<br>h:lcd 竖直分辨率<br>xoffset:x偏移(不同屏幕ic 不同屏幕方向会有差异)<br>yoffset:y偏移(不同屏幕ic 不同屏幕方向会有差异)<br>direction0:0°方向命令,(不同屏幕ic会有差异)<br>direction90:90°方向命令,(不同屏幕ic会有差异)<br>direction180:180°方向命令,(不同屏幕ic会有差异)<br>direction270:270°方向命令,(不同屏幕ic会有差异) <br>sleepcmd:睡眠命令,默认0X10<br>wakecmd:唤醒命令,默认0X11
 @userdata spi设备,当port = "device"时有效
 @usage
 -- 初始化spi0的st7735s 注意:lcd初始化之前需要先初始化spi
@@ -153,30 +153,60 @@ static int l_lcd_init(lua_State* L) {
                 conf->direction = luaL_checkinteger(L, -1);
             }
             lua_pop(L, 1);
+            lua_pushstring(L, "direction0");
+            if (LUA_TNUMBER == lua_gettable(L, 2)) {
+                conf->opts->direction0 = luaL_checkinteger(L, -1);
+            }
+            lua_pop(L, 1);
+            lua_pushstring(L, "direction90");
+            if (LUA_TNUMBER == lua_gettable(L, 2)) {
+                conf->opts->direction90 = luaL_checkinteger(L, -1);
+            }
+            lua_pop(L, 1);
+            lua_pushstring(L, "direction180");
+            if (LUA_TNUMBER == lua_gettable(L, 2)) {
+                conf->opts->direction180 = luaL_checkinteger(L, -1);
+            }
+            lua_pop(L, 1);
+            lua_pushstring(L, "direction270");
+            if (LUA_TNUMBER == lua_gettable(L, 2)) {
+                conf->opts->direction270 = luaL_checkinteger(L, -1);
+            }
+            lua_pop(L, 1);
 
             lua_pushstring(L, "w");
             if (LUA_TNUMBER == lua_gettable(L, 2)) {
                 conf->w = luaL_checkinteger(L, -1);
             }
             lua_pop(L, 1);
-
             lua_pushstring(L, "h");
             if (LUA_TNUMBER == lua_gettable(L, 2)) {
                 conf->h = luaL_checkinteger(L, -1);
             }
             lua_pop(L, 1);
             conf->buffer_size = (conf->w * conf->h) * 2;
+
             lua_pushstring(L, "xoffset");
             if (LUA_TNUMBER == lua_gettable(L, 2)) {
                 conf->xoffset = luaL_checkinteger(L, -1);
             }
             lua_pop(L, 1);
-
             lua_pushstring(L, "yoffset");
             if (LUA_TNUMBER == lua_gettable(L, 2)) {
                 conf->yoffset = luaL_checkinteger(L, -1);
             }
             lua_pop(L, 1);
+
+            lua_pushstring(L, "sleepcmd");
+            if (LUA_TNUMBER == lua_gettable(L, 2)) {
+                conf->opts->sleep_cmd = luaL_checkinteger(L, -1);
+            }
+            lua_pop(L, 1);
+            lua_pushstring(L, "wakecmd");
+            if (LUA_TNUMBER == lua_gettable(L, 2)) {
+                conf->opts->wakeup_cmd = luaL_checkinteger(L, -1);
+            }
+            lua_pop(L, 1);
         }
         if (s_index == 0){
             unsigned int cmd = 0;