lcd休眠下sleep指令
authorSnickerSun <snickersun@163.com>
Mon, 8 Apr 2024 13:02:43 +0000 (21:02 +0800)
committerSnickerSun <snickersun@163.com>
Mon, 8 Apr 2024 13:02:43 +0000 (21:02 +0800)
code/sdk/drivers/peripheral/lcd/lcd_config.c
code/sdk/drivers/peripheral/lcd/lcd_private.c

index 0c9284e..1687a7a 100644 (file)
@@ -86,6 +86,14 @@ const lcd_cmd_sequ g_common_cmd_display_off[] = {
     {1, 1, {0x10}, 120},       /* sleep in */
 };
 
+/* display off sequence for common lcd */
+const lcd_cmd_sequ g_common_466x466_cmd_display_off[] = {
+    {1, 2, {0xfe, 0x00}, 0},   /* select default cmd page */
+    {1, 1, {0x28}, 0},         /* display off */
+    {1, 1, {0x10}, 120},       /* sleep in */
+    {1, 2, {0x4f, 0x01}, 0},   /* 进deepstandby 状态 */
+};
+
 /* sleep in sequence for common lcd */
 const lcd_cmd_sequ g_common_cmd_sleep_in[] = {
     {1, 2, {0xfe, 0x00}, 0},   /* select default cmd page */
@@ -225,6 +233,11 @@ const lcd_cmds_sequ g_display_off_cmds = {
     .cmd_cnt = array_size(g_common_cmd_display_off),
 };
 
+const lcd_cmds_sequ g_466x466_display_off_cmds = {
+    .cmd = g_common_466x466_cmd_display_off,
+    .cmd_cnt = array_size(g_common_466x466_cmd_display_off),
+};
+
 const lcd_cmds_sequ g_idle_in_cmds = {
     .cmd = g_common_cmd_idle_in,
     .cmd_cnt = array_size(g_common_cmd_idle_in),
@@ -294,7 +307,7 @@ const lcd_drv_cfg g_lcd_driver_ops[] = {
         .fps                  = 60,
         .lcd_id               = LCD_EDO_466X466_SCREEN_ID,
         .display_on_cmds      = &g_edo_466x466_screen_init_on_cmds,
-        .display_off_cmds     = &g_display_off_cmds,
+        .display_off_cmds     = &g_466x466_display_off_cmds,
         .enter_idle_cmds      = &g_idle_in_cmds,
         .exit_idle_cmds       = &g_idle_out_cmds,
         .te_on_cmds           = &g_te_on_cmds,
index 52cf9a6..0554c31 100644 (file)
@@ -12,7 +12,7 @@
 #include "gpio.h"
 #include "pinctrl_porting.h"
 #include "product.h"
-
+#include "pinctrl.h"
 static void lcd_drv_power_on(void)
 {
 #ifndef QSPI_DISPLAY
@@ -27,16 +27,35 @@ static void lcd_drv_power_on(void)
     uapi_gpio_set_val(RESET_LCD_GPIO, GPIO_LEVEL_HIGH);
     uapi_tcxo_delay_ms(10); /* delay 10 ms */
 }
-
+#define  USE_OUTPUT_CTL 1
 static void lcd_drv_power_off(void)
 {
+#if USE_OUTPUT_CTL
+    uapi_gpio_set_dir(RESET_LCD_GPIO, GPIO_DIRECTION_OUTPUT); 
+    uapi_gpio_set_val(RESET_LCD_GPIO, GPIO_LEVEL_LOW);
+    #ifndef QSPI_DISPLAY
+    uapi_gpio_set_dir(VCI_LCD_GPIO, GPIO_DIRECTION_OUTPUT);
+    uapi_gpio_set_val(VCI_LCD_GPIO, GPIO_LEVEL_LOW);
+    #endif
+    uapi_tcxo_delay_ms(10); /* delay 10 ms */
+    int resetvalue = uapi_gpio_get_output_val(RESET_LCD_GPIO);
+    int lcd_envalue = uapi_gpio_get_output_val(VCI_LCD_GPIO);
+    printf("Output RESET_LCD_GPIO %d , VCI_LCD_GPIO %d\r\n",resetvalue,lcd_envalue);
+#else
     uapi_gpio_set_val(RESET_LCD_GPIO, GPIO_LEVEL_LOW);
     uapi_gpio_set_dir(RESET_LCD_GPIO, GPIO_DIRECTION_INPUT); //设置成Input,是为了解决漏电 ??
-#ifndef QSPI_DISPLAY
+    uapi_pin_set_pull(RESET_LCD_GPIO, PIN_PULL_DOWN);
+    #ifndef QSPI_DISPLAY
     uapi_gpio_set_val(VCI_LCD_GPIO, GPIO_LEVEL_LOW);
     uapi_gpio_set_dir(VCI_LCD_GPIO, GPIO_DIRECTION_INPUT);
-#endif
+    uapi_pin_set_pull(VCI_LCD_GPIO, PIN_PULL_DOWN);
+    #endif
     uapi_tcxo_delay_ms(10); /* delay 10 ms */
+    int resetvalue = uapi_gpio_get_val(RESET_LCD_GPIO);
+    int lcd_envalue = uapi_gpio_get_val(VCI_LCD_GPIO);
+    printf("Input RESET_LCD_GPIO %d , VCI_LCD_GPIO %d\r\n",resetvalue,lcd_envalue);
+#endif
+   
 }
 
 static lcd_drv_private g_lcd_private_api = {