Преглед на файлове

发布版本:2.0.0.7,新增:1.三轴加速度函数。修改:1.屏蔽CAN唤醒,打开三轴唤醒,Rx采用上升沿唤醒。

CHENJIE-PC\QiXiang_CHENJIE преди 4 години
родител
ревизия
cd3ca647f3
променени са 8 файла, в които са добавени 320 реда и са изтрити 193 реда
  1. 2 1
      ARMCC/Makefile
  2. 3 3
      inc/app.h
  3. 25 25
      inc/sensor.h
  4. 16 6
      src/MainTask.c
  5. 6 6
      src/TcpTask.c
  6. 0 1
      src/app.c
  7. 7 7
      src/bsp_custom.c
  8. 261 144
      src/sensor.c

+ 2 - 1
ARMCC/Makefile

@@ -24,6 +24,7 @@ obj-y             += PLAT/project/$(TARGET)/apps/qx_app/src/app.o \
 					PLAT/project/$(TARGET)/apps/qx_app/src/GpsTask.o \
 					PLAT/project/$(TARGET)/apps/qx_app/src/CANTask.o \
 					PLAT/project/$(TARGET)/apps/qx_app/src/UDSService.o \
-					PLAT/project/$(TARGET)/apps/qx_app/src/Fota.o
+					PLAT/project/$(TARGET)/apps/qx_app/src/Fota.o \
+					PLAT/project/$(TARGET)/apps/qx_app/src/sensor.o
 
 include $(TOP)/PLAT/tools/scripts/Makefile.rules

+ 3 - 3
inc/app.h

@@ -15,7 +15,7 @@ extern "C" {
 //全局定义声明区
 #define BMS_MANUFACTURE (1) //BMS制造商表示1-超力源,2-美顺
 #define DATA_MODULE_TYPE (1) //1表示NB模块,2表示4G cat1
-#define BMS_INFO  (1)       //1-1表示超力源4830,1-2表示超力源6060,2-1表示美顺6455
+#define BMS_INFO  (2)       //1-1表示超力源4830,1-2表示超力源6060,2-1表示美顺6455
 
 #if  BMS_MANUFACTURE==1
     #if BMS_INFO==1
@@ -43,8 +43,8 @@ extern "C" {
 #define HWVERSION		    0x0102    //硬件主版本,现为V1.2板
 #define	BLSWVERSION		0x01020000    //BootLoader版本号V1.2.0.0
 #define	DRVSWVERSION		0x01040000     //驱动层版本号V1.4.0.0
-#define	APPSWVERSION		0x01020208     
-//#define	APPSWVERSION		0x02000006
+//#define	APPSWVERSION		0x01020208     
+#define	APPSWVERSION		0x02000007
 //--------------------------------------------------------------------------------
 
 #define APP_CONFIG_FILE_LATEST_VERSION 0

+ 25 - 25
inc/sensor.h

@@ -6,23 +6,23 @@
 #ifdef __cplusplus
 extern "C" {
 #endif
-/***使用驱动前请根据实际接线情况配置******/
-/**SC7A20的SDO 脚接地:  0****************/
-/**SC7A20的SDO 脚接电源:1****************/
+/***使锟斤拷锟斤拷锟斤拷前锟斤拷锟斤拷锟绞碉拷式锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷******/
+/**SC7A20锟斤拷SDO 锟脚接地o拷  0****************/
+/**SC7A20锟斤拷SDO 锟脚接碉拷源锟斤拷1****************/
 #define SC7A20_SDO_VDD_GND           						0
 /*****************************************/
 
-/***使用驱动前请根据实际IIC情况进行配置***/
-/**SC7A20的IIC 接口地址类型 7bits:  0****/
-/**SC7A20的IIC 接口地址类型 8bits:  1****/
+/***使锟斤拷锟斤拷锟斤拷前锟斤拷锟斤拷锟绞碉拷锟絀IC锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟�***/
+/**SC7A20锟斤拷IIC 锟接口碉拷址锟斤拷锟斤拷 7bits锟斤拷  0****/
+/**SC7A20锟斤拷IIC 锟接口碉拷址锟斤拷锟斤拷 8bits锟斤拷  1****/
 #define SC7A20_IIC_7BITS_8BITS       						0
 /*****************************************/
 
-#define  SL_SC7A20_16BIT_8BIT         						0
-/**SC7A20的数据位数选择  16bits:    1****/
-/**SC7A20的数据位数选择   8bits:    0****/
+#define  SL_SC7A20_16BIT_8BIT         						1
+/**SC7A20锟斤拷锟斤拷锟斤拷位锟斤拷选锟斤拷  16bits锟斤拷    1****/
+/**SC7A20锟斤拷锟斤拷锟斤拷位锟斤拷选锟斤拷   8bits锟斤拷    0****/
 /*****************************************/
-#define SL_6D4D2D1D_SEL    							      1
+#define SL_6D4D2D1D_SEL    							      6
 
 #if SC7A20_SDO_VDD_GND==0
 #define SC7A20_IIC_7BITS_ADDR        						0x18
@@ -80,11 +80,11 @@ extern "C" {
 #define  SL_SC7A20_ACT_THS        						(UINT8)(0x3E)
 #define  SL_SC7A20_ACT_DURATION 						(UINT8)(0x3F)
 	
-/*连续读取数据时的数据寄存器地址*/
-#define  SL_SC7A20_DATA_OUT       						(UINT8)(SL_SC7A20_OUT_X_L|0x80)
+/*锟斤拷锟斤拷锟斤拷取锟斤拷锟斤拷时锟斤拷锟斤拷锟捷寄达拷锟斤拷锟斤拷址*/
+#define  SL_SC7A20_DATA_OUT       						(UINT8)(SL_SC7A20_OUT_X_L)
 
-/**********特殊功能寄存器**********/
-/*非原厂技术人员请勿修改*/
+/**********锟斤拷锟解功锟杰寄达拷锟斤拷**********/
+/*锟斤拷原锟斤拷锟斤拷锟斤拷锟斤拷员锟斤拷锟斤拷锟睫革拷*/
 #define  SL_SC7A20_MTP_ENABLE    	             			(0x00)
 #define  SL_SC7A20_MTP_CFG    	  						(UINT8)(0x1E)
 #define  SL_SC7A20_MTP_VALUE   	  						(UINT8)(0x05)
@@ -93,10 +93,10 @@ extern "C" {
 #define  SL_SC7A20_I2C_PU_MSK     						(UINT8)(0x04)
 #define  SL_SC7A20_HR_ENABLE      						(UINT8)(0X08)
 #define  SL_SC7A20_BOOT_ENABLE   						(UINT8)(0X80)   
-/*非原厂技术人员请勿修改*/
+/*锟斤拷原锟斤拷锟斤拷锟斤拷锟斤拷员锟斤拷锟斤拷锟睫革拷*/
 
 
-/***************数据更新速率**加速度计使能**********/
+/***************锟斤拷锟捷革拷锟斤拷锟斤拷锟斤拷**锟斤拷锟劫度硷拷使锟斤拷**********/
 #define  SL_SC7A20_ODR_POWER_DOWN 					(UINT8)(0x00)
 #define  SL_SC7A20_ODR_1HZ        						(UINT8)(0x17)
 #define  SL_SC7A20_ODR_10HZ       						(UINT8)(0x27)
@@ -116,18 +116,18 @@ extern "C" {
 #define  SL_SC7A20_LOWER_POWER_ODR_100HZ      		(UINT8)(0x5F)
 #define  SL_SC7A20_LOWER_POWER_ODR_200HZ     			(UINT8)(0x6F)
 #define  SL_SC7A20_LOWER_POWER_ODR_400HZ      		(UINT8)(0x7F)
-/***************数据更新速率**加速度计使能**********/
+/***************锟斤拷锟捷革拷锟斤拷锟斤拷锟斤拷**锟斤拷锟劫度硷拷使锟斤拷**********/
 
 
-/***************传感器量程设置**********************/
+/***************锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷**********************/
 #define  SL_SC7A20_FS_2G        							(UINT8)(0x00)	
 #define  SL_SC7A20_FS_4G        							(UINT8)(0x10)
 #define  SL_SC7A20_FS_8G       							(UINT8)(0x20)
 #define  SL_SC7A20_FS_16G         							(UINT8)(0x30)
-/***************传感器量程设置**********************/
+/***************锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷**********************/
 
 
-/***取值在0-127之间,此处仅举例****/
+/***取值锟斤拷0-127之锟戒,锟剿达拷锟斤拷锟斤拷锟斤拷****/
 #define SL_SC7A20_INT_THS_5PERCENT  					 (UINT8)(0x06)
 #define SL_SC7A20_INT_THS_10PERCENT					 (UINT8)(0x0C)
 #define SL_SC7A20_INT_THS_20PERCENT 					 (UINT8)(0x18)
@@ -135,17 +135,17 @@ extern "C" {
 #define SL_SC7A20_INT_THS_80PERCENT 					 (UINT8)(0x60)
 
 
-/***取值在0-127之间,此处仅举例 乘以ODR单位时间****/
+/***取值锟斤拷0-127之锟戒,锟剿达拷锟斤拷锟斤拷锟斤拷 锟斤拷锟斤拷ODR锟斤拷位时锟斤拷****/
 #define SL_SC7A20_INT_DURATION_2CLK 					 (UINT8)(0x02)
 #define SL_SC7A20_INT_DURATION_5CLK 					 (UINT8)(0x05)
 #define SL_SC7A20_INT_DURATION_10CLK					 (UINT8)(0x0A)
 #define SL_SC7A20_INT_DURATION_30CLK					 (UINT8)(0x2E)
 
-/***中断有效时的电平设置,高电平相当于上升沿,低电平相当于下降沿****/
-#define SL_SC7A20_INT_ACTIVE_LOWER_LEVEL				 (UINT8)(0x02) //0x02:中断时INT1脚输出 低电
-#define SL_SC7A20_INT_ACTIVE_HIGH_LEVEL				 (UINT8)(0x00) //0x00:中断时INT1脚输出 高电
+/***锟叫讹拷锟斤拷效时锟侥碉拷平锟斤拷锟矫o拷锟竭碉拷平锟洁当锟斤拷锟斤拷锟斤拷锟截o拷锟酵碉拷平锟洁当锟斤拷锟铰斤拷锟斤拷****/
+#define SL_SC7A20_INT_ACTIVE_LOWER_LEVEL				 (UINT8)(0x02) //0x02:锟叫讹拷时INT1锟斤拷锟斤拷锟� 锟酵碉拷
+#define SL_SC7A20_INT_ACTIVE_HIGH_LEVEL				 (UINT8)(0x00) //0x00:锟叫讹拷时INT1锟斤拷锟斤拷锟� 锟竭碉拷
 
-/***中断有效时的电平设置,高电平相当于上升沿,低电平相当于下降沿****/
+/***锟叫讹拷锟斤拷效时锟侥碉拷平锟斤拷锟矫o拷锟竭碉拷平锟洁当锟斤拷锟斤拷锟斤拷锟截o拷锟酵碉拷平锟洁当锟斤拷锟铰斤拷锟斤拷****/
 #define SL_SC7A20_INT_AOI1_INT1         					 (UINT8)(0x40) //AOI1 TO INT1
 #define SL_SC7A20_INT_AOI2_INT1          					 (UINT8)(0x20) //AOI2 TO INT1
 

+ 16 - 6
src/MainTask.c

@@ -31,6 +31,7 @@
 #include "TcpTask.h"
 #include "Fota.h"
 #include "UartTask.h"
+#include "sensor.h"
 extern UINT8 	UDSSwitch;
 extern volatile bool NB_Fota_update_flag;
 extern volatile bool BMS_Fota_update_flag;
@@ -55,6 +56,9 @@ volatile bool Work_timer_end = false;
 static process_Main 		    gProcess_Main_Task;
 #define PROC_MAIN_STATE_SWITCH(a)  (gProcess_Main_Task = a)
 
+extern void GsensorInit(void);
+extern void GsensorI2CHandler(ARM_I2C_SignalEvent_t cb_event);
+extern void GsensorI2CCallback(UINT32 event);
 //函数声明区
 static void appBeforeHib(void *pdata, slpManLpState state);
 static void appAfterHib(void *pdata, slpManLpState state);
@@ -76,11 +80,17 @@ static void appSaveDataInfo(void);
 //主线程任务区
 static void MainTask(void* arg)
 {
+
+    GsensorI2CHandler(GsensorI2CCallback);
+    GsensorInit();
+
+
+
     int32_t inParam = 0xAABBCCDD;
     UINT32  param;
     slpManSetPmuSleepMode(true,SLP_HIB_STATE,false);
     slpManApplyPlatVoteHandle("MainSlp",&MainSlpHandler);
-    slpManPlatVoteDisableSleep(MainSlpHandler, SLP_SLP2_STATE);
+    slpManPlatVoteDisableSleep(MainSlpHandler, SLP_SLP1_STATE);
     slpManRegisterUsrdefinedBackupCb(appBeforeHib,&inParam,SLPMAN_HIBERNATE_STATE);
     slpManRegisterUsrdefinedRestoreCb(appAfterHib,NULL,SLPMAN_HIBERNATE_STATE);
     slpManRegisterUsrdefinedBackupCb(appBeforeSlp1,NULL,SLPMAN_SLEEP1_STATE);
@@ -199,13 +209,13 @@ static void MainTask(void* arg)
                 {
                     appSaveDataInfo();
                 }
-                osDelay(5000);
                 if(NB_Fota_update_flag)
                 {
                     appSetCFUN(0);
                     osDelay(1000);
                     EC_SystemReset();
                 }
+                osDelay(1*1000);
                 xTimerStop(work_timer, 0);
                 slpManSlpState_t State;
                 uint8_t cnt;
@@ -215,7 +225,7 @@ static void MainTask(void* arg)
                         printf("[%d]We Can Check Vote Main State, state=%d, cnt=%d\r\n",__LINE__,State,cnt);
                     #endif						
                 }
-                slpManPlatVoteForceEnableSleep(MainSlpHandler, SLP_SLP2_STATE);
+                slpManPlatVoteForceEnableSleep(MainSlpHandler, SLP_SLP1_STATE);
                 if(slpManCheckVoteState(MainSlpHandler, &State, &cnt)==RET_TRUE)
                 {
                     #ifdef USING_PRINTF
@@ -239,11 +249,11 @@ static void MainTask(void* arg)
 				    slpManDeepSlpTimerStart(deepslpTimerID, AppNVMData.sleepTime*1000*60);
                     osDelay(1*60*1000/portTICK_PERIOD_MS);
                     sleeptime_count++;
+                    #ifdef USING_PRINTF
+                        printf("sleeptime_count :%d \n",sleeptime_count);
+                    #endif
                     if(sleeptime_count>10)
                     {
-                        #ifdef USING_PRINTF
-                            printf("sleeptime_count :%d \n",sleeptime_count);
-                        #endif
                         EC_SystemReset();
                     }
                 }

+ 6 - 6
src/TcpTask.c

@@ -226,14 +226,14 @@ static void TcpDataInfoAssembleSend()
     UINT8 csq=0;
     INT8 snr=0;
     INT8 rsnr=0;
-    INT16 Batt_current;
-    UINT16 BattU;
+    INT16 Batt_current=0;
+    UINT16 BattU=0;
     UINT8 temp=0;
 
-    UINT16 DataLen;
-    UINT8 BattSendFreq;
-    UINT8 GpsSendFreq;
-    UINT8 WorkState;
+    UINT16 DataLen=0;
+    UINT8 BattSendFreq=0;
+    UINT8 GpsSendFreq=0;
+    UINT8 WorkState=0;
     static UINT8 WorkFlag;
     osMutexAcquire(UartMutex, osWaitForever);
     WorkState = (UartReadMsg.data[(0x03+BATT_CELL_VOL_NUM)*2+1]&0x03);

+ 0 - 1
src/app.c

@@ -38,7 +38,6 @@ void appInit(void *arg)
     AdcTaskInit();
     UartTaskInit(arg);
     TcpTaskInit(arg);
-    GsensorI2CHandler(GsensorI2CCallback);
     GpsTaskInit();
 	CANTaskInit(arg);
 }

+ 7 - 7
src/bsp_custom.c

@@ -120,7 +120,7 @@ static void PMU_WakeupPadInit(void)
 {
     const padWakeupSettings_t cfg =
     {
-        false, true,             // group0 posedge, negedge
+        true, false,             // group0 posedge, negedge
         true, true,             // group1 posedge, negedge
         true, true,             // group2 posedge, negedge
     };
@@ -164,12 +164,12 @@ void BSP_CustomInit(void)
 	slpManGetPMUSettings();				
 
 	PMU_WakeupPadInit();
-	NVIC_DisableIRQ(PadWakeup0_IRQn);
-	NVIC_EnableIRQ(PadWakeup1_IRQn);
-	NVIC_EnableIRQ(PadWakeup2_IRQn);
-	NVIC_DisableIRQ(PadWakeup3_IRQn);
-	NVIC_DisableIRQ(PadWakeup4_IRQn);
-	NVIC_EnableIRQ(PadWakeup5_IRQn);
+	NVIC_DisableIRQ(PadWakeup0_IRQn);//can
+	NVIC_EnableIRQ(PadWakeup1_IRQn);//rx
+	NVIC_EnableIRQ(PadWakeup2_IRQn);//lock
+	NVIC_EnableIRQ(PadWakeup3_IRQn);//gsensor
+	NVIC_EnableIRQ(PadWakeup4_IRQn);//gsensor
+	NVIC_DisableIRQ(PadWakeup5_IRQn);//wakeup2
 	CheckLockOutState();
 	slpManStartWaitATTimer();
 

+ 261 - 144
src/sensor.c

@@ -1,12 +1,12 @@
 #include "sensor.h"
 
-
-/***************在线测试**********************/
+#if 1//def _SC7A20_
+/***************锟斤拷锟竭诧拷锟斤拷**********************/
 INT8 SL_SC7A20_Online_Test(void)
 {
     UINT8 SL_Read_Reg=0xff;
     GSENSOR_ReadReg(SC7A20_CHIP_ID_ADDRESS,1, &SL_Read_Reg); 
-    //printf("SL_Read_Reg = %#x\r\n",SL_Read_Reg);	
+    printf("SL_Read_Reg = %#x\r\n",SL_Read_Reg);	
     if(SL_Read_Reg==SC7A20_CHIP_ID_VALUE){
 	return  1;
    } else { 
@@ -14,18 +14,18 @@ INT8 SL_SC7A20_Online_Test(void)
    }
 }
 
-/***************BOOT 重载内部寄存器值*********************/
+/***************BOOT 锟斤拷锟斤拷锟节诧拷锟侥达拷锟斤拷值*********************/
 INT8  SL_SC7A20_BOOT(void)
 {
     UINT8 SL_Read_Reg=0xff;
     GSENSOR_ReadReg(SL_SC7A20_CTRL_REG5,1, &SL_Read_Reg);
-    SL_Read_Reg=SL_SC7A20_BOOT_ENABLE|SL_Read_Reg;
+    SL_Read_Reg=SL_SC7A20_BOOT_ENABLE;//|SL_Read_Reg;
     GSENSOR_WriteReg(SL_SC7A20_CTRL_REG5, SL_Read_Reg);
     return  1;
 }
 
 
-/***************传感器量程设置**********************/
+/***************锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷**********************/
 INT8  SL_SC7A20_FS_Config(UINT8 Sc7a20_FS_Reg)
 {
     UINT8 SL_Read_Reg=0xff,SL_Write_Reg;
@@ -42,45 +42,40 @@ INT8  SL_SC7A20_FS_Config(UINT8 Sc7a20_FS_Reg)
 }
 
 #if SL_6D4D2D1D_SEL==1  //1D
-//AOI1_INT1  运动检测,运动触发中断        6D运动检测
-//AOI2_INT2  位置检测,检测是否离开X+位置  1D位置识别
-/***************中断设置*************/
+//AOI1_INT1  锟剿讹拷锟斤拷猓�拷硕锟斤拷锟斤拷锟斤拷卸锟�        6D锟剿讹拷锟斤拷锟�
+//AOI2_INT2  位锟矫硷拷猓�拷锟斤拷锟角凤拷锟诫开X+位锟斤拷  1D位锟斤拷识锟斤拷
+/***************锟叫讹拷锟斤拷锟斤拷*************/
 INT8  SL_SC7A20_INT_Config(void)
 {
     UINT8 SL_Read_Reg;
 
     /*******************AOI1  IN  INT1********************/
-    GSENSOR_ReadReg(SL_SC7A20_CTRL_REG5,1, &SL_Read_Reg);
-    SL_Read_Reg=SL_Read_Reg|0x08;//AOI1 LATCH
+    SL_Read_Reg=0x08;//AOI1 LATCH
     GSENSOR_WriteReg(SL_SC7A20_CTRL_REG5, SL_Read_Reg); 
     
-    //H_LACTIVE SET
-    GSENSOR_ReadReg(SL_SC7A20_CTRL_REG6,1, &SL_Read_Reg); 
-    SL_Read_Reg=SL_SC7A20_INT_ACTIVE_LOWER_LEVEL|SL_Read_Reg;
+    SL_Read_Reg=SL_SC7A20_INT_ACTIVE_HIGH_LEVEL;
     //interrupt happen,int pin output lower level
     GSENSOR_WriteReg(SL_SC7A20_CTRL_REG6, SL_Read_Reg);  
     
     //AOI1 CONFIG
     SL_Read_Reg=0x00;            //0x7F
-    SL_Read_Reg=SL_Read_Reg|0x40;//方向运动识别模式
-    SL_Read_Reg=SL_Read_Reg|0x03;//X 轴高低事件 X轴数据的绝对值大于阈值
-    SL_Read_Reg=SL_Read_Reg|0x0C;//Y 轴高低事件 Y轴数据的绝对值大于阈值	
-    SL_Read_Reg=SL_Read_Reg|0x30;//Z 轴高低事件 Z轴数据的绝对值大于阈值	
+    SL_Read_Reg=SL_Read_Reg|0x40;//锟斤拷锟斤拷锟剿讹拷识锟斤拷模式
+    SL_Read_Reg=SL_Read_Reg|0x02;//X 锟斤拷锟斤拷录锟� X锟斤拷锟斤拷锟捷的撅拷锟斤拷值锟斤拷锟斤拷锟斤拷值
     GSENSOR_WriteReg(SL_SC7A20_INT1_CFG, SL_Read_Reg);    
 
     //HPF SET
-    GSENSOR_ReadReg(SL_SC7A20_CTRL_REG2,1, &SL_Read_Reg); 
-    SL_Read_Reg=SL_Read_Reg|0x81;//Normal HP , HPF TO AOI1 
+  //  GSENSOR_ReadReg(SL_SC7A20_CTRL_REG2,1, &SL_Read_Reg); 
+    SL_Read_Reg=0xcf;//SL_Read_Reg|0x81;//Normal HP , HPF TO AOI1 
     GSENSOR_WriteReg(SL_SC7A20_CTRL_REG2, SL_Read_Reg);
     
-    //中断阈值设置
+    //锟叫讹拷锟斤拷值锟斤拷锟斤拷
     GSENSOR_WriteReg(SL_SC7A20_INT1_THS, SL_SC7A20_INT_THS_10PERCENT);	
-    //大于阈值多少时间触发中断
+    //锟斤拷锟斤拷锟斤拷值锟斤拷锟斤拷时锟戒触锟斤拷锟叫讹拷
     GSENSOR_WriteReg(SL_SC7A20_INT1_DURATION, SL_SC7A20_INT_DURATION_2CLK);
         
     //AOI1 TO INT1
-    GSENSOR_ReadReg(SL_SC7A20_CTRL_REG3,1, &SL_Read_Reg);
-    SL_Read_Reg=SL_Read_Reg|0x40; //AOI1 TO INT1
+   // GSENSOR_ReadReg(SL_SC7A20_CTRL_REG3,1, &SL_Read_Reg);
+    SL_Read_Reg=0x40;//SL_Read_Reg|0x40; //AOI1 TO INT1
     GSENSOR_WriteReg(SL_SC7A20_CTRL_REG3, SL_Read_Reg);  
     /*******************AOI1  IN  INT1********************/
 
@@ -90,26 +85,21 @@ INT8  SL_SC7A20_INT_Config(void)
     SL_Read_Reg=SL_Read_Reg|0x02;//AOI2 LATCH
     GSENSOR_WriteReg(SL_SC7A20_CTRL_REG5, SL_Read_Reg);	
     
-    //H_LACTIVE SET
-    GSENSOR_ReadReg(SL_SC7A20_CTRL_REG6,1, &SL_Read_Reg); 
-    SL_Read_Reg=SL_SC7A20_INT_ACTIVE_LOWER_LEVEL|SL_Read_Reg;
-    //interrupt happen,int pin output lower level
-    GSENSOR_WriteReg(SL_SC7A20_CTRL_REG6, SL_Read_Reg);    
 
     //AOI2 CONFIG
-    SL_Read_Reg=0x00;            //0xC2
-    SL_Read_Reg=SL_Read_Reg|0xC0;//方向位置识别模式
-    SL_Read_Reg=SL_Read_Reg|0x02;//X 轴高事件 X轴数据大于阈值 输出低电平,默认输出高电平
+    SL_Read_Reg=0x00;            //0xFF
+    SL_Read_Reg=SL_Read_Reg|0xC0;//锟斤拷锟斤拷锟剿讹拷识锟斤拷模式
+    SL_Read_Reg=SL_Read_Reg|0x02;//X 锟斤拷锟斤拷录锟� X锟斤拷锟斤拷锟捷的撅拷锟斤拷值锟斤拷锟斤拷锟斤拷值
     GSENSOR_WriteReg(SL_SC7A20_INT2_CFG, SL_Read_Reg);    
 
     //HPF SET
-    GSENSOR_ReadReg(SL_SC7A20_CTRL_REG2,1, &SL_Read_Reg); 
-    SL_Read_Reg=SL_Read_Reg&0xFD;//NO HPF TO AOI2 
-    GSENSOR_WriteReg(SL_SC7A20_CTRL_REG2, SL_Read_Reg);
+   // GSENSOR_ReadReg(SL_SC7A20_CTRL_REG2,1, &SL_Read_Reg); 
+    //SL_Read_Reg=SL_Read_Reg&0xFD;//NO HPF TO AOI2 
+   // GSENSOR_WriteReg(SL_SC7A20_CTRL_REG2, SL_Read_Reg);
 
-    //中断阈值设置
-    GSENSOR_WriteReg(SL_SC7A20_INT2_THS, SL_SC7A20_INT_THS_40PERCENT);	
-    //大于阈值多少时间触发中断
+    //锟叫讹拷锟斤拷值锟斤拷锟斤拷
+    GSENSOR_WriteReg(SL_SC7A20_INT2_THS, SL_SC7A20_INT_THS_10PERCENT);	
+    //锟斤拷锟斤拷锟斤拷值锟斤拷锟斤拷时锟戒触锟斤拷锟叫讹拷
     GSENSOR_WriteReg(SL_SC7A20_INT2_DURATION, SL_SC7A20_INT_DURATION_2CLK);
     
     //AOI2 TO INT2
@@ -121,38 +111,41 @@ INT8  SL_SC7A20_INT_Config(void)
     return  1;
 }
 #elif  SL_6D4D2D1D_SEL==2  //2D
-//AOI1_INT1  运动检测,运动触发中断 或事件   3D运动检测 
-//AOI2_INT2  位置检测,检测X+ 和 X-          2D位置识别
-/***************中断设置*************/
+//AOI1_INT1  锟剿讹拷锟斤拷猓�拷硕锟斤拷锟斤拷锟斤拷卸锟� 锟斤拷锟铰硷拷   3D锟剿讹拷锟斤拷锟� 
+//AOI2_INT2  位锟矫硷拷猓�拷锟斤拷X+ 锟斤拷 X-          2D位锟斤拷识锟斤拷
+/***************锟叫讹拷锟斤拷锟斤拷*************/
 INT8  SL_SC7A20_INT_Config(void)
 {
     UINT8 SL_Read_Reg;
 
     /*******************AOI1  IN  INT1********************/
-    GSENSOR_ReadReg(SL_SC7A20_CTRL_REG5,1, &SL_Read_Reg);
-    SL_Read_Reg=SL_Read_Reg|0x08;//AOI1 LATCH
+    SL_Read_Reg=0x08;//AOI1 LATCH
     GSENSOR_WriteReg(SL_SC7A20_CTRL_REG5, SL_Read_Reg); 
     
+    SL_Read_Reg=SL_SC7A20_INT_ACTIVE_HIGH_LEVEL;
+    //interrupt happen,int pin output lower level
+    GSENSOR_WriteReg(SL_SC7A20_CTRL_REG6, SL_Read_Reg);  
+    
     //AOI1 CONFIG
-    SL_Read_Reg=0x00;            //0x2A 或事件
-    SL_Read_Reg=SL_Read_Reg|0x02;//X 轴高事件 X轴数据的绝对值大于阈值
-    SL_Read_Reg=SL_Read_Reg|0x08;//Y 轴高事件 Y轴数据的绝对值大于阈值	
-    SL_Read_Reg=SL_Read_Reg|0x20;//Z 轴高事件 Z轴数据的绝对值大于阈
+    SL_Read_Reg=0x00;            //0x7F
+    SL_Read_Reg=SL_Read_Reg|0x40;//锟斤拷锟斤拷锟剿讹拷识锟斤拷模式
+    SL_Read_Reg=SL_Read_Reg|0x02;//X 锟斤拷锟斤拷录锟� X锟斤拷锟斤拷锟捷的撅拷锟斤拷值锟斤拷锟斤拷锟斤拷值
+    SL_Read_Reg=SL_Read_Reg|0x04;//Y 锟斤拷锟斤拷录锟� Y锟斤拷锟斤拷锟捷的撅拷锟斤拷值锟斤拷锟斤拷锟斤拷
     GSENSOR_WriteReg(SL_SC7A20_INT1_CFG, SL_Read_Reg);    
-   
+
     //HPF SET
-    GSENSOR_ReadReg(SL_SC7A20_CTRL_REG2,1, &SL_Read_Reg); 
-    SL_Read_Reg=SL_Read_Reg|0x81;//Normal HP , HPF TO AOI1 
+  //  GSENSOR_ReadReg(SL_SC7A20_CTRL_REG2,1, &SL_Read_Reg); 
+    SL_Read_Reg=0xcf;//SL_Read_Reg|0x81;//Normal HP , HPF TO AOI1 
     GSENSOR_WriteReg(SL_SC7A20_CTRL_REG2, SL_Read_Reg);
     
-    //中断阈值设置
+    //锟叫讹拷锟斤拷值锟斤拷锟斤拷
     GSENSOR_WriteReg(SL_SC7A20_INT1_THS, SL_SC7A20_INT_THS_10PERCENT);	
-    //大于阈值多少时间触发中断
+    //锟斤拷锟斤拷锟斤拷值锟斤拷锟斤拷时锟戒触锟斤拷锟叫讹拷
     GSENSOR_WriteReg(SL_SC7A20_INT1_DURATION, SL_SC7A20_INT_DURATION_2CLK);
         
     //AOI1 TO INT1
-    GSENSOR_ReadReg(SL_SC7A20_CTRL_REG3,1, &SL_Read_Reg);
-    SL_Read_Reg=SL_Read_Reg|0x40; //AOI1 TO INT1
+   // GSENSOR_ReadReg(SL_SC7A20_CTRL_REG3,1, &SL_Read_Reg);
+    SL_Read_Reg=0x40;//SL_Read_Reg|0x40; //AOI1 TO INT1
     GSENSOR_WriteReg(SL_SC7A20_CTRL_REG3, SL_Read_Reg);  
     /*******************AOI1  IN  INT1********************/
 
@@ -162,26 +155,22 @@ INT8  SL_SC7A20_INT_Config(void)
     SL_Read_Reg=SL_Read_Reg|0x02;//AOI2 LATCH
     GSENSOR_WriteReg(SL_SC7A20_CTRL_REG5, SL_Read_Reg);	
     
-    //H_LACTIVE SET
-    GSENSOR_ReadReg(SL_SC7A20_CTRL_REG6,1, &SL_Read_Reg); 
-    SL_Read_Reg=SL_SC7A20_INT_ACTIVE_LOWER_LEVEL|SL_Read_Reg;
-    //interrupt happen,int pin output lower level
-    GSENSOR_WriteReg(SL_SC7A20_CTRL_REG6, SL_Read_Reg);    
 
     //AOI2 CONFIG
-    SL_Read_Reg=0x00;            //0xC3
-    SL_Read_Reg=SL_Read_Reg|0xC0;//方向位置识别模式
-    SL_Read_Reg=SL_Read_Reg|0x03;//X 轴高低事件 X轴数据的绝对值大于阈值 输出低电平,默认输出高电平
+    SL_Read_Reg=0x00;            //0xFF
+    SL_Read_Reg=SL_Read_Reg|0xC0;//锟斤拷锟斤拷锟剿讹拷识锟斤拷模式
+    SL_Read_Reg=SL_Read_Reg|0x02;//X 锟斤拷锟斤拷录锟� X锟斤拷锟斤拷锟捷的撅拷锟斤拷值锟斤拷锟斤拷锟斤拷值
+    SL_Read_Reg=SL_Read_Reg|0x04;//Y 锟斤拷锟斤拷录锟� Y锟斤拷锟斤拷锟捷的撅拷锟斤拷值锟斤拷锟斤拷锟斤拷值	
     GSENSOR_WriteReg(SL_SC7A20_INT2_CFG, SL_Read_Reg);    
 
     //HPF SET
-    GSENSOR_ReadReg(SL_SC7A20_CTRL_REG2,1, &SL_Read_Reg); 
-    SL_Read_Reg=SL_Read_Reg&0xFD;//NO HPF TO AOI2 
-    GSENSOR_WriteReg(SL_SC7A20_CTRL_REG2, SL_Read_Reg);
+    //GSENSOR_ReadReg(SL_SC7A20_CTRL_REG2,1, &SL_Read_Reg); 
+    //SL_Read_Reg=SL_Read_Reg&0xFD;//NO HPF TO AOI2 
+    //GSENSOR_WriteReg(SL_SC7A20_CTRL_REG2, SL_Read_Reg);
 
-    //中断阈值设置
-    GSENSOR_WriteReg(SL_SC7A20_INT2_THS, SL_SC7A20_INT_THS_40PERCENT);	
-    //大于阈值多少时间触发中断
+    //锟叫讹拷锟斤拷值锟斤拷锟斤拷
+    GSENSOR_WriteReg(SL_SC7A20_INT2_THS, SL_SC7A20_INT_THS_10PERCENT);	
+    //锟斤拷锟斤拷锟斤拷值锟斤拷锟斤拷时锟戒触锟斤拷锟叫讹拷
     GSENSOR_WriteReg(SL_SC7A20_INT2_DURATION, SL_SC7A20_INT_DURATION_2CLK);
     
     //AOI2 TO INT2
@@ -193,38 +182,41 @@ INT8  SL_SC7A20_INT_Config(void)
     return  1;
 }
 #elif  SL_6D4D2D1D_SEL==4  //4D
-//AOI1_INT1  运动检测,运动触发中断 或事件     3D运动检测 
-//AOI2_INT2  位置检测,检测X+ 和 X-  Y+ 和 Y-  4D位置识别
-/***************中断设置*************/
+//AOI1_INT1  锟剿讹拷锟斤拷猓�拷硕锟斤拷锟斤拷锟斤拷卸锟� 锟斤拷锟铰硷拷     3D锟剿讹拷锟斤拷锟� 
+//AOI2_INT2  位锟矫硷拷猓�拷锟斤拷X+ 锟斤拷 X-  Y+ 锟斤拷 Y-  4D位锟斤拷识锟斤拷
+/***************锟叫讹拷锟斤拷锟斤拷*************/
 INT8  SL_SC7A20_INT_Config(void)
 {
     UINT8 SL_Read_Reg;
 
     /*******************AOI1  IN  INT1********************/
-    GSENSOR_ReadReg(SL_SC7A20_CTRL_REG5,1, &SL_Read_Reg);
-    SL_Read_Reg=SL_Read_Reg|0x08;//AOI1 LATCH
+    SL_Read_Reg=0x08;//AOI1 LATCH
     GSENSOR_WriteReg(SL_SC7A20_CTRL_REG5, SL_Read_Reg); 
     
+    SL_Read_Reg=SL_SC7A20_INT_ACTIVE_HIGH_LEVEL;
+    //interrupt happen,int pin output lower level
+    GSENSOR_WriteReg(SL_SC7A20_CTRL_REG6, SL_Read_Reg);  
+    
     //AOI1 CONFIG
-    SL_Read_Reg=0x00;            //0x2A 或事件
-    SL_Read_Reg=SL_Read_Reg|0x02;//X 轴高事件 X轴数据的绝对值大于阈值
-	SL_Read_Reg=SL_Read_Reg|0x08;//Y 轴高事件 Y轴数据的绝对值大于阈值	
-	SL_Read_Reg=SL_Read_Reg|0x20;//Z 轴高事件 Z轴数据的绝对值大于阈
+    SL_Read_Reg=0x00;            //0x7F
+    SL_Read_Reg=SL_Read_Reg|0x40;//锟斤拷锟斤拷锟剿讹拷识锟斤拷模式
+    SL_Read_Reg=SL_Read_Reg|0x03;//X 锟斤拷叩锟斤拷录锟� X锟斤拷锟斤拷锟捷的撅拷锟斤拷值锟斤拷锟斤拷锟斤拷值
+    SL_Read_Reg=SL_Read_Reg|0x0C;//Y 锟斤拷叩锟斤拷录锟� Y锟斤拷锟斤拷锟捷的撅拷锟斤拷值锟斤拷锟斤拷锟斤拷
     GSENSOR_WriteReg(SL_SC7A20_INT1_CFG, SL_Read_Reg);    
-   
+
     //HPF SET
-    GSENSOR_ReadReg(SL_SC7A20_CTRL_REG2,1, &SL_Read_Reg); 
-    SL_Read_Reg=SL_Read_Reg|0x81;//Normal HP , HPF TO AOI1 
+  //  GSENSOR_ReadReg(SL_SC7A20_CTRL_REG2,1, &SL_Read_Reg); 
+    SL_Read_Reg=0xcf;//SL_Read_Reg|0x81;//Normal HP , HPF TO AOI1 
     GSENSOR_WriteReg(SL_SC7A20_CTRL_REG2, SL_Read_Reg);
     
-    //中断阈值设置
+    //锟叫讹拷锟斤拷值锟斤拷锟斤拷
     GSENSOR_WriteReg(SL_SC7A20_INT1_THS, SL_SC7A20_INT_THS_10PERCENT);	
-    //大于阈值多少时间触发中断
+    //锟斤拷锟斤拷锟斤拷值锟斤拷锟斤拷时锟戒触锟斤拷锟叫讹拷
     GSENSOR_WriteReg(SL_SC7A20_INT1_DURATION, SL_SC7A20_INT_DURATION_2CLK);
         
     //AOI1 TO INT1
-    GSENSOR_ReadReg(SL_SC7A20_CTRL_REG3,1, &SL_Read_Reg);
-    SL_Read_Reg=SL_Read_Reg|0x40; //AOI1 TO INT1
+   // GSENSOR_ReadReg(SL_SC7A20_CTRL_REG3,1, &SL_Read_Reg);
+    SL_Read_Reg=0x40;//SL_Read_Reg|0x40; //AOI1 TO INT1
     GSENSOR_WriteReg(SL_SC7A20_CTRL_REG3, SL_Read_Reg);  
     /*******************AOI1  IN  INT1********************/
 
@@ -234,26 +226,22 @@ INT8  SL_SC7A20_INT_Config(void)
     SL_Read_Reg=SL_Read_Reg|0x02;//AOI2 LATCH
     GSENSOR_WriteReg(SL_SC7A20_CTRL_REG5, SL_Read_Reg);	
     
-    //H_LACTIVE SET
-    GSENSOR_ReadReg(SL_SC7A20_CTRL_REG6,1, &SL_Read_Reg); 
-    SL_Read_Reg=SL_SC7A20_INT_ACTIVE_LOWER_LEVEL|SL_Read_Reg;
-    //interrupt happen,int pin output lower level
-    GSENSOR_WriteReg(SL_SC7A20_CTRL_REG6, SL_Read_Reg);    
 
     //AOI2 CONFIG
-    SL_Read_Reg=0x00;            //0xCF
-    SL_Read_Reg=SL_Read_Reg|0xC0;//方向位置识别模式
-    SL_Read_Reg=SL_Read_Reg|0x0F;//XY 轴高低事件 XY轴数据的绝对值大于阈值 输出低电平,默认输出高电平
+    SL_Read_Reg=0x00;            //0xFF
+    SL_Read_Reg=SL_Read_Reg|0xC0;//锟斤拷锟斤拷锟剿讹拷识锟斤拷模式
+    SL_Read_Reg=SL_Read_Reg|0x03;//X 锟斤拷叩锟斤拷录锟� X锟斤拷锟斤拷锟捷的撅拷锟斤拷值锟斤拷锟斤拷锟斤拷值
+    SL_Read_Reg=SL_Read_Reg|0x0C;//Y 锟斤拷叩锟斤拷录锟� Y锟斤拷锟斤拷锟捷的撅拷锟斤拷值锟斤拷锟斤拷锟斤拷值	
     GSENSOR_WriteReg(SL_SC7A20_INT2_CFG, SL_Read_Reg);    
 
     //HPF SET
-    GSENSOR_ReadReg(SL_SC7A20_CTRL_REG2,1, &SL_Read_Reg); 
-    SL_Read_Reg=SL_Read_Reg&0xFD;//NO HPF TO AOI2 
-    GSENSOR_WriteReg(SL_SC7A20_CTRL_REG2, SL_Read_Reg);
+    //GSENSOR_ReadReg(SL_SC7A20_CTRL_REG2,1, &SL_Read_Reg); 
+   // SL_Read_Reg=SL_Read_Reg&0xFD;//NO HPF TO AOI2 
+   // GSENSOR_WriteReg(SL_SC7A20_CTRL_REG2, SL_Read_Reg);
 
-    //中断阈值设置
-    GSENSOR_WriteReg(SL_SC7A20_INT2_THS, SL_SC7A20_INT_THS_40PERCENT);	
-    //大于阈值多少时间触发中断
+    //锟叫讹拷锟斤拷值锟斤拷锟斤拷
+    GSENSOR_WriteReg(SL_SC7A20_INT2_THS, SL_SC7A20_INT_THS_10PERCENT);	
+    //锟斤拷锟斤拷锟斤拷值锟斤拷锟斤拷时锟戒触锟斤拷锟叫讹拷
     GSENSOR_WriteReg(SL_SC7A20_INT2_DURATION, SL_SC7A20_INT_DURATION_2CLK);
     
     //AOI2 TO INT2
@@ -265,39 +253,42 @@ INT8  SL_SC7A20_INT_Config(void)
     return  1;
 }
 #elif  SL_6D4D2D1D_SEL==6  //6D
-//AOI1_INT1  运动检测,运动触发中断                    6D运动检测
-//AOI2_INT2  位置检测,检测X+ 和 X-  Y+ 和 Y- Z+ 和 Z- 6D位置识别
-/***************中断设置*************/
+//AOI1_INT1  锟剿讹拷锟斤拷猓�拷硕锟斤拷锟斤拷锟斤拷卸锟�                    6D锟剿讹拷锟斤拷锟�
+//AOI2_INT2  位锟矫硷拷猓�拷锟斤拷X+ 锟斤拷 X-  Y+ 锟斤拷 Y- Z+ 锟斤拷 Z- 6D位锟斤拷识锟斤拷
+/***************锟叫讹拷锟斤拷锟斤拷*************/
 INT8  SL_SC7A20_INT_Config(void)
 {
     UINT8 SL_Read_Reg;
 
     /*******************AOI1  IN  INT1********************/
-    GSENSOR_ReadReg(SL_SC7A20_CTRL_REG5,1, &SL_Read_Reg);
-    SL_Read_Reg=SL_Read_Reg|0x08;//AOI1 LATCH
+    SL_Read_Reg=0x08;//AOI1 LATCH
     GSENSOR_WriteReg(SL_SC7A20_CTRL_REG5, SL_Read_Reg); 
     
+    SL_Read_Reg=SL_SC7A20_INT_ACTIVE_HIGH_LEVEL;
+    //interrupt happen,int pin output lower level
+    GSENSOR_WriteReg(SL_SC7A20_CTRL_REG6, SL_Read_Reg);  
+    
     //AOI1 CONFIG
-    SL_Read_Reg=0x00;            //0x7F  无LATCH功能
-    SL_Read_Reg=SL_Read_Reg|0x40;//方向运动识别模式
-    SL_Read_Reg=SL_Read_Reg|0x03;//X 轴高低事件 X轴数据的绝对值大于阈值
-    SL_Read_Reg=SL_Read_Reg|0x0C;//Y 轴高低事件 Y轴数据的绝对值大于阈
-    SL_Read_Reg=SL_Read_Reg|0x30;//Z 轴高低事件 Z轴数据的绝对值大于阈
+    SL_Read_Reg=0x00;            //0x7F
+    SL_Read_Reg=SL_Read_Reg|0x40;//锟斤拷锟斤拷锟剿讹拷识锟斤拷模式
+    SL_Read_Reg=SL_Read_Reg|0x03;//X 锟斤拷叩锟斤拷录锟� X锟斤拷锟斤拷锟捷的撅拷锟斤拷值锟斤拷锟斤拷锟斤拷
+    SL_Read_Reg=SL_Read_Reg|0x0C;//Y 锟斤拷叩锟斤拷录锟� Y锟斤拷锟斤拷锟捷的撅拷锟斤拷值锟斤拷锟斤拷锟斤拷
+    SL_Read_Reg=SL_Read_Reg|0x30;//Z 锟斤拷叩锟斤拷录锟� Z锟斤拷锟斤拷锟捷的撅拷锟斤拷值锟斤拷锟斤拷锟斤拷
     GSENSOR_WriteReg(SL_SC7A20_INT1_CFG, SL_Read_Reg);    
-   
+
     //HPF SET
-    GSENSOR_ReadReg(SL_SC7A20_CTRL_REG2,1, &SL_Read_Reg); 
-    SL_Read_Reg=SL_Read_Reg|0x81;//Normal HP , HPF TO AOI1 
+  //  GSENSOR_ReadReg(SL_SC7A20_CTRL_REG2,1, &SL_Read_Reg); 
+    SL_Read_Reg=0xcf;//SL_Read_Reg|0x81;//Normal HP , HPF TO AOI1 
     GSENSOR_WriteReg(SL_SC7A20_CTRL_REG2, SL_Read_Reg);
     
-    //中断阈值设置
-    GSENSOR_WriteReg(SL_SC7A20_INT1_THS, SL_SC7A20_INT_THS_10PERCENT);	
-    //大于阈值多少时间触发中断
-    GSENSOR_WriteReg(SL_SC7A20_INT1_DURATION, SL_SC7A20_INT_DURATION_2CLK);
+    //锟叫讹拷锟斤拷值锟斤拷锟斤拷
+    GSENSOR_WriteReg(SL_SC7A20_INT1_THS, SL_SC7A20_INT_THS_20PERCENT);	
+    //锟斤拷锟斤拷锟斤拷值锟斤拷锟斤拷时锟戒触锟斤拷锟叫讹拷
+    GSENSOR_WriteReg(SL_SC7A20_INT1_DURATION, SL_SC7A20_INT_DURATION_30CLK);
         
     //AOI1 TO INT1
-    GSENSOR_ReadReg(SL_SC7A20_CTRL_REG3,1, &SL_Read_Reg);
-    SL_Read_Reg=SL_Read_Reg|0x40; //AOI1 TO INT1
+   // GSENSOR_ReadReg(SL_SC7A20_CTRL_REG3,1, &SL_Read_Reg);
+    SL_Read_Reg=0x40;//SL_Read_Reg|0x40; //AOI1 TO INT1
     GSENSOR_WriteReg(SL_SC7A20_CTRL_REG3, SL_Read_Reg);  
     /*******************AOI1  IN  INT1********************/
 
@@ -307,26 +298,23 @@ INT8  SL_SC7A20_INT_Config(void)
     SL_Read_Reg=SL_Read_Reg|0x02;//AOI2 LATCH
     GSENSOR_WriteReg(SL_SC7A20_CTRL_REG5, SL_Read_Reg);	
     
-    //H_LACTIVE SET
-    GSENSOR_ReadReg(SL_SC7A20_CTRL_REG6,1, &SL_Read_Reg); 
-    SL_Read_Reg=SL_SC7A20_INT_ACTIVE_LOWER_LEVEL|SL_Read_Reg;
-    //interrupt happen,int pin output lower level
-    GSENSOR_WriteReg(SL_SC7A20_CTRL_REG6, SL_Read_Reg);    
 
     //AOI2 CONFIG
-    SL_Read_Reg=0x00;            //0xC2
-    SL_Read_Reg=SL_Read_Reg|0xC0;//方向位置识别模式
-    SL_Read_Reg=SL_Read_Reg|0x3F;//XYZ 轴高事件 XYZ轴数据的绝对值大于阈值 输出低电平,默认输出高电平
+    SL_Read_Reg=0x00;            //0xFF
+    SL_Read_Reg=SL_Read_Reg|0xc0;//锟斤拷锟斤拷锟剿讹拷识锟斤拷模式
+    SL_Read_Reg=SL_Read_Reg|0x03;//X 锟斤拷叩锟斤拷录锟� X锟斤拷锟斤拷锟捷的撅拷锟斤拷值锟斤拷锟斤拷锟斤拷值
+    SL_Read_Reg=SL_Read_Reg|0x0C;//Y 锟斤拷叩锟斤拷录锟� Y锟斤拷锟斤拷锟捷的撅拷锟斤拷值锟斤拷锟斤拷锟斤拷值	
+    SL_Read_Reg=SL_Read_Reg|0x30;//Z 锟斤拷叩锟斤拷录锟� Z锟斤拷锟斤拷锟捷的撅拷锟斤拷值锟斤拷锟斤拷锟斤拷值	
     GSENSOR_WriteReg(SL_SC7A20_INT2_CFG, SL_Read_Reg);    
 
     //HPF SET
     GSENSOR_ReadReg(SL_SC7A20_CTRL_REG2,1, &SL_Read_Reg); 
-    SL_Read_Reg=SL_Read_Reg&0xFD;//NO HPF TO AOI2 
-    GSENSOR_WriteReg(SL_SC7A20_CTRL_REG2, SL_Read_Reg);
+ //   SL_Read_Reg=SL_Read_Reg&0xFD;//NO HPF TO AOI2 
+//    GSENSOR_WriteReg(SL_SC7A20_CTRL_REG2, SL_Read_Reg);
 
-    //中断阈值设置
-    GSENSOR_WriteReg(SL_SC7A20_INT2_THS, SL_SC7A20_INT_THS_40PERCENT);	
-    //大于阈值多少时间触发中断
+    //锟叫讹拷锟斤拷值锟斤拷锟斤拷
+    GSENSOR_WriteReg(SL_SC7A20_INT2_THS, SL_SC7A20_INT_THS_5PERCENT);	
+    //锟斤拷锟斤拷锟斤拷值锟斤拷锟斤拷时锟戒触锟斤拷锟叫讹拷
     GSENSOR_WriteReg(SL_SC7A20_INT2_DURATION, SL_SC7A20_INT_DURATION_2CLK);
     
     //AOI2 TO INT2
@@ -339,20 +327,20 @@ INT8  SL_SC7A20_INT_Config(void)
 }
 #endif
 
-/******外部中断处理函数中需要调用该函数*******/
-//retrun_value&0x20=0x20  ZH  Z轴高事件
-//retrun_value&0x20=0x10  ZL  Z轴低事件
-//retrun_value&0x20=0x08  YH  Y轴高事件
-//retrun_value&0x20=0x04  YL  Y轴低事件
-//retrun_value&0x20=0x02  XH  X轴高事件
-//retrun_value&0x20=0x01  XL  X轴低事件
+/******锟解部锟叫断达拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷要锟斤拷锟矫该猴拷锟斤拷*******/
+//retrun_value&0x20=0x20  ZH  Z锟斤拷锟斤拷录锟�
+//retrun_value&0x20=0x10  ZL  Z锟斤拷锟斤拷录锟�
+//retrun_value&0x20=0x08  YH  Y锟斤拷锟斤拷录锟�
+//retrun_value&0x20=0x04  YL  Y锟斤拷锟斤拷录锟�
+//retrun_value&0x20=0x02  XH  X锟斤拷锟斤拷录锟�
+//retrun_value&0x20=0x01  XL  X锟斤拷锟斤拷录锟�
 INT8  SL_SC7A20_INT_RESET(void)
 {
 
     UINT8 SL_Read_Reg1;
     UINT8 SL_Read_Reg2;
     
-    /*****为了避免读取数据过程中又产生中断,可以暂时关闭中断*****/	
+    /*****为锟剿憋拷锟斤拷锟饺★拷锟斤拷莨锟斤拷锟斤拷锟斤拷植锟斤拷锟斤拷卸希锟斤拷锟斤拷锟斤拷锟绞憋拷乇锟斤拷卸锟�*****/	
  
     //SL_Read_Reg1 display the int1 type
     GSENSOR_ReadReg(SL_SC7A20_INT1_SRC,1, &SL_Read_Reg1);
@@ -400,7 +388,127 @@ INT8  SL_SC7A20_INT_RESET(void)
 
 }
 
-/***************数据更新速率**加速度计使能**********/
+
+void  SL_SC7A20_AOI1_event(void)
+{
+
+    UINT8 SL_SRC_Reg1;
+    UINT8 SL_THS_Reg1;
+    UINT8 SL_DURATION_Reg1;
+ 
+ 
+    //SL_Read_Reg1 display the int1 type
+    GSENSOR_ReadReg(SL_SC7A20_INT1_SRC,1, &SL_SRC_Reg1);
+    GSENSOR_ReadReg(SL_SC7A20_INT1_THS,1, &SL_THS_Reg1);
+    GSENSOR_ReadReg(SL_SC7A20_INT1_DURATION,1, &SL_DURATION_Reg1);
+	
+    printf("SL_SC7A20_INT1_SRC=%#x\r\n",SL_SRC_Reg1);	
+ //   if((SL_SRC_Reg1&0x40)==0x40){
+
+	    if((SL_SRC_Reg1&0x01)==0x01)
+	    {
+	        //X-
+		    printf("X1-\r\n");	
+	    }
+	    if((SL_SRC_Reg1&0x02)==0x02)
+	    {
+	        //X+
+		    printf("X1+\r\n");	
+	    }
+	    if((SL_SRC_Reg1&0x04)==0x04)
+	    {
+	        //Y-
+		    printf("Y1-\r\n");	
+	    }
+	    if((SL_SRC_Reg1&0x08)==0x08)
+	    {
+	        //Y+
+		    printf("Y1+\r\n");	
+	    }
+	    if((SL_SRC_Reg1&0x10)==0x10)
+	    {
+	        //Z-
+		    printf("Z1-\r\n");	
+	    }
+	    if((SL_SRC_Reg1&0x20)==0x20)
+	    {
+	        //Z+
+		    printf("Z1+\r\n");	
+	    }
+//    }
+    
+}
+
+
+INT8  SL_SC7A20_AOI2_event(void)
+{
+
+    UINT8 SL_SRC_Reg2;
+    UINT8 SL_THS_Reg2;
+    UINT8 SL_DURATION_Reg2;
+ 
+ 
+    //SL_Read_Reg1 display the int1 type
+    GSENSOR_ReadReg(SL_SC7A20_INT2_SRC,1, &SL_SRC_Reg2);
+    GSENSOR_ReadReg(SL_SC7A20_INT2_THS,1, &SL_THS_Reg2);
+    GSENSOR_ReadReg(SL_SC7A20_INT2_DURATION,1, &SL_DURATION_Reg2);
+	
+    printf("SL_SC7A20_INT2_SRC=%#x\r\n",SL_SRC_Reg2);	
+  //  if((SL_SRC_Reg2&0x40)==0x40){
+
+	    if((SL_SRC_Reg2&0x01)==0x01)
+	    {
+	        //X-
+		    printf("X2-\r\n");	
+	    }
+	    if((SL_SRC_Reg2&0x02)==0x02)
+	    {
+	        //X+
+		    printf("X2+\r\n");	
+	    }
+	    if((SL_SRC_Reg2&0x04)==0x04)
+	    {
+	        //Y-
+		    printf("Y2-\r\n");	
+	    }
+	    if((SL_SRC_Reg2&0x08)==0x08)
+	    {
+	        //Y+
+		    printf("Y2+\r\n");	
+	    }
+	    if((SL_SRC_Reg2&0x10)==0x10)
+	    {
+	        //Z-
+		    printf("Z2-\r\n");	
+	    }
+	    if((SL_SRC_Reg2&0x20)==0x20)
+	    {
+	        //Z+
+		    printf("Z2+\r\n");	
+	    }
+ //   }
+    
+}
+
+
+void  SL_SC7A20_Reg_read_all(void)
+{
+    UINT8 SL_Read_Reg;
+    printf("SL_SC7A20_Reg_readall ++++++++\r\n");	
+    /*******************AOI1  IN  INT1********************/
+	UINT8 adr;
+	for(adr=0x20;adr<=0x3F;adr++){
+		GSENSOR_ReadReg(adr,1, &SL_Read_Reg);
+		printf("%#x = %#x\r\n",adr,SL_Read_Reg);	
+	}
+	
+    printf("SL_SC7A20_Reg_readall --------\r\n");	
+}
+
+
+
+
+/***************锟斤拷锟捷革拷锟斤拷锟斤拷锟斤拷**锟斤拷锟劫度硷拷使锟斤拷**********/
 INT8  SL_SC7A20_Power_Config(UINT8 Power_Config_Reg)
 {
     UINT8 SL_Read_Reg;
@@ -411,6 +519,7 @@ INT8  SL_SC7A20_Power_Config(UINT8 Power_Config_Reg)
     GSENSOR_ReadReg(SL_SC7A20_SDOI2C_PU_CFG,1, &SL_Read_Reg); 
     SL_Read_Reg=SL_Read_Reg|SL_SC7A20_SDO_PU_MSK|SL_SC7A20_I2C_PU_MSK;
     GSENSOR_WriteReg(SL_SC7A20_SDOI2C_PU_CFG, SL_Read_Reg);
+    GSENSOR_WriteReg(SL_SC7A20_MTP_CFG, 0);
 #endif
     SL_Read_Reg  = 0xff;
     GSENSOR_WriteReg(SL_SC7A20_CTRL_REG1, Power_Config_Reg);
@@ -425,7 +534,7 @@ INT8  SL_SC7A20_Power_Config(UINT8 Power_Config_Reg)
 
 
 #if   SL_SC7A20_16BIT_8BIT==0
-/***************加速度计数据读取*8bits*********/
+/***************锟斤拷锟劫度硷拷锟斤拷锟捷讹拷取*8bits*********/
 INT8  SL_SC7A20_Read_XYZ_Data(INT8 *SL_SC7A20_Data_XYZ_Buf)
 {
     UINT8 SL_Read_Buf[7];
@@ -446,20 +555,27 @@ INT8  SL_SC7A20_Read_XYZ_Data(INT8 *SL_SC7A20_Data_XYZ_Buf)
     }
 }
 #elif SL_SC7A20_16BIT_8BIT==1
-/***************加速度计数据读取*16bits*********/
+/***************锟斤拷锟劫度硷拷锟斤拷锟捷讹拷取*16bits*********/
 INT8  SL_SC7A20_Read_XYZ_Data(INT16 *SL_SC7A20_Data_XYZ_Buf)
 {
     UINT8 SL_Read_Buf[7];
     
     GSENSOR_ReadReg(SL_SC7A20_STATUS_REG,1, &SL_Read_Buf[0]);
-    
+    #ifdef USING_PRINTF	
+		printf("SL_SC7A20_STATUS_REG = %#x\r\n",SL_Read_Buf[0]);
+	#endif
     if((SL_Read_Buf[0]&0x0f)==0x0f)
     {
         GSENSOR_ReadReg(SL_SC7A20_DATA_OUT,6, &SL_Read_Buf[1]);
- 
+        #ifdef USING_PRINTF	
+			printf("SL_SC7A20_DATA_OUT22 = %#x\r\n",SL_Read_Buf[1]);
+		#endif
         SL_SC7A20_Data_XYZ_Buf[0]=(INT16)((SL_Read_Buf[2]<<8) + SL_Read_Buf[1]);
         SL_SC7A20_Data_XYZ_Buf[1]=(INT16)((SL_Read_Buf[4]<<8) + SL_Read_Buf[3]);
         SL_SC7A20_Data_XYZ_Buf[2]=(INT16)((SL_Read_Buf[6]<<8) + SL_Read_Buf[5]);
+        #ifdef USING_PRINTF	
+			printf("SL_SC7A20_DATA_OUT BUF:X = %d,Y = %d,Z = %d\r\n",SL_SC7A20_Data_XYZ_Buf[0],SL_SC7A20_Data_XYZ_Buf[1],SL_SC7A20_Data_XYZ_Buf[2]);
+		#endif
         return  1;
     }
     else
@@ -477,7 +593,8 @@ void GsensorInit(void)
 		SL_SC7A20_BOOT();
 		SL_SC7A20_FS_Config(SL_SC7A20_FS_4G);
 		SL_SC7A20_INT_Config();
-		SL_SC7A20_INT_RESET();
+		//SL_SC7A20_INT_RESET();
 		SL_SC7A20_Power_Config(SL_SC7A20_LOWER_POWER_ODR_400HZ);
 	}
 }
+#endif