123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600 |
- #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=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�����ݵľ���ֵ������ֵ
- 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_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_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);
- /*******************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_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);
- /*******************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\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;
- #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]);
- #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
- {
- 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_LOWER_POWER_ODR_400HZ);
- }
- }
- #endif
|