#ifndef __LIS3DH_H__ #define __LIS3DH_H__ typedef enum { STATUS_REG_AUX = 0x07, OUT_ADC1_L = 0x08, OUT_ADC1_H = 0x09, OUT_ADC2_L = 0x0A, OUT_ADC2_H = 0x0B, OUT_ADC3_L = 0x0C, OUT_ADC3_H = 0x0D, INT_COUNTER_REG = 0x0E, WHO_AM_I = 0x0F, TEMP_CFG_REG = 0x1F, CTRL_REG1 = 0x20, CTRL_REG2 = 0x21, CTRL_REG3 = 0x22, CTRL_REG4 = 0x23, CTRL_REG5 = 0x24, CTRL_REG6 = 0x25, REFERENCE = 0x26, STATUS_REG = 0x27, OUT_X_L = 0x28, OUT_X_H = 0x29, OUT_Y_L = 0x2A, OUT_Y_H = 0x2B, OUT_Z_L = 0x2C, OUT_Z_H = 0x2D, FIFO_CTRL_REG = 0x2E, FIFO_SRC_REG = 0x2F, INT1_CFG = 0x30, INT1_SRC = 0x31, INT1_THS = 0x32, INT1_DURATION = 0x33, CLICK_CFG = 0x38, CLICK_SRC = 0x39, CLICK_THS = 0x3A, TIME_LIMIT = 0x3B, TIME_LATENCY = 0x3C, TIME_WINDOW = 0x3D }LIS3DH_Registers; typedef struct { u8 Xen :1; u8 Yen :1; u8 Zen :1; u8 LPen :1; u8 ODR :4; }TypeDef_CTRL_REG1; typedef struct { u8 HPIS1 :1; u8 HPIS2 :1; u8 HPCLICK :1; u8 FDS :1; u8 HPCF :2; u8 HPM :2; }TypeDef_CTRL_REG2; typedef struct { u8 reserved :1; u8 I1_OVERRUN :1; u8 I1_WTM :1; u8 I1_DRDY2 :1; u8 I1_DRDY1 :1; u8 I1_AOI2 :1; u8 I1_AOI1 :1; u8 I1_CLICK :1; }TypeDef_CTRL_REG3; typedef struct { u8 SIM :1; u8 ST :2; u8 HR :1; u8 FS :2; u8 BLE :1; u8 BDU :1; }TypeDef_CTRL_REG4; typedef struct { u8 null :2; u8 D4D_INT1 :1; u8 LIR_INT1 :1; u8 reserved :2; u8 FIFO_EN :1; u8 BOOT :1; }TypeDef_CTRL_REG5; typedef struct { u8 reserved :1; u8 HL_ACTIVE :1; u8 reserved2 :1; u8 null :1; u8 BOOT_I1 :1; u8 null2 :1; u8 I2_INT1 :1; u8 I2_CLKen :1; }TypeDef_CTRL_REG6; typedef struct { u8 XDA :1; u8 YDA :1; u8 ZDA :1; u8 ZYXDA :1; u8 XOR :1; u8 YOR :1; u8 ZOR :1; u8 ZYXOR :1; }TypeDef_STATUS_REG; typedef struct { u8 FTH :5; u8 TR :1; u8 FM :2; }TypeDef_FIFO_CTRL_REG; typedef enum { Bypass = 0, FIFO = 1, Stream = 2, Stream_to_FIFO = 3 }TypeDef_FIFO_MODES; typedef struct { u8 FSS :5; u8 EMPTY :1; u8 OVRN_FIFO :1; u8 WTM :1; }TypeDef_FIFO_SRC_REG; typedef struct { u8 XLIE_XDOWNE :1; u8 XHIE_XUPE :1; u8 YLIE_YDOWDE :1; u8 YHIE_YUPE :1; u8 ZLIE_ZDOWNE :1; u8 ZHIE_ZUPE :1; u8 _6D :1; u8 AOI :1; }TypeDef_INT1_CFG; typedef struct { u8 XL :1; u8 XH :1; u8 YL :1; u8 YH :1; u8 ZL :1; u8 ZH :1; u8 IA :1; u8 null :1; }TypeDef_INT1_SRC; typedef struct { u8 XS :1; u8 XD :1; u8 YS :1; u8 YD :1; u8 ZS :1; u8 ZD :1; u8 reserve :2; }TypeDef_CLICK_CFG; typedef struct { u8 X :1; u8 Y :1; u8 Z :1; u8 Sign :1; u8 SCLICK :1; u8 DCLICK :1; u8 IA :1; u8 reserve :1; }TypeDef_CLICK_SRC; #define SAMPLE_LENGTH 5 #define LAST_SAMPLE 0x05 #define NEXT_SAMPLE 0x0A #define NO_SAMPLES 0x09 #define FIFO_OVERFLOW 0x06 void LIS3DH_Init(void); //u8 LIS3DH_GetId(void); u8 LIS3DH_GetFirstFIFOData(volatile u8 *pcnt); u8 LIS3DH_GetNextFIFOData(void); u8 LIS3DH_GetFIFODataEnd(void); void LIS3DH_Start(void); void LIS3DH_Stop(void); u16 LIS3DH_crc16(u16 data); void LIS3DH_FillFifo(void); //void LIS3DH_ProcFIFO(void); #endif