void MotSpiProcess(uint8_t *RxBuf, uint16_t RxLen) { RxMotValue = RxBuf; switch(MotSpiTxBuf[2]) { case 0x00: RxTemp[0]=MotSpiTxBuf[0]; RxTemp[1]=MotSpiTxBuf[1]; RxTemp[2]=MotSpiTxBuf[2]; break; case 0x01: break; default: break; } } /* ******************************************************************************* FUNCTION ******************************************************************************* */ void FXLS8962_SPI_Write(uint8_t RegisterAddress, uint8_t data) { pMotCmd_t pMotCmd = (pMotCmd_t) MotSpiTxBuf; pMotCmd->deviceadr = RegisterAddress; pMotCmd->cmd1 = 0Xff; pMotCmd->cmd2 = data; MotSpiTran.count = 3; MOTSPI_SHIFT(MotSpiTran); memset(MotSpiTxBuf, 0, MotSpiTran.count); BSpiCurrentStat = MOTSPI_WRITE_STAT; Task_sleep(30000); } /* ******************************************************************************* FUNCTION ******************************************************************************* */ void FXLS8962_SPI_Read(uint8_t RegisterAddress) { pMotCmd_t pMotCmd = (pMotCmd_t) MotSpiTxBuf; pMotCmd->deviceadr = (0x80|RegisterAddress); pMotCmd->cmd1 = 0Xff; pMotCmd->cmd2 = 0xff; MotSpiTran.count = 3; MOTSPI_SHIFT(MotSpiTran); memset(MotSpiTxBuf, 0, MotSpiTran.count); BSpiCurrentStat = MOTSPI_READ_STAT; Task_sleep(30000); } /* ******************************************************************************* FUNCTION ******************************************************************************* */ void FXLS8962_Init(void) { hMotIntPin = PIN_open(&MotPinState,MotIntOutTable); if (NULL == hMotIntPin) { while (1); } Task_sleep(30000); MotSpiInit(); MotWKUP_MotSPI(); /* Put NewStein in Standby Mode and put motion sensor to default sensitivity */ FXLS8962_SPI_Write(NewStein_SENS_CONFIG1,0b00000010); /* Adjust Output Datarate for motion detection to f=6.25Hz, t=160ms */ FXLS8962_SPI_Write(NewStein_SENS_CONFIG3,0b10110000); /* Put NewStein in Active Mode */ FXLS8962_SPI_Write(NewStein_SENS_CONFIG1,0b00000011); PIN_close(hMotIntPin); Task_sleep(30000); }