From fcbbc2c7c81a2c9c163e81d38fe028c309c4295b Mon Sep 17 00:00:00 2001
From: zhangbo <zhangbo@qq.com>
Date: 星期五, 16 五月 2025 16:36:56 +0800
Subject: [PATCH] 对比测试

---
 keil/include/drivers/PCA9555.c |  118 +++++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 83 insertions(+), 35 deletions(-)

diff --git a/keil/include/drivers/PCA9555.c b/keil/include/drivers/PCA9555.c
index 1c93802..5037a8d 100644
--- a/keil/include/drivers/PCA9555.c
+++ b/keil/include/drivers/PCA9555.c
@@ -1,5 +1,6 @@
 #include "PCA9555.h"
 #include "mk_power.h"
+//#include "DBG.h"
 #include "lora_3029.h"
 uint8_t gps_led_output_state,tts_enbale_output_state,wake_up_output_state,air780e_enable_output_state,sos_enable_output_state,gps_backup_output_state,gps_power_output_state,main_ri_output_state;//1组output IO口从左到右1.0~1.7
 uint8_t mcu_a_output_state,chg_g_output_state,lora_irq_output_state,lora_nrst_output_state,adc_minius_output_state,input_5v_output_state,pwr_on_output_state,pwr_enable_output_state;//2组output IO口从左到右0.0~0.7
@@ -79,7 +80,7 @@
     uint8_t ucErrTime=0;
 //  IIC2_SDA_IN();  
  
-	gpio_pin_set_dir(SDA_PIN,GPIO_DIR_IN,1); //SDA设置为输入等待接收端的应答信号
+	gpio_pin_set_dir(SDA_PIN,GPIO_DIR_IN,0); //SDA设置为输入等待接收端的应答信号
 	 SDA_1;
 	delay_us(6);
 	SCL_1;
@@ -107,7 +108,7 @@
 void IIC2_pca_send_Ack(void)
 {
     SCL_0;
-    SDA_0;//读取SDA电平为低则有应答
+///    SDA_0;//读取SDA电平为低则有应答
     delay_us(10);
     SCL_1;
 		delay_us(10);
@@ -462,15 +463,49 @@
 /*读取5V引脚的输入高低电平
   返回值 高1 低0 电平
 */
+uint16_t gpio_state111;
+extern uint8_t input5v_time;
+uint8_t _5VState = 0;
+uint8_t Get5VState()
+{
+    return _5VState;
+}
+
+void Set5VState(uint8_t state)
+{
+//    if(_5VState != state)
+//    {
+//        DBG_SetMode(DBG_MODE_CHARGE);
+//    }
+    _5VState = state;
+}
+
 int read_5v_input_pca(void)
-{PCA9555_readdata(PCA9555_DEVICE_ADDR,pca9555writedata_input);//读输入寄存器的值
-	uint16_t gpio_state;
-	gpio_state=(uint16_t)pca9555writedata_input[0]<<8|pca9555writedata_input[1];
-//	if(INPUT_5V_POSITION&gpio_state)
-//		return 1;
-//	else {
-//		return 0;
-//	}
+{
+    if(input5v_time)
+    {
+        input5v_time=0;    
+        PCA9555_readdata(PCA9555_DEVICE_ADDR,pca9555writedata_input);//读输入寄存器的值
+        uint16_t gpio_state;
+        gpio_state=(uint16_t)pca9555writedata_input[0]<<8|pca9555writedata_input[1];
+        gpio_state111=gpio_state;
+        if(gpio_state==0xFFFF)
+        {return 0;}
+        if(IN_5V_POSITION&gpio_state)
+        {
+            Set5VState(1);
+            return 1;
+        }
+        else
+        {
+            Set5VState(0);
+            return 0;
+        }
+    }
+    else {
+        Set5VState(0);
+		return 0;
+	}
 }
 /*读取供电引脚的输入高低电平
   返回值 高1 低0 电平
@@ -530,16 +565,23 @@
 	  PCA9555_Set_One_Value_Config(GREEN_LED,0);   //设置GREEN_LED为输出
 	  //管脚
 	  PCA9555_Set_One_Value_Config(LORA_NRST,0);	//设置LORA_NRST为输出
-	  PCA9555_Set_One_Value_Config(BT_EN,0);			//设置BT_EN为输出	
+	  PCA9555_Set_One_Value_Config(BT_EN,0);			//设置BT_EN为输出
+		PCA9555_Set_One_Value_Output(BT_EN,1);	
 	  PCA9555_Set_One_Value_Config(MOTO,0);       //设置MOTO为输出
 	
+	  PCA9555_Set_One_Value_Config(PWR_GND,0);	  //设置PWR_GND为输出	
+	  PCA9555_Set_One_Value_Output(PWR_GND,0);    //拉低
+	
 		//PCA9555_Set_One_Value_Config(LORA_IRQ,1);		//设置LORAIRQ为输入
-	  PCA9555_Set_One_Value_Config(BT_IRQ,1);		  //设置BT_IRQ为输入
+
     PCA9555_Set_One_Value_Config(WK_UP,1);			//设置WK_UP为输入
 		PCA9555_Set_One_Value_Config(SOS_ENBALE,1);	//设置SOS为输入
 	  PCA9555_Set_One_Value_Config(IN_5V,1);      //设置IN_5V为输入
 	  PCA9555_Set_One_Value_Config(CHGN,1);      //设置CHGN为输入   //充电芯片输入芯片IIC输入脚
-		
+		PCA9555_Set_One_Value_Config(BT_IRQ,1);
+		PCA9555_Set_One_Value_Output(BT_IRQ,0);
+BT_ON;
+BT_OFF;
 //	  PCA9555_Set_One_Value_Output(BT_LED,0);
 //	  PCA9555_Set_One_Value_Output(UWB_LED,0);
 //	PCA9555_Set_One_Value_Config(GPS_POWER,0);//设置GPS为输出
@@ -567,7 +609,8 @@
 //存在复位问题  
 
 //	PCA9555_Set_One_Value_Config(SOS_ENBALE,1);//设置SOS按钮输入
-  LORA_NRST_UP;	
+  LORA_NRST_UP;
+  LORA_NRST_DOWN;	
 	LORA_LED_OFF;
 	GREEN_LED_OFF;
 	UWB_LED_OFF;
@@ -597,17 +640,24 @@
 
 }
 uint8_t LORA_IRQ_flag=0;
-uint8_t Sos_state;
+uint8_t SOS_KEY_STATE=0;
+extern uint16_t uwb_time_count;
 void SOS_irq_callback()
 {
-	Sos_state=!Sos_state;
-	if(Sos_state)
+	SOS_KEY_STATE=!SOS_KEY_STATE;
+	if(SOS_KEY_STATE)
 	{
-	RED_LED_ON;
+//	GREEN_LED_ON;
+//	onemin_onesecond_flag=1;
+//	uwb_time_count=0;
+//	CloseUWB();
 	}
 	else
 	{
-	RED_LED_OFF;
+//	onemin_onesecond_flag=0;
+//	GREEN_LED_OFF;
+//	uwb_time_count=0;
+//	CloseUWB();
 	}
 
 }
@@ -617,37 +667,35 @@
 //}
 void move_handler()
 {
-    nomove_count=0;
-	  Sos_state=!Sos_state;
-		if(Sos_state)
-	{
-		GREEN_LED_ON;
-	}
-	else
-	{
-    GREEN_LED_OFF;
-	}
-	  
+    nomove_count=0;	 	
+		
 }
+
 void check_input_change(void)
 {
         uint16_t gpio_state;
         gpio_state=(uint16_t)pca9555writedata_input[0]<<8|pca9555writedata_input[1];
-				if(BT_IRQ_POSITION&gpio_state)
-				{
+//				if(BT_IRQ_POSITION&gpio_state)
+//				{
 
-				}
+//				}
 				if(!(SOS_ENBALE_POSITION&gpio_state))
 				{
          SOS_irq_callback();
 				}
 			  if(WK_UP_POSITION&gpio_state)
 				{
+				 //移动
          move_handler();
 				}
+				if(BT_IRQ_POSITION&gpio_state)
+				{
 
-        //uart_change_check(gpio_state);
+				}
+
 }
+
+
 
 
 //static void pca_input_detect_irq_handler(enum IO_PIN_T pin)
@@ -662,7 +710,7 @@
         gpio_pin_set_dir(PCA_INPUT_DETECT , GPIO_DIR_IN, 0);
         io_pull_set(PCA_INPUT_DETECT, IO_PULL_UP, IO_PULL_UP_LEVEL2);
         gpio_enable_irq(PCA_INPUT_DETECT, GPIO_IRQ_TYPE_FALLING_EDGE, irq_handler);
-        power_wakeup_enable((enum POWER_WAKEUP_SOURCE_T)PCA_INPUT_DETECT, POWER_WAKEUP_LEVEL_LOW);
+//        power_wakeup_enable((enum POWER_WAKEUP_SOURCE_T)PCA_INPUT_DETECT, POWER_WAKEUP_LEVEL_LOW);
 }
 
 

--
Gitblit v1.9.3