123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588 |
- #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);
- if (SL_Read_Reg == SC7A20_CHIP_ID_VALUE)
- {
- return 1;
- }
- else
- {
- return -1;
- }
- }
- /***************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;
- 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;
- 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;
- }
- }
- #if SL_6D4D2D1D_SEL == 1 //1D
- //AOI1_INT1 �˶���⣬�˶������ж� 6D�˶����
- //AOI2_INT2 λ�ü�⣬����Ƿ��뿪X+λ�� 1Dλ��ʶ��
- /***************�����*************/
- 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;
- //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 | 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_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 = 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);
- //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);
- //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_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);
- /*******************AOI2 IN INT2********************/
- return 1;
- }
- #elif SL_6D4D2D1D_SEL == 2 //2D
- //AOI1_INT1 �˶���⣬�˶������ж� ���¼� 3D�˶����
- //AOI2_INT2 λ�ü�⣬���X+ �� X- 2Dλ��ʶ��
- /***************�����*************/
- 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;
- //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 | 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_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 = 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);
- //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);
- //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_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);
- /*******************AOI2 IN INT2********************/
- return 1;
- }
- #elif SL_6D4D2D1D_SEL == 4 //4D
- //AOI1_INT1 �˶���⣬�˶������ж� ���¼� 3D�˶����
- //AOI2_INT2 λ�ü�⣬���X+ �� X- Y+ �� Y- 4Dλ��ʶ��
- /***************�����*************/
- 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;
- //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�����ݵľ���ֵ������ֵ
- 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_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 = 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);
- //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);
- //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_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);
- /*******************AOI2 IN INT2********************/
- return 1;
- }
- #elif SL_6D4D2D1D_SEL == 6 //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********************/
- SL_Read_Reg = 0x00; //AOI1 LATCH
- GSENSOR_WriteReg(SL_SC7A20_CTRL_REG5, SL_Read_Reg);
- SL_Read_Reg = SL_SC7A20_INT_ACTIVE_LOWER_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 | 0x00; //�����˶�ʶ��ģʽ
- 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�����ݵľ���ֵ������ֵ
- GSENSOR_WriteReg(SL_SC7A20_INT1_CFG, SL_Read_Reg);
- //HPF SET
- // GSENSOR_ReadReg(SL_SC7A20_CTRL_REG2,1, &SL_Read_Reg);
- SL_Read_Reg = 0x81; //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_DURATION, SL_SC7A20_INT_DURATION_10CLK);
- //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********************/
- /*******************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);
- //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);
- //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_WriteReg(SL_SC7A20_INT2_THS, SL_SC7A20_INT_THS_20PERCENT);
- //������ֵ����ʱ�䴥���ж�
- GSENSOR_WriteReg(SL_SC7A20_INT2_DURATION, SL_SC7A20_INT_DURATION_10CLK);
- //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);
- /*******************AOI2 IN INT2********************/
- return 1;
- }
- #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����¼�
- 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);
- //SL_Read_Reg2 display the int2 type
- 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)
- {
- //X+
- }
- if ((SL_Read_Reg2 & 0x01) == 0x01)
- {
- //X-
- }
- if ((SL_Read_Reg2 & 0x08) == 0x08)
- {
- //Y+
- }
- if ((SL_Read_Reg2 & 0x04) == 0x04)
- {
- //Y-
- }
- if ((SL_Read_Reg2 & 0x20) == 0x20)
- {
- //Z+
- }
- if ((SL_Read_Reg2 & 0x10) == 0x10)
- {
- //Z-
- }
- if (SL_Read_Reg1 != 0 || SL_Read_Reg2 != 0)
- {
- return 1;
- }
- else
- {
- return 0;
- }
- }
- 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, ", adr, SL_Read_Reg);
- }
- printf("SL_SC7A20_Reg_readall --------\r\n");
- }
- /***************���ݸ�������**���ٶȼ�ʹ��**********/
- INT8 SL_SC7A20_Power_Config(UINT8 Power_Config_Reg)
- {
- UINT8 SL_Read_Reg;
- #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_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);
- GSENSOR_ReadReg(SL_SC7A20_CTRL_REG1, 1, &SL_Read_Reg);
- if (SL_Read_Reg == Power_Config_Reg)
- {
- return 1;
- }
- else
- {
- return -1;
- }
- }
- #if SL_SC7A20_16BIT_8BIT == 0
- /***************���ٶȼ����ݶ�ȡ*8bits*********/
- 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_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
- /***************���ٶȼ����ݶ�ȡ*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]);
- if ((SL_Read_Buf[0] & 0x0f) == 0x0f)
- {
- for (UINT8 i = 1; i < 7; i++)
- {
- GSENSOR_ReadReg(SL_SC7A20_STATUS_REG + i, 1, &SL_Read_Buf[i]);
- }
- 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]);
- SL_SC7A20_Data_XYZ_Buf[0] = SL_SC7A20_Data_XYZ_Buf[0] >> 4;
- SL_SC7A20_Data_XYZ_Buf[1] = SL_SC7A20_Data_XYZ_Buf[1] >> 4;
- SL_SC7A20_Data_XYZ_Buf[2] = SL_SC7A20_Data_XYZ_Buf[2] >> 4;
- SL_SC7A20_Data_XYZ_Buf[0] = SL_SC7A20_Data_XYZ_Buf[0] * 2;
- SL_SC7A20_Data_XYZ_Buf[1] = SL_SC7A20_Data_XYZ_Buf[1] * 2;
- SL_SC7A20_Data_XYZ_Buf[2] = SL_SC7A20_Data_XYZ_Buf[2] * 2;
- return 1;
- }
- else
- {
- return 0;
- }
- }
- #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_ODR_400HZ);
- }
- }
- #endif
|