|
@@ -1,12 +1,12 @@
|
|
#include "sensor.h"
|
|
#include "sensor.h"
|
|
|
|
|
|
-
|
|
|
|
-/***************在线测试**********************/
|
|
|
|
|
|
+#if 1//def _SC7A20_
|
|
|
|
+/***************锟斤拷锟竭诧拷锟斤拷**********************/
|
|
INT8 SL_SC7A20_Online_Test(void)
|
|
INT8 SL_SC7A20_Online_Test(void)
|
|
{
|
|
{
|
|
UINT8 SL_Read_Reg=0xff;
|
|
UINT8 SL_Read_Reg=0xff;
|
|
GSENSOR_ReadReg(SC7A20_CHIP_ID_ADDRESS,1, &SL_Read_Reg);
|
|
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){
|
|
if(SL_Read_Reg==SC7A20_CHIP_ID_VALUE){
|
|
return 1;
|
|
return 1;
|
|
} else {
|
|
} else {
|
|
@@ -14,18 +14,18 @@ INT8 SL_SC7A20_Online_Test(void)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-/***************BOOT 重载内部寄存器值*********************/
|
|
|
|
|
|
+/***************BOOT 锟斤拷锟斤拷锟节诧拷锟侥达拷锟斤拷值*********************/
|
|
INT8 SL_SC7A20_BOOT(void)
|
|
INT8 SL_SC7A20_BOOT(void)
|
|
{
|
|
{
|
|
UINT8 SL_Read_Reg=0xff;
|
|
UINT8 SL_Read_Reg=0xff;
|
|
GSENSOR_ReadReg(SL_SC7A20_CTRL_REG5,1, &SL_Read_Reg);
|
|
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);
|
|
GSENSOR_WriteReg(SL_SC7A20_CTRL_REG5, SL_Read_Reg);
|
|
return 1;
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
-/***************传感器量程设置**********************/
|
|
|
|
|
|
+/***************锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷**********************/
|
|
INT8 SL_SC7A20_FS_Config(UINT8 Sc7a20_FS_Reg)
|
|
INT8 SL_SC7A20_FS_Config(UINT8 Sc7a20_FS_Reg)
|
|
{
|
|
{
|
|
UINT8 SL_Read_Reg=0xff,SL_Write_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
|
|
#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)
|
|
INT8 SL_SC7A20_INT_Config(void)
|
|
{
|
|
{
|
|
UINT8 SL_Read_Reg;
|
|
UINT8 SL_Read_Reg;
|
|
|
|
|
|
/*******************AOI1 IN INT1********************/
|
|
/*******************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);
|
|
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
|
|
//interrupt happen,int pin output lower level
|
|
GSENSOR_WriteReg(SL_SC7A20_CTRL_REG6, SL_Read_Reg);
|
|
GSENSOR_WriteReg(SL_SC7A20_CTRL_REG6, SL_Read_Reg);
|
|
|
|
|
|
//AOI1 CONFIG
|
|
//AOI1 CONFIG
|
|
SL_Read_Reg=0x00; //0x7F
|
|
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);
|
|
GSENSOR_WriteReg(SL_SC7A20_INT1_CFG, SL_Read_Reg);
|
|
|
|
|
|
//HPF SET
|
|
//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_CTRL_REG2, SL_Read_Reg);
|
|
|
|
|
|
- //中断阈值设置
|
|
|
|
|
|
+ //锟叫讹拷锟斤拷值锟斤拷锟斤拷
|
|
GSENSOR_WriteReg(SL_SC7A20_INT1_THS, SL_SC7A20_INT_THS_10PERCENT);
|
|
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_DURATION, SL_SC7A20_INT_DURATION_2CLK);
|
|
|
|
|
|
//AOI1 TO INT1
|
|
//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);
|
|
GSENSOR_WriteReg(SL_SC7A20_CTRL_REG3, SL_Read_Reg);
|
|
/*******************AOI1 IN INT1********************/
|
|
/*******************AOI1 IN INT1********************/
|
|
|
|
|
|
@@ -90,26 +85,21 @@ INT8 SL_SC7A20_INT_Config(void)
|
|
SL_Read_Reg=SL_Read_Reg|0x02;//AOI2 LATCH
|
|
SL_Read_Reg=SL_Read_Reg|0x02;//AOI2 LATCH
|
|
GSENSOR_WriteReg(SL_SC7A20_CTRL_REG5, SL_Read_Reg);
|
|
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
|
|
//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);
|
|
GSENSOR_WriteReg(SL_SC7A20_INT2_CFG, SL_Read_Reg);
|
|
|
|
|
|
//HPF SET
|
|
//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);
|
|
GSENSOR_WriteReg(SL_SC7A20_INT2_DURATION, SL_SC7A20_INT_DURATION_2CLK);
|
|
|
|
|
|
//AOI2 TO INT2
|
|
//AOI2 TO INT2
|
|
@@ -121,38 +111,41 @@ INT8 SL_SC7A20_INT_Config(void)
|
|
return 1;
|
|
return 1;
|
|
}
|
|
}
|
|
#elif SL_6D4D2D1D_SEL==2 //2D
|
|
#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)
|
|
INT8 SL_SC7A20_INT_Config(void)
|
|
{
|
|
{
|
|
UINT8 SL_Read_Reg;
|
|
UINT8 SL_Read_Reg;
|
|
|
|
|
|
/*******************AOI1 IN INT1********************/
|
|
/*******************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);
|
|
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
|
|
//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);
|
|
GSENSOR_WriteReg(SL_SC7A20_INT1_CFG, SL_Read_Reg);
|
|
-
|
|
|
|
|
|
+
|
|
//HPF SET
|
|
//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_CTRL_REG2, SL_Read_Reg);
|
|
|
|
|
|
- //中断阈值设置
|
|
|
|
|
|
+ //锟叫讹拷锟斤拷值锟斤拷锟斤拷
|
|
GSENSOR_WriteReg(SL_SC7A20_INT1_THS, SL_SC7A20_INT_THS_10PERCENT);
|
|
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_DURATION, SL_SC7A20_INT_DURATION_2CLK);
|
|
|
|
|
|
//AOI1 TO INT1
|
|
//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);
|
|
GSENSOR_WriteReg(SL_SC7A20_CTRL_REG3, SL_Read_Reg);
|
|
/*******************AOI1 IN INT1********************/
|
|
/*******************AOI1 IN INT1********************/
|
|
|
|
|
|
@@ -162,26 +155,22 @@ INT8 SL_SC7A20_INT_Config(void)
|
|
SL_Read_Reg=SL_Read_Reg|0x02;//AOI2 LATCH
|
|
SL_Read_Reg=SL_Read_Reg|0x02;//AOI2 LATCH
|
|
GSENSOR_WriteReg(SL_SC7A20_CTRL_REG5, SL_Read_Reg);
|
|
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
|
|
//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);
|
|
GSENSOR_WriteReg(SL_SC7A20_INT2_CFG, SL_Read_Reg);
|
|
|
|
|
|
//HPF SET
|
|
//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);
|
|
GSENSOR_WriteReg(SL_SC7A20_INT2_DURATION, SL_SC7A20_INT_DURATION_2CLK);
|
|
|
|
|
|
//AOI2 TO INT2
|
|
//AOI2 TO INT2
|
|
@@ -193,38 +182,41 @@ INT8 SL_SC7A20_INT_Config(void)
|
|
return 1;
|
|
return 1;
|
|
}
|
|
}
|
|
#elif SL_6D4D2D1D_SEL==4 //4D
|
|
#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)
|
|
INT8 SL_SC7A20_INT_Config(void)
|
|
{
|
|
{
|
|
UINT8 SL_Read_Reg;
|
|
UINT8 SL_Read_Reg;
|
|
|
|
|
|
/*******************AOI1 IN INT1********************/
|
|
/*******************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);
|
|
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
|
|
//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);
|
|
GSENSOR_WriteReg(SL_SC7A20_INT1_CFG, SL_Read_Reg);
|
|
-
|
|
|
|
|
|
+
|
|
//HPF SET
|
|
//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_CTRL_REG2, SL_Read_Reg);
|
|
|
|
|
|
- //中断阈值设置
|
|
|
|
|
|
+ //锟叫讹拷锟斤拷值锟斤拷锟斤拷
|
|
GSENSOR_WriteReg(SL_SC7A20_INT1_THS, SL_SC7A20_INT_THS_10PERCENT);
|
|
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_DURATION, SL_SC7A20_INT_DURATION_2CLK);
|
|
|
|
|
|
//AOI1 TO INT1
|
|
//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);
|
|
GSENSOR_WriteReg(SL_SC7A20_CTRL_REG3, SL_Read_Reg);
|
|
/*******************AOI1 IN INT1********************/
|
|
/*******************AOI1 IN INT1********************/
|
|
|
|
|
|
@@ -234,26 +226,22 @@ INT8 SL_SC7A20_INT_Config(void)
|
|
SL_Read_Reg=SL_Read_Reg|0x02;//AOI2 LATCH
|
|
SL_Read_Reg=SL_Read_Reg|0x02;//AOI2 LATCH
|
|
GSENSOR_WriteReg(SL_SC7A20_CTRL_REG5, SL_Read_Reg);
|
|
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
|
|
//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);
|
|
GSENSOR_WriteReg(SL_SC7A20_INT2_CFG, SL_Read_Reg);
|
|
|
|
|
|
//HPF SET
|
|
//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);
|
|
GSENSOR_WriteReg(SL_SC7A20_INT2_DURATION, SL_SC7A20_INT_DURATION_2CLK);
|
|
|
|
|
|
//AOI2 TO INT2
|
|
//AOI2 TO INT2
|
|
@@ -265,39 +253,42 @@ INT8 SL_SC7A20_INT_Config(void)
|
|
return 1;
|
|
return 1;
|
|
}
|
|
}
|
|
#elif SL_6D4D2D1D_SEL==6 //6D
|
|
#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)
|
|
INT8 SL_SC7A20_INT_Config(void)
|
|
{
|
|
{
|
|
UINT8 SL_Read_Reg;
|
|
UINT8 SL_Read_Reg;
|
|
|
|
|
|
/*******************AOI1 IN INT1********************/
|
|
/*******************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);
|
|
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
|
|
//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);
|
|
GSENSOR_WriteReg(SL_SC7A20_INT1_CFG, SL_Read_Reg);
|
|
-
|
|
|
|
|
|
+
|
|
//HPF SET
|
|
//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_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
|
|
//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);
|
|
GSENSOR_WriteReg(SL_SC7A20_CTRL_REG3, SL_Read_Reg);
|
|
/*******************AOI1 IN INT1********************/
|
|
/*******************AOI1 IN INT1********************/
|
|
|
|
|
|
@@ -307,26 +298,23 @@ INT8 SL_SC7A20_INT_Config(void)
|
|
SL_Read_Reg=SL_Read_Reg|0x02;//AOI2 LATCH
|
|
SL_Read_Reg=SL_Read_Reg|0x02;//AOI2 LATCH
|
|
GSENSOR_WriteReg(SL_SC7A20_CTRL_REG5, SL_Read_Reg);
|
|
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
|
|
//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);
|
|
GSENSOR_WriteReg(SL_SC7A20_INT2_CFG, SL_Read_Reg);
|
|
|
|
|
|
//HPF SET
|
|
//HPF SET
|
|
GSENSOR_ReadReg(SL_SC7A20_CTRL_REG2,1, &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);
|
|
|
|
|
|
+ // 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);
|
|
GSENSOR_WriteReg(SL_SC7A20_INT2_DURATION, SL_SC7A20_INT_DURATION_2CLK);
|
|
|
|
|
|
//AOI2 TO INT2
|
|
//AOI2 TO INT2
|
|
@@ -339,20 +327,20 @@ INT8 SL_SC7A20_INT_Config(void)
|
|
}
|
|
}
|
|
#endif
|
|
#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)
|
|
INT8 SL_SC7A20_INT_RESET(void)
|
|
{
|
|
{
|
|
|
|
|
|
UINT8 SL_Read_Reg1;
|
|
UINT8 SL_Read_Reg1;
|
|
UINT8 SL_Read_Reg2;
|
|
UINT8 SL_Read_Reg2;
|
|
|
|
|
|
- /*****为了避免读取数据过程中又产生中断,可以暂时关闭中断*****/
|
|
|
|
|
|
+ /*****为锟剿憋拷锟斤拷锟饺★拷锟斤拷莨锟斤拷锟斤拷锟斤拷植锟斤拷锟斤拷卸希锟斤拷锟斤拷锟斤拷锟绞憋拷乇锟斤拷卸锟�*****/
|
|
|
|
|
|
//SL_Read_Reg1 display the int1 type
|
|
//SL_Read_Reg1 display the int1 type
|
|
GSENSOR_ReadReg(SL_SC7A20_INT1_SRC,1, &SL_Read_Reg1);
|
|
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)
|
|
INT8 SL_SC7A20_Power_Config(UINT8 Power_Config_Reg)
|
|
{
|
|
{
|
|
UINT8 SL_Read_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);
|
|
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;
|
|
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_SDOI2C_PU_CFG, SL_Read_Reg);
|
|
|
|
+ GSENSOR_WriteReg(SL_SC7A20_MTP_CFG, 0);
|
|
#endif
|
|
#endif
|
|
SL_Read_Reg = 0xff;
|
|
SL_Read_Reg = 0xff;
|
|
GSENSOR_WriteReg(SL_SC7A20_CTRL_REG1, Power_Config_Reg);
|
|
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
|
|
#if SL_SC7A20_16BIT_8BIT==0
|
|
-/***************加速度计数据读取*8bits*********/
|
|
|
|
|
|
+/***************锟斤拷锟劫度硷拷锟斤拷锟捷讹拷取*8bits*********/
|
|
INT8 SL_SC7A20_Read_XYZ_Data(INT8 *SL_SC7A20_Data_XYZ_Buf)
|
|
INT8 SL_SC7A20_Read_XYZ_Data(INT8 *SL_SC7A20_Data_XYZ_Buf)
|
|
{
|
|
{
|
|
UINT8 SL_Read_Buf[7];
|
|
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
|
|
#elif SL_SC7A20_16BIT_8BIT==1
|
|
-/***************加速度计数据读取*16bits*********/
|
|
|
|
|
|
+/***************锟斤拷锟劫度硷拷锟斤拷锟捷讹拷取*16bits*********/
|
|
INT8 SL_SC7A20_Read_XYZ_Data(INT16 *SL_SC7A20_Data_XYZ_Buf)
|
|
INT8 SL_SC7A20_Read_XYZ_Data(INT16 *SL_SC7A20_Data_XYZ_Buf)
|
|
{
|
|
{
|
|
UINT8 SL_Read_Buf[7];
|
|
UINT8 SL_Read_Buf[7];
|
|
|
|
|
|
GSENSOR_ReadReg(SL_SC7A20_STATUS_REG,1, &SL_Read_Buf[0]);
|
|
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)
|
|
if((SL_Read_Buf[0]&0x0f)==0x0f)
|
|
{
|
|
{
|
|
GSENSOR_ReadReg(SL_SC7A20_DATA_OUT,6, &SL_Read_Buf[1]);
|
|
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[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[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]);
|
|
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;
|
|
return 1;
|
|
}
|
|
}
|
|
else
|
|
else
|
|
@@ -477,7 +593,8 @@ void GsensorInit(void)
|
|
SL_SC7A20_BOOT();
|
|
SL_SC7A20_BOOT();
|
|
SL_SC7A20_FS_Config(SL_SC7A20_FS_4G);
|
|
SL_SC7A20_FS_Config(SL_SC7A20_FS_4G);
|
|
SL_SC7A20_INT_Config();
|
|
SL_SC7A20_INT_Config();
|
|
- SL_SC7A20_INT_RESET();
|
|
|
|
|
|
+ //SL_SC7A20_INT_RESET();
|
|
SL_SC7A20_Power_Config(SL_SC7A20_LOWER_POWER_ODR_400HZ);
|
|
SL_SC7A20_Power_Config(SL_SC7A20_LOWER_POWER_ODR_400HZ);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+#endif
|