修正开关Cat1的pin脚控制逻辑。
authorSnickerSun <snickersun@163.com>
Wed, 20 Dec 2023 07:11:46 +0000 (15:11 +0800)
committerSnickerSun <snickersun@163.com>
Wed, 20 Dec 2023 07:11:46 +0000 (15:11 +0800)
添加 AT^CAT1RESET AT^CAT1PWRON 两个指令
默认关闭Cat1,当下问题,Cat1的uart影响日志输出。

code/sdk/application/wstp/at_service/app/app_at_process.c
code/sdk/application/wstp/at_service/app/app_cmd_manager.c
code/sdk/application/wstp/at_service/app/app_msg_manager.h
code/sdk/drivers/boards/brandy_evb/board_config/board_evb.h

index db8a140..357c95a 100755 (executable)
@@ -1587,15 +1587,50 @@ static uint32_t adc_manu_sample_adc(uint8_t *para, uint32_t para_len)
 }
 static uint32_t cat1_power_on(uint8_t *para, uint32_t para_len)
 {
-    uapi_gpio_set_dir(S_AGPIO_L23, HAL_GPIO_DIRECTION_OUTPUT);
-    uapi_gpio_set_val(S_AGPIO_L23, HAL_GPIO_LEVEL_LOW);
-    uapi_gpio_set_dir(S_AGPIO_L28, HAL_GPIO_DIRECTION_OUTPUT);
-    uapi_gpio_set_val(S_AGPIO_L28, HAL_GPIO_LEVEL_HIGH);
-    UNUSED(para);
-    UNUSED(para_len);
+    uint32_t pwron = 0;
+    if(para_len > 0)
+    {
+        char *ptr = (char *)para;
+        pwron = strtoul(ptr, NULL, 10); // 10: 十进制
+    }
+
+    if( pwron == 0)
+    {
+        uapi_gpio_set_dir(S_AGPIO_L23, HAL_GPIO_DIRECTION_OUTPUT);
+        uapi_gpio_set_val(S_AGPIO_L23, HAL_GPIO_LEVEL_LOW);
+        wstp_print("Power OFF Cat1! L23 low  \r\n");
+    }else{
+        uapi_gpio_set_dir(S_AGPIO_L23, HAL_GPIO_DIRECTION_OUTPUT);
+        uapi_gpio_set_val(S_AGPIO_L23, HAL_GPIO_LEVEL_HIGH);
+        wstp_print("Power ON Cat1! L23 high \r\n");
+    }
+    
     wstp_print("cat1_power_on\r\n" );
     return 0;
 }
+static uint32_t cat1_reset(uint8_t *para, uint32_t para_len)
+{
+    uint32_t pwron = 0;
+    if(para_len > 0)
+    {
+        char *ptr = (char *)para;
+        pwron = strtoul(ptr, NULL, 10); // 10: 十进制
+    }
+
+    if( pwron == 0)
+    {
+        uapi_gpio_set_dir(S_AGPIO_L28, HAL_GPIO_DIRECTION_OUTPUT);
+        uapi_gpio_set_val(S_AGPIO_L28, HAL_GPIO_LEVEL_HIGH);
+        wstp_print("clear reset Cat1! L28 high \r\n");
+    }else{
+        uapi_gpio_set_dir(S_AGPIO_L28, HAL_GPIO_DIRECTION_OUTPUT);
+        uapi_gpio_set_val(S_AGPIO_L28, HAL_GPIO_LEVEL_LOW); 
+        wstp_print("Reset Cat1! L28 low\r\n");
+    }
+    
+    wstp_print("cat1_reset\r\n" );
+    return 0;
+}
 static void pm_lcd_off_handle(void)
 {
     writew(0x570000c0, 0x0);   // display logic crg reset
@@ -2585,7 +2620,8 @@ static const app_process_table g_app_funcs[] = {
 #ifdef SUPPORT_ALIPAY_SEC
     { ALIPAYSECTEST,        mcu_alipay_sec_test },
 #endif
-    { CAT1PWRON,          cat1_power_on},
+    { CAT1PWRON,            cat1_power_on},
+    { CAT1RESET,            cat1_reset},
 };
 
 void app_at_process(uint8_t *data, uint32_t data_len)
index 3e22500..df1567e 100755 (executable)
@@ -641,6 +641,16 @@ static uint32_t app_cat1pwron(uint8_t *para, uint32_t para_len, char *str_cmd)
     app_pkg_msg_send(CAT1PWRON, DIAG_CONTROL_FALSE, para, para_len);
     return ERRCODE_SUCC;
 }
+static uint32_t app_cat1reset(uint8_t *para, uint32_t para_len, char *str_cmd)
+{
+    unused(str_cmd);
+    if (para == NULL) {
+        return ERRCODE_FAIL;
+    }
+    app_pkg_msg_send(CAT1RESET, DIAG_CONTROL_FALSE, para, para_len);
+    return ERRCODE_SUCC;
+}
+
 static uint32_t app_button_sample(uint8_t *para, uint32_t para_len, char *str_cmd)
 {
     unused(str_cmd);
@@ -962,6 +972,7 @@ static const at_cmd_table_t g_app_cmd[] = {
     { "AT^I2CREAD", app_i2c_read,                  "" },
     { "AT^ALIPAYSECTEST",  app_alipay_sec_test,              "" },
     { "AT^CAT1PWRON",  app_cat1pwron,              "" },
+    { "AT^CAT1RESET",  app_cat1reset,               ""},
     
 };
 
index e638747..7114e5b 100755 (executable)
@@ -101,6 +101,7 @@ typedef enum {
     ALIPAYSECTEST       = 0x46,
     ADCMANUDATA         = 0x47,
     CAT1PWRON           = 0x48,
+    CAT1RESET           = 0x49,
     MSG_ID_MAX_BUTT,
 } app_msg_id;
 
index 014a7f7..2e28e1a 100755 (executable)
@@ -170,12 +170,12 @@ const hal_pio_config_t g_pio_function_config[PIN_MAX_NUMBER] = {
 #else
     { HAL_PIO_FUNC_TE, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },      // S_AGPIO_L22 MIPI TE
 #endif
-    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_AGPIO_L23 CAT_1_PWR_ON 控制CAT_1开机脚,或者控制 CAT1电源   拉低有效
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_NONE, HAL_PIO_IE_DISABLE },   // S_AGPIO_L23 CAT_1_PWR_ON 控制CAT_1开机脚,或者控制 CAT1电源   拉高有效
     { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_AGPIO_L24 LCM_EN
     { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_AGPIO_L25  //////////// audio pa reset
     { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_AGPIO_L26 心率复位 PPG reset
     { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_AGPIO_L27    LCM reset
-    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_AGPIO_L28    CAT_1复位 CAT1_RESET_N  拉低有效
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_NONE, HAL_PIO_IE_DISABLE },   // S_AGPIO_L28    CAT_1复位 CAT1_RESET_N  拉低有效
     { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },   // S_AGPIO_L29    charge done info 检测是否充满电
     { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_AGPIO_L30   KP_MKIN1 唤醒 CAT1 ,输出
     { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },   // S_AGPIO_L31    KP_MKOUIT1 唤醒 蓝牙 ,输入
@@ -231,13 +231,13 @@ const hal_pio_config_t g_pio_function_config[PIN_MAX_NUMBER] = {
 const hal_gpio_config_t g_gpio_function_config[PIN_MAX_NUMBER] = {
 
 #if DEFAULT_POWERON_CAT1
-    //    S_AGPIO_L23 CAT_1_PWR_ON ----- low power on
-    {   S_AGPIO_L23, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
+    //    S_AGPIO_L23 CAT_1_PWR_ON ----- high power on
+    {   S_AGPIO_L23, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
    // S_AGPIO_L28   Cat1 reset  ---- low reset
     {   S_AGPIO_L28, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
 #else
-  //    S_AGPIO_L23 CAT_1_PWR_ON ----- low power on
-    {   S_AGPIO_L23, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
+  //    S_AGPIO_L23 CAT_1_PWR_ON ----- high power on
+    {   S_AGPIO_L23, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
    // S_AGPIO_L28   Cat1 reset  ---- low reset
     {   S_AGPIO_L28, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
 #endif