|
@@ -1,329 +1,326 @@
|
|
|
#include "sensor.h"
|
|
|
|
|
|
-#if 1//def _SC7A20_
|
|
|
+#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);
|
|
|
- if(SL_Read_Reg==SC7A20_CHIP_ID_VALUE){
|
|
|
- return 1;
|
|
|
- } else {
|
|
|
- return -1;
|
|
|
- }
|
|
|
+ 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);
|
|
|
+ if (SL_Read_Reg == SC7A20_CHIP_ID_VALUE)
|
|
|
+ {
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/***************BOOT �����ڲ��Ĵ���ֵ*********************/
|
|
|
-INT8 SL_SC7A20_BOOT(void)
|
|
|
+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;
|
|
|
+ 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;
|
|
|
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;
|
|
|
|
|
|
- GSENSOR_ReadReg(SL_SC7A20_CTRL_REG4,1, &SL_Read_Reg);
|
|
|
- SL_Write_Reg=0x80|Sc7a20_FS_Reg|SL_SC7A20_HR_ENABLE;
|
|
|
+ GSENSOR_ReadReg(SL_SC7A20_CTRL_REG4, 1, &SL_Read_Reg);
|
|
|
+ SL_Write_Reg = 0x80 | Sc7a20_FS_Reg | SL_SC7A20_HR_ENABLE;
|
|
|
GSENSOR_WriteReg(SL_SC7A20_CTRL_REG4, SL_Write_Reg);
|
|
|
- GSENSOR_ReadReg(SL_SC7A20_CTRL_REG4,1, &SL_Read_Reg);
|
|
|
- if(SL_Read_Reg==SL_Write_Reg) {
|
|
|
- return 1;
|
|
|
- }else{
|
|
|
- return -1;
|
|
|
+ GSENSOR_ReadReg(SL_SC7A20_CTRL_REG4, 1, &SL_Read_Reg);
|
|
|
+ if (SL_Read_Reg == SL_Write_Reg)
|
|
|
+ {
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-#if SL_6D4D2D1D_SEL==1 //1D
|
|
|
+#if SL_6D4D2D1D_SEL == 1 //1D
|
|
|
//AOI1_INT1 �˶���⣬�˶������ж� 6D�˶����
|
|
|
//AOI2_INT2 λ�ü�⣬����Ƿ��뿪X+λ�� 1Dλ��ʶ��
|
|
|
/***************�����*************/
|
|
|
-INT8 SL_SC7A20_INT_Config(void)
|
|
|
+INT8 SL_SC7A20_INT_Config(void)
|
|
|
{
|
|
|
UINT8 SL_Read_Reg;
|
|
|
|
|
|
/*******************AOI1 IN INT1********************/
|
|
|
- SL_Read_Reg=0x08;//AOI1 LATCH
|
|
|
- GSENSOR_WriteReg(SL_SC7A20_CTRL_REG5, SL_Read_Reg);
|
|
|
-
|
|
|
- SL_Read_Reg=SL_SC7A20_INT_ACTIVE_HIGH_LEVEL;
|
|
|
+ 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);
|
|
|
-
|
|
|
+ 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|0x02;//X ����¼� X�����ݵľ���ֵ������ֵ
|
|
|
- GSENSOR_WriteReg(SL_SC7A20_INT1_CFG, SL_Read_Reg);
|
|
|
+ SL_Read_Reg = 0x00; //0x7F
|
|
|
+ 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=0xcf;//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_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=0x40;//SL_Read_Reg|0x40; //AOI1 TO INT1
|
|
|
- GSENSOR_WriteReg(SL_SC7A20_CTRL_REG3, SL_Read_Reg);
|
|
|
+ // 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********************/
|
|
|
|
|
|
-
|
|
|
/*******************AOI2 IN INT2********************/
|
|
|
- GSENSOR_ReadReg(SL_SC7A20_CTRL_REG5,1, &SL_Read_Reg);
|
|
|
- SL_Read_Reg=SL_Read_Reg|0x02;//AOI2 LATCH
|
|
|
- GSENSOR_WriteReg(SL_SC7A20_CTRL_REG5, SL_Read_Reg);
|
|
|
-
|
|
|
+ GSENSOR_ReadReg(SL_SC7A20_CTRL_REG5, 1, &SL_Read_Reg);
|
|
|
+ SL_Read_Reg = SL_Read_Reg | 0x02; //AOI2 LATCH
|
|
|
+ GSENSOR_WriteReg(SL_SC7A20_CTRL_REG5, SL_Read_Reg);
|
|
|
|
|
|
//AOI2 CONFIG
|
|
|
- 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);
|
|
|
+ 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_10PERCENT);
|
|
|
+ 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
|
|
|
- GSENSOR_ReadReg(SL_SC7A20_CTRL_REG6,1, &SL_Read_Reg);
|
|
|
- SL_Read_Reg=SL_Read_Reg|0x20; //AOI2 TO INT2
|
|
|
- GSENSOR_WriteReg(SL_SC7A20_CTRL_REG6, SL_Read_Reg);
|
|
|
+ GSENSOR_ReadReg(SL_SC7A20_CTRL_REG6, 1, &SL_Read_Reg);
|
|
|
+ SL_Read_Reg = SL_Read_Reg | 0x20; //AOI2 TO INT2
|
|
|
+ GSENSOR_WriteReg(SL_SC7A20_CTRL_REG6, SL_Read_Reg);
|
|
|
/*******************AOI2 IN INT2********************/
|
|
|
|
|
|
- return 1;
|
|
|
+ return 1;
|
|
|
}
|
|
|
-#elif SL_6D4D2D1D_SEL==2 //2D
|
|
|
-//AOI1_INT1 �˶���⣬�˶������ж� ���¼� 3D�˶����
|
|
|
+#elif SL_6D4D2D1D_SEL == 2 //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;
|
|
|
|
|
|
/*******************AOI1 IN INT1********************/
|
|
|
- SL_Read_Reg=0x08;//AOI1 LATCH
|
|
|
- GSENSOR_WriteReg(SL_SC7A20_CTRL_REG5, SL_Read_Reg);
|
|
|
-
|
|
|
- SL_Read_Reg=SL_SC7A20_INT_ACTIVE_HIGH_LEVEL;
|
|
|
+ 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);
|
|
|
-
|
|
|
+ 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|0x02;//X ����¼� X�����ݵľ���ֵ������ֵ
|
|
|
- SL_Read_Reg=SL_Read_Reg|0x04;//Y ����¼� Y�����ݵľ���ֵ������ֵ
|
|
|
- GSENSOR_WriteReg(SL_SC7A20_INT1_CFG, SL_Read_Reg);
|
|
|
+ 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=0xcf;//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_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=0x40;//SL_Read_Reg|0x40; //AOI1 TO INT1
|
|
|
- GSENSOR_WriteReg(SL_SC7A20_CTRL_REG3, SL_Read_Reg);
|
|
|
+ // 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********************/
|
|
|
|
|
|
-
|
|
|
/*******************AOI2 IN INT2********************/
|
|
|
- GSENSOR_ReadReg(SL_SC7A20_CTRL_REG5,1, &SL_Read_Reg);
|
|
|
- SL_Read_Reg=SL_Read_Reg|0x02;//AOI2 LATCH
|
|
|
- GSENSOR_WriteReg(SL_SC7A20_CTRL_REG5, SL_Read_Reg);
|
|
|
-
|
|
|
+ GSENSOR_ReadReg(SL_SC7A20_CTRL_REG5, 1, &SL_Read_Reg);
|
|
|
+ SL_Read_Reg = SL_Read_Reg | 0x02; //AOI2 LATCH
|
|
|
+ GSENSOR_WriteReg(SL_SC7A20_CTRL_REG5, SL_Read_Reg);
|
|
|
|
|
|
//AOI2 CONFIG
|
|
|
- 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);
|
|
|
+ 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_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_10PERCENT);
|
|
|
+ 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
|
|
|
- GSENSOR_ReadReg(SL_SC7A20_CTRL_REG6,1, &SL_Read_Reg);
|
|
|
- SL_Read_Reg=SL_Read_Reg|0x20; //AOI2 TO INT2
|
|
|
- GSENSOR_WriteReg(SL_SC7A20_CTRL_REG6, SL_Read_Reg);
|
|
|
+ GSENSOR_ReadReg(SL_SC7A20_CTRL_REG6, 1, &SL_Read_Reg);
|
|
|
+ SL_Read_Reg = SL_Read_Reg | 0x20; //AOI2 TO INT2
|
|
|
+ GSENSOR_WriteReg(SL_SC7A20_CTRL_REG6, SL_Read_Reg);
|
|
|
/*******************AOI2 IN INT2********************/
|
|
|
|
|
|
- return 1;
|
|
|
+ return 1;
|
|
|
}
|
|
|
-#elif SL_6D4D2D1D_SEL==4 //4D
|
|
|
-//AOI1_INT1 �˶���⣬�˶������ж� ���¼� 3D�˶����
|
|
|
+#elif SL_6D4D2D1D_SEL == 4 //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;
|
|
|
|
|
|
/*******************AOI1 IN INT1********************/
|
|
|
- SL_Read_Reg=0x08;//AOI1 LATCH
|
|
|
- GSENSOR_WriteReg(SL_SC7A20_CTRL_REG5, SL_Read_Reg);
|
|
|
-
|
|
|
- SL_Read_Reg=SL_SC7A20_INT_ACTIVE_HIGH_LEVEL;
|
|
|
+ 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);
|
|
|
-
|
|
|
+ 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�����ݵľ���ֵ������ֵ
|
|
|
- GSENSOR_WriteReg(SL_SC7A20_INT1_CFG, SL_Read_Reg);
|
|
|
+ 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=0xcf;//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_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=0x40;//SL_Read_Reg|0x40; //AOI1 TO INT1
|
|
|
- GSENSOR_WriteReg(SL_SC7A20_CTRL_REG3, SL_Read_Reg);
|
|
|
+ // 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********************/
|
|
|
|
|
|
-
|
|
|
/*******************AOI2 IN INT2********************/
|
|
|
- GSENSOR_ReadReg(SL_SC7A20_CTRL_REG5,1, &SL_Read_Reg);
|
|
|
- SL_Read_Reg=SL_Read_Reg|0x02;//AOI2 LATCH
|
|
|
- GSENSOR_WriteReg(SL_SC7A20_CTRL_REG5, SL_Read_Reg);
|
|
|
-
|
|
|
+ GSENSOR_ReadReg(SL_SC7A20_CTRL_REG5, 1, &SL_Read_Reg);
|
|
|
+ SL_Read_Reg = SL_Read_Reg | 0x02; //AOI2 LATCH
|
|
|
+ GSENSOR_WriteReg(SL_SC7A20_CTRL_REG5, SL_Read_Reg);
|
|
|
|
|
|
//AOI2 CONFIG
|
|
|
- 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);
|
|
|
+ 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_10PERCENT);
|
|
|
+ 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
|
|
|
- GSENSOR_ReadReg(SL_SC7A20_CTRL_REG6,1, &SL_Read_Reg);
|
|
|
- SL_Read_Reg=SL_Read_Reg|0x20; //AOI2 TO INT2
|
|
|
- GSENSOR_WriteReg(SL_SC7A20_CTRL_REG6, SL_Read_Reg);
|
|
|
+ GSENSOR_ReadReg(SL_SC7A20_CTRL_REG6, 1, &SL_Read_Reg);
|
|
|
+ SL_Read_Reg = SL_Read_Reg | 0x20; //AOI2 TO INT2
|
|
|
+ GSENSOR_WriteReg(SL_SC7A20_CTRL_REG6, SL_Read_Reg);
|
|
|
/*******************AOI2 IN INT2********************/
|
|
|
|
|
|
- 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λ��ʶ��
|
|
|
/***************�����*************/
|
|
|
-INT8 SL_SC7A20_INT_Config(void)
|
|
|
+INT8 SL_SC7A20_INT_Config(void)
|
|
|
{
|
|
|
UINT8 SL_Read_Reg;
|
|
|
|
|
|
/*******************AOI1 IN INT1********************/
|
|
|
- SL_Read_Reg=0x08;//AOI1 LATCH
|
|
|
- GSENSOR_WriteReg(SL_SC7A20_CTRL_REG5, SL_Read_Reg);
|
|
|
-
|
|
|
- SL_Read_Reg=SL_SC7A20_INT_ACTIVE_HIGH_LEVEL;
|
|
|
+ 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);
|
|
|
-
|
|
|
+ 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�����ݵľ���ֵ������ֵ
|
|
|
- GSENSOR_WriteReg(SL_SC7A20_INT1_CFG, SL_Read_Reg);
|
|
|
+ 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=0xcf;//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_20PERCENT);
|
|
|
+ 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=0x40;//SL_Read_Reg|0x40; //AOI1 TO INT1
|
|
|
- GSENSOR_WriteReg(SL_SC7A20_CTRL_REG3, SL_Read_Reg);
|
|
|
+ // 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********************/
|
|
|
|
|
|
-
|
|
|
/*******************AOI2 IN INT2********************/
|
|
|
- GSENSOR_ReadReg(SL_SC7A20_CTRL_REG5,1, &SL_Read_Reg);
|
|
|
- SL_Read_Reg=SL_Read_Reg|0x02;//AOI2 LATCH
|
|
|
- GSENSOR_WriteReg(SL_SC7A20_CTRL_REG5, SL_Read_Reg);
|
|
|
-
|
|
|
+ GSENSOR_ReadReg(SL_SC7A20_CTRL_REG5, 1, &SL_Read_Reg);
|
|
|
+ SL_Read_Reg = SL_Read_Reg | 0x02; //AOI2 LATCH
|
|
|
+ GSENSOR_WriteReg(SL_SC7A20_CTRL_REG5, SL_Read_Reg);
|
|
|
|
|
|
//AOI2 CONFIG
|
|
|
- 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);
|
|
|
+ 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);
|
|
|
+ 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_5PERCENT);
|
|
|
+ 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
|
|
|
- GSENSOR_ReadReg(SL_SC7A20_CTRL_REG6,1, &SL_Read_Reg);
|
|
|
- SL_Read_Reg=SL_Read_Reg|0x20; //AOI2 TO INT2
|
|
|
- GSENSOR_WriteReg(SL_SC7A20_CTRL_REG6, SL_Read_Reg);
|
|
|
+ GSENSOR_ReadReg(SL_SC7A20_CTRL_REG6, 1, &SL_Read_Reg);
|
|
|
+ SL_Read_Reg = SL_Read_Reg | 0x20; //AOI2 TO INT2
|
|
|
+ GSENSOR_WriteReg(SL_SC7A20_CTRL_REG6, SL_Read_Reg);
|
|
|
/*******************AOI2 IN INT2********************/
|
|
|
|
|
|
- return 1;
|
|
|
+ return 1;
|
|
|
}
|
|
|
#endif
|
|
|
|
|
@@ -334,50 +331,50 @@ INT8 SL_SC7A20_INT_Config(void)
|
|
|
//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_Reg2;
|
|
|
-
|
|
|
- /*****Ϊ�˱����ȡ���ݹ������ֲ����жϣ�������ʱ�ر��ж�*****/
|
|
|
-
|
|
|
+
|
|
|
+ /*****Ϊ�˱����ȡ���ݹ������ֲ����жϣ�������ʱ�ر��ж�*****/
|
|
|
+
|
|
|
//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);
|
|
|
//SL_Read_Reg2 display the int2 type
|
|
|
- GSENSOR_ReadReg(SL_SC7A20_INT2_SRC,1, &SL_Read_Reg2);
|
|
|
-
|
|
|
+ GSENSOR_ReadReg(SL_SC7A20_INT2_SRC, 1, &SL_Read_Reg2);
|
|
|
+
|
|
|
//close INT1
|
|
|
GSENSOR_WriteReg(SL_SC7A20_INT1_CFG, 0x00);
|
|
|
//close INT2
|
|
|
- GSENSOR_WriteReg(SL_SC7A20_INT2_CFG, 0x00);
|
|
|
-
|
|
|
- if((SL_Read_Reg2&0x02)==0x02)
|
|
|
+ GSENSOR_WriteReg(SL_SC7A20_INT2_CFG, 0x00);
|
|
|
+
|
|
|
+ if ((SL_Read_Reg2 & 0x02) == 0x02)
|
|
|
{
|
|
|
//X+
|
|
|
}
|
|
|
- if((SL_Read_Reg2&0x01)==0x01)
|
|
|
+ if ((SL_Read_Reg2 & 0x01) == 0x01)
|
|
|
{
|
|
|
//X-
|
|
|
}
|
|
|
- if((SL_Read_Reg2&0x08)==0x08)
|
|
|
+ if ((SL_Read_Reg2 & 0x08) == 0x08)
|
|
|
{
|
|
|
//Y+
|
|
|
}
|
|
|
- if((SL_Read_Reg2&0x04)==0x04)
|
|
|
+ if ((SL_Read_Reg2 & 0x04) == 0x04)
|
|
|
{
|
|
|
//Y-
|
|
|
}
|
|
|
- if((SL_Read_Reg2&0x20)==0x20)
|
|
|
+ if ((SL_Read_Reg2 & 0x20) == 0x20)
|
|
|
{
|
|
|
//Z+
|
|
|
}
|
|
|
- if((SL_Read_Reg2&0x10)==0x10)
|
|
|
+ if ((SL_Read_Reg2 & 0x10) == 0x10)
|
|
|
{
|
|
|
//Z-
|
|
|
}
|
|
|
-
|
|
|
- if(SL_Read_Reg1!=0||SL_Read_Reg2!=0)
|
|
|
+
|
|
|
+ if (SL_Read_Reg1 != 0 || SL_Read_Reg2 != 0)
|
|
|
{
|
|
|
return 1;
|
|
|
}
|
|
@@ -385,198 +382,190 @@ INT8 SL_SC7A20_INT_RESET(void)
|
|
|
{
|
|
|
return 0;
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-void SL_SC7A20_AOI1_event(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");
|
|
|
- }
|
|
|
-// }
|
|
|
-
|
|
|
-}
|
|
|
+ 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){
|
|
|
|
|
|
-INT8 SL_SC7A20_AOI2_event(void)
|
|
|
+ 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");
|
|
|
- }
|
|
|
- // }
|
|
|
-
|
|
|
-}
|
|
|
+ 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){
|
|
|
|
|
|
-void SL_SC7A20_Reg_read_all(void)
|
|
|
+ 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");
|
|
|
+ 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");
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
+ 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;
|
|
|
|
|
|
-#if SL_SC7A20_MTP_ENABLE==1
|
|
|
- SL_Read_Reg = 0x00;
|
|
|
+#if SL_SC7A20_MTP_ENABLE == 1
|
|
|
+ SL_Read_Reg = 0x00;
|
|
|
GSENSOR_WriteReg(SL_SC7A20_MTP_CFG, SL_SC7A20_MTP_VALUE);
|
|
|
- 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_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;
|
|
|
+ SL_Read_Reg = 0xff;
|
|
|
GSENSOR_WriteReg(SL_SC7A20_CTRL_REG1, Power_Config_Reg);
|
|
|
- GSENSOR_ReadReg(SL_SC7A20_CTRL_REG1,1, &SL_Read_Reg);
|
|
|
+ GSENSOR_ReadReg(SL_SC7A20_CTRL_REG1, 1, &SL_Read_Reg);
|
|
|
|
|
|
- if(SL_Read_Reg==Power_Config_Reg){
|
|
|
- return 1;
|
|
|
- }else{
|
|
|
- return -1;
|
|
|
+ if (SL_Read_Reg == Power_Config_Reg)
|
|
|
+ {
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-#if SL_SC7A20_16BIT_8BIT==0
|
|
|
+#if SL_SC7A20_16BIT_8BIT == 0
|
|
|
/***************���ٶȼ����ݶ�ȡ*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];
|
|
|
-
|
|
|
- GSENSOR_ReadReg(SL_SC7A20_STATUS_REG,1, &SL_Read_Buf[0]);
|
|
|
-
|
|
|
- if((SL_Read_Buf[0]&0x0f)==0x0f)
|
|
|
+
|
|
|
+ GSENSOR_ReadReg(SL_SC7A20_STATUS_REG, 1, &SL_Read_Buf[0]);
|
|
|
+
|
|
|
+ if ((SL_Read_Buf[0] & 0x0f) == 0x0f)
|
|
|
{
|
|
|
- GSENSOR_ReadReg(SL_SC7A20_DATA_OUT,6, &SL_Read_Buf[1]);
|
|
|
- SL_SC7A20_Data_XYZ_Buf[0]=(INT8)SL_Read_Buf[2];
|
|
|
- SL_SC7A20_Data_XYZ_Buf[1]=(INT8)SL_Read_Buf[4];
|
|
|
- SL_SC7A20_Data_XYZ_Buf[2]=(INT8)SL_Read_Buf[6];
|
|
|
- return 1;
|
|
|
+ GSENSOR_ReadReg(SL_SC7A20_DATA_OUT, 6, &SL_Read_Buf[1]);
|
|
|
+ SL_SC7A20_Data_XYZ_Buf[0] = (INT8)SL_Read_Buf[2];
|
|
|
+ SL_SC7A20_Data_XYZ_Buf[1] = (INT8)SL_Read_Buf[4];
|
|
|
+ SL_SC7A20_Data_XYZ_Buf[2] = (INT8)SL_Read_Buf[6];
|
|
|
+ return 1;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
return 0;
|
|
|
}
|
|
|
}
|
|
|
-#elif SL_SC7A20_16BIT_8BIT==1
|
|
|
+#elif SL_SC7A20_16BIT_8BIT == 1
|
|
|
/***************���ٶȼ����ݶ�ȡ*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];
|
|
|
-
|
|
|
- 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;
|
|
|
+
|
|
|
+ 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
|
|
|
{
|
|
@@ -586,15 +575,16 @@ INT8 SL_SC7A20_Read_XYZ_Data(INT16 *SL_SC7A20_Data_XYZ_Buf)
|
|
|
#endif
|
|
|
void GsensorInit(void)
|
|
|
{
|
|
|
- INT8 res = 0;
|
|
|
- res = SL_SC7A20_Online_Test();
|
|
|
- if(res==1){
|
|
|
-
|
|
|
- SL_SC7A20_BOOT();
|
|
|
- SL_SC7A20_FS_Config(SL_SC7A20_FS_4G);
|
|
|
- SL_SC7A20_INT_Config();
|
|
|
- //SL_SC7A20_INT_RESET();
|
|
|
- SL_SC7A20_Power_Config(SL_SC7A20_LOWER_POWER_ODR_400HZ);
|
|
|
- }
|
|
|
+ INT8 res = 0;
|
|
|
+ res = SL_SC7A20_Online_Test();
|
|
|
+ if (res == 1)
|
|
|
+ {
|
|
|
+
|
|
|
+ SL_SC7A20_BOOT();
|
|
|
+ SL_SC7A20_FS_Config(SL_SC7A20_FS_4G);
|
|
|
+ SL_SC7A20_INT_Config();
|
|
|
+ //SL_SC7A20_INT_RESET();
|
|
|
+ SL_SC7A20_Power_Config(SL_SC7A20_LOWER_POWER_ODR_400HZ);
|
|
|
+ }
|
|
|
}
|
|
|
#endif
|