14#ifndef DRIVER_FXAS21002_H_
15#define DRIVER_FXAS21002_H_
26 FXAS21002_STATUS = 0x00,
27 FXAS21002_OUT_X_MSB = 0x01,
28 FXAS21002_OUT_X_LSB = 0x02,
29 FXAS21002_OUT_Y_MSB = 0x03,
30 FXAS21002_OUT_Y_LSB = 0x04,
31 FXAS21002_OUT_Z_MSB = 0x05,
32 FXAS21002_OUT_Z_LSB = 0x06,
33 FXAS21002_DR_STATUS = 0x07,
34 FXAS21002_F_STATUS = 0x08,
35 FXAS21002_F_SETUP = 0x09,
36 FXAS21002_F_EVENT = 0x0A,
37 FXAS21002_INT_SRC_FLAG = 0x0B,
38 FXAS21002_WHO_AM_I = 0x0C,
39 FXAS21002_CTRL_REG0 = 0x0D,
40 FXAS21002_RT_CFG = 0x0E,
41 FXAS21002_RT_SRC = 0x0F,
42 FXAS21002_RT_THS = 0x10,
43 FXAS21002_RT_COUNT = 0x11,
44 FXAS21002_TEMP = 0x12,
45 FXAS21002_CTRL_REG1 = 0x13,
46 FXAS21002_CTRL_REG2 = 0x14,
47 FXAS21002_CTRL_REG3 = 0x15,
57typedef uint8_t FXAS21002_STATUS_t;
67typedef uint8_t FXAS21002_OUT_X_MSB_t;
76typedef uint8_t FXAS21002_OUT_X_LSB_t;
86typedef uint8_t FXAS21002_OUT_Y_MSB_t;
95typedef uint8_t FXAS21002_OUT_Y_LSB_t;
105typedef uint8_t FXAS21002_OUT_Z_MSB_t;
114typedef uint8_t FXAS21002_OUT_Z_LSB_t;
150#define FXAS21002_DR_STATUS_XDR_MASK ((uint8_t) 0x01)
151#define FXAS21002_DR_STATUS_XDR_SHIFT ((uint8_t) 0)
153#define FXAS21002_DR_STATUS_YDR_MASK ((uint8_t) 0x02)
154#define FXAS21002_DR_STATUS_YDR_SHIFT ((uint8_t) 1)
156#define FXAS21002_DR_STATUS_ZDR_MASK ((uint8_t) 0x04)
157#define FXAS21002_DR_STATUS_ZDR_SHIFT ((uint8_t) 2)
159#define FXAS21002_DR_STATUS_ZYXDR_MASK ((uint8_t) 0x08)
160#define FXAS21002_DR_STATUS_ZYXDR_SHIFT ((uint8_t) 3)
162#define FXAS21002_DR_STATUS_XOW_MASK ((uint8_t) 0x10)
163#define FXAS21002_DR_STATUS_XOW_SHIFT ((uint8_t) 4)
165#define FXAS21002_DR_STATUS_YOW_MASK ((uint8_t) 0x20)
166#define FXAS21002_DR_STATUS_YOW_SHIFT ((uint8_t) 5)
168#define FXAS21002_DR_STATUS_ZOW_MASK ((uint8_t) 0x40)
169#define FXAS21002_DR_STATUS_ZOW_SHIFT ((uint8_t) 6)
171#define FXAS21002_DR_STATUS_ZYXOW_MASK ((uint8_t) 0x80)
172#define FXAS21002_DR_STATUS_ZYXOW_SHIFT ((uint8_t) 7)
178#define FXAS21002_DR_STATUS_XDR_DRDY ((uint8_t) 0x01)
181#define FXAS21002_DR_STATUS_YDR_DRDY ((uint8_t) 0x02)
184#define FXAS21002_DR_STATUS_ZDR_DRDY ((uint8_t) 0x04)
187#define FXAS21002_DR_STATUS_ZYXDR_DRDY ((uint8_t) 0x08)
189#define FXAS21002_DR_STATUS_XOW_OWR ((uint8_t) 0x10)
192#define FXAS21002_DR_STATUS_YOW_OWR ((uint8_t) 0x20)
195#define FXAS21002_DR_STATUS_ZOW_OWR ((uint8_t) 0x40)
198#define FXAS21002_DR_STATUS_ZYXOW_OWR ((uint8_t) 0x80)
230#define FXAS21002_F_STATUS_F_CNT_MASK ((uint8_t) 0x3F)
231#define FXAS21002_F_STATUS_F_CNT_SHIFT ((uint8_t) 0)
233#define FXAS21002_F_STATUS_F_WMKF_MASK ((uint8_t) 0x40)
234#define FXAS21002_F_STATUS_F_WMKF_SHIFT ((uint8_t) 6)
236#define FXAS21002_F_STATUS_F_OVF_MASK ((uint8_t) 0x80)
237#define FXAS21002_F_STATUS_F_OVF_SHIFT ((uint8_t) 7)
243#define FXAS21002_F_STATUS_F_WMKF_DETECT ((uint8_t) 0x40)
244#define FXAS21002_F_STATUS_F_OVF_DETECT ((uint8_t) 0x80)
269#define FXAS21002_F_SETUP_F_WMRK_MASK ((uint8_t) 0x3F)
270#define FXAS21002_F_SETUP_F_WMRK_SHIFT ((uint8_t) 0)
272#define FXAS21002_F_SETUP_F_MODE_MASK ((uint8_t) 0xC0)
273#define FXAS21002_F_SETUP_F_MODE_SHIFT ((uint8_t) 6)
279#define FXAS21002_F_SETUP_F_MODE_FIFO_OFF ((uint8_t) 0x00)
280#define FXAS21002_F_SETUP_F_MODE_CIR_MODE ((uint8_t) 0x40)
281#define FXAS21002_F_SETUP_F_MODE_STOP_MODE ((uint8_t) 0x80)
307#define FXAS21002_F_EVENT_FE_TIME_MASK ((uint8_t) 0x1F)
308#define FXAS21002_F_EVENT_FE_TIME_SHIFT ((uint8_t) 0)
310#define FXAS21002_F_EVENT_F_EVENT_MASK ((uint8_t) 0x20)
311#define FXAS21002_F_EVENT_F_EVENT_SHIFT ((uint8_t) 5)
317#define FXAS21002_F_EVENT_F_EVENT_DETECTED ((uint8_t) 0x20)
330 uint8_t src_drdy : 1;
334 uint8_t src_fifo : 1;
346#define FXAS21002_INT_SRC_FLAG_SRC_DRDY_MASK ((uint8_t) 0x01)
347#define FXAS21002_INT_SRC_FLAG_SRC_DRDY_SHIFT ((uint8_t) 0)
349#define FXAS21002_INT_SRC_FLAG_SRC_RT_MASK ((uint8_t) 0x02)
350#define FXAS21002_INT_SRC_FLAG_SRC_RT_SHIFT ((uint8_t) 1)
352#define FXAS21002_INT_SRC_FLAG_SRC_FIFO_MASK ((uint8_t) 0x04)
353#define FXAS21002_INT_SRC_FLAG_SRC_FIFO_SHIFT ((uint8_t) 2)
355#define FXAS21002_INT_SRC_FLAG_BOOTEND_MASK ((uint8_t) 0x08)
356#define FXAS21002_INT_SRC_FLAG_BOOTEND_SHIFT ((uint8_t) 3)
362#define FXAS21002_INT_SRC_FLAG_SRC_DRDY_READY ((uint8_t) 0x01)
364#define FXAS21002_INT_SRC_FLAG_SRC_RT_THRESH ((uint8_t) 0x02)
366#define FXAS21002_INT_SRC_FLAG_SRC_FIFO_EVENT ((uint8_t) 0x04)
368#define FXAS21002_INT_SRC_FLAG_BOOTEND_BOOT_DONE ((uint8_t) 0x08)
392#define FXAS21002_WHO_AM_I_WHOAMI_MASK ((uint8_t) 0xFF)
393#define FXAS21002_WHO_AM_I_WHOAMI_SHIFT ((uint8_t) 0)
399#define FXAS21002_WHO_AM_I_WHOAMI_OLD_VALUE ((uint8_t) 0xd1)
400#define FXAS21002_WHO_AM_I_WHOAMI_PRE_VALUE ((uint8_t) 0xd6)
401#define FXAS21002_WHO_AM_I_WHOAMI_PROD_VALUE ((uint8_t) 0xd7)
434#define FXAS21002_CTRL_REG0_FS_MASK ((uint8_t) 0x03)
435#define FXAS21002_CTRL_REG0_FS_SHIFT ((uint8_t) 0)
437#define FXAS21002_CTRL_REG0_HPF_EN_MASK ((uint8_t) 0x04)
438#define FXAS21002_CTRL_REG0_HPF_EN_SHIFT ((uint8_t) 2)
440#define FXAS21002_CTRL_REG0_SEL_MASK ((uint8_t) 0x18)
441#define FXAS21002_CTRL_REG0_SEL_SHIFT ((uint8_t) 3)
443#define FXAS21002_CTRL_REG0_SPIW_MASK ((uint8_t) 0x20)
444#define FXAS21002_CTRL_REG0_SPIW_SHIFT ((uint8_t) 5)
446#define FXAS21002_CTRL_REG0_BW_MASK ((uint8_t) 0xC0)
447#define FXAS21002_CTRL_REG0_BW_SHIFT ((uint8_t) 6)
453#define FXAS21002_CTRL_REG0_FS_DPS2000 ((uint8_t) 0x00)
455#define FXAS21002_CTRL_REG0_FS_DPS1000 ((uint8_t) 0x01)
457#define FXAS21002_CTRL_REG0_FS_DPS500 ((uint8_t) 0x02)
459#define FXAS21002_CTRL_REG0_FS_DPS250 ((uint8_t) 0x03)
461#define FXAS21002_CTRL_REG0_HPF_EN_ENABLE ((uint8_t) 0x04)
462#define FXAS21002_CTRL_REG0_HPF_EN_DISABLE ((uint8_t) 0x00)
463#define FXAS21002_CTRL_REG0_SPIW_4WIRE ((uint8_t) 0x00)
464#define FXAS21002_CTRL_REG0_SPIW_3WIRE ((uint8_t) 0x20)
494#define FXAS21002_RT_CFG_XTEFE_MASK ((uint8_t) 0x01)
495#define FXAS21002_RT_CFG_XTEFE_SHIFT ((uint8_t) 0)
497#define FXAS21002_RT_CFG_YTEFE_MASK ((uint8_t) 0x02)
498#define FXAS21002_RT_CFG_YTEFE_SHIFT ((uint8_t) 1)
500#define FXAS21002_RT_CFG_ZTEFE_MASK ((uint8_t) 0x04)
501#define FXAS21002_RT_CFG_ZTEFE_SHIFT ((uint8_t) 2)
503#define FXAS21002_RT_CFG_ELE_MASK ((uint8_t) 0x08)
504#define FXAS21002_RT_CFG_ELE_SHIFT ((uint8_t) 3)
510#define FXAS21002_RT_CFG_XTEFE_ENABLE ((uint8_t) 0x01)
511#define FXAS21002_RT_CFG_XTEFE_DISABLE ((uint8_t) 0x00)
512#define FXAS21002_RT_CFG_YTEFE_ENABLE ((uint8_t) 0x02)
513#define FXAS21002_RT_CFG_YTEFE_DISABLE ((uint8_t) 0x00)
514#define FXAS21002_RT_CFG_ZTEFE_ENABLE ((uint8_t) 0x04)
515#define FXAS21002_RT_CFG_ZTEFE_DISABLE ((uint8_t) 0x00)
516#define FXAS21002_RT_CFG_ELE_ENABLE ((uint8_t) 0x08)
517#define FXAS21002_RT_CFG_ELE_DISABLE ((uint8_t) 0x00)
530 uint8_t x_rt_pol : 1;
534 uint8_t y_rt_pol : 1;
538 uint8_t z_rt_pol : 1;
552#define FXAS21002_RT_SRC_X_RT_POL_MASK ((uint8_t) 0x01)
553#define FXAS21002_RT_SRC_X_RT_POL_SHIFT ((uint8_t) 0)
555#define FXAS21002_RT_SRC_XRT_MASK ((uint8_t) 0x02)
556#define FXAS21002_RT_SRC_XRT_SHIFT ((uint8_t) 1)
558#define FXAS21002_RT_SRC_Y_RT_POL_MASK ((uint8_t) 0x04)
559#define FXAS21002_RT_SRC_Y_RT_POL_SHIFT ((uint8_t) 2)
561#define FXAS21002_RT_SRC_YRT_MASK ((uint8_t) 0x08)
562#define FXAS21002_RT_SRC_YRT_SHIFT ((uint8_t) 3)
564#define FXAS21002_RT_SRC_Z_RT_POL_MASK ((uint8_t) 0x10)
565#define FXAS21002_RT_SRC_Z_RT_POL_SHIFT ((uint8_t) 4)
567#define FXAS21002_RT_SRC_ZRT_MASK ((uint8_t) 0x20)
568#define FXAS21002_RT_SRC_ZRT_SHIFT ((uint8_t) 5)
570#define FXAS21002_RT_SRC_EA_MASK ((uint8_t) 0x40)
571#define FXAS21002_RT_SRC_EA_SHIFT ((uint8_t) 6)
577#define FXAS21002_RT_SRC_X_RT_POL_POS ((uint8_t) 0x00)
578#define FXAS21002_RT_SRC_X_RT_POL_NEG ((uint8_t) 0x01)
579#define FXAS21002_RT_SRC_XRT_LOWER ((uint8_t) 0x00)
580#define FXAS21002_RT_SRC_XRT_GREATER ((uint8_t) 0x02)
581#define FXAS21002_RT_SRC_Y_RT_POL_POS ((uint8_t) 0x00)
582#define FXAS21002_RT_SRC_Y_RT_POL_NEG ((uint8_t) 0x04)
583#define FXAS21002_RT_SRC_YRT_LOWER ((uint8_t) 0x00)
584#define FXAS21002_RT_SRC_YRT_GREATER ((uint8_t) 0x08)
585#define FXAS21002_RT_SRC_Z_RT_POL_POS ((uint8_t) 0x00)
586#define FXAS21002_RT_SRC_Z_RT_POL_NEG ((uint8_t) 0x10)
587#define FXAS21002_RT_SRC_ZRT_LOWER ((uint8_t) 0x00)
588#define FXAS21002_RT_SRC_ZRT_GREATER ((uint8_t) 0x20)
589#define FXAS21002_RT_SRC_EA_NOEVENT ((uint8_t) 0x00)
590#define FXAS21002_RT_SRC_EA_EVENT ((uint8_t) 0x40)
618#define FXAS21002_RT_THS_THS_MASK ((uint8_t) 0x7F)
619#define FXAS21002_RT_THS_THS_SHIFT ((uint8_t) 0)
621#define FXAS21002_RT_THS_DBCNTM_MASK ((uint8_t) 0x80)
622#define FXAS21002_RT_THS_DBCNTM_SHIFT ((uint8_t) 7)
628#define FXAS21002_RT_THS_DBCNTM_CLEAR ((uint8_t) 0x80)
630#define FXAS21002_RT_THS_DBCNTM_DECREMENT ((uint8_t) 0x00)
642typedef uint8_t FXAS21002_RT_COUNT_t;
652typedef uint8_t FXAS21002_TEMP_t;
680#define FXAS21002_CTRL_REG1_MODE_MASK ((uint8_t) 0x03)
681#define FXAS21002_CTRL_REG1_MODE_SHIFT ((uint8_t) 0)
683#define FXAS21002_CTRL_REG1_DR_MASK ((uint8_t) 0x1C)
684#define FXAS21002_CTRL_REG1_DR_SHIFT ((uint8_t) 2)
686#define FXAS21002_CTRL_REG1_ST_MASK ((uint8_t) 0x20)
687#define FXAS21002_CTRL_REG1_ST_SHIFT ((uint8_t) 5)
689#define FXAS21002_CTRL_REG1_RST_MASK ((uint8_t) 0x40)
690#define FXAS21002_CTRL_REG1_RST_SHIFT ((uint8_t) 6)
696#define FXAS21002_CTRL_REG1_MODE_STANDBY ((uint8_t) 0x00)
698#define FXAS21002_CTRL_REG1_MODE_READY ((uint8_t) 0x01)
701#define FXAS21002_CTRL_REG1_MODE_ACTIVE ((uint8_t) 0x02)
703#define FXAS21002_CTRL_REG1_DR_800HZ ((uint8_t) 0x00)
704#define FXAS21002_CTRL_REG1_DR_400HZ ((uint8_t) 0x04)
705#define FXAS21002_CTRL_REG1_DR_200HZ ((uint8_t) 0x08)
706#define FXAS21002_CTRL_REG1_DR_100HZ ((uint8_t) 0x0c)
707#define FXAS21002_CTRL_REG1_DR_50HZ ((uint8_t) 0x10)
708#define FXAS21002_CTRL_REG1_DR_25HZ ((uint8_t) 0x14)
709#define FXAS21002_CTRL_REG1_DR_12_5HZ ((uint8_t) 0x18)
710#define FXAS21002_CTRL_REG1_ST_ENABLE ((uint8_t) 0x20)
711#define FXAS21002_CTRL_REG1_ST_DISABLE ((uint8_t) 0x00)
712#define FXAS21002_CTRL_REG1_RST_TRIGGER ((uint8_t) 0x40)
713#define FXAS21002_CTRL_REG1_RST_NOTTRIGGERED ((uint8_t) 0x00)
730 uint8_t int_en_drdy : 1;
732 uint8_t int_cfg_drdy : 1;
734 uint8_t int_en_rt : 1;
736 uint8_t int_cfg_rt : 1;
738 uint8_t int_en_fifo : 1;
740 uint8_t int_cfg_fifo : 1;
750#define FXAS21002_CTRL_REG2_PP_OD_MASK ((uint8_t) 0x01)
751#define FXAS21002_CTRL_REG2_PP_OD_SHIFT ((uint8_t) 0)
753#define FXAS21002_CTRL_REG2_IPOL_MASK ((uint8_t) 0x02)
754#define FXAS21002_CTRL_REG2_IPOL_SHIFT ((uint8_t) 1)
756#define FXAS21002_CTRL_REG2_INT_EN_DRDY_MASK ((uint8_t) 0x04)
757#define FXAS21002_CTRL_REG2_INT_EN_DRDY_SHIFT ((uint8_t) 2)
759#define FXAS21002_CTRL_REG2_INT_CFG_DRDY_MASK ((uint8_t) 0x08)
760#define FXAS21002_CTRL_REG2_INT_CFG_DRDY_SHIFT ((uint8_t) 3)
762#define FXAS21002_CTRL_REG2_INT_EN_RT_MASK ((uint8_t) 0x10)
763#define FXAS21002_CTRL_REG2_INT_EN_RT_SHIFT ((uint8_t) 4)
765#define FXAS21002_CTRL_REG2_INT_CFG_RT_MASK ((uint8_t) 0x20)
766#define FXAS21002_CTRL_REG2_INT_CFG_RT_SHIFT ((uint8_t) 5)
768#define FXAS21002_CTRL_REG2_INT_EN_FIFO_MASK ((uint8_t) 0x40)
769#define FXAS21002_CTRL_REG2_INT_EN_FIFO_SHIFT ((uint8_t) 6)
771#define FXAS21002_CTRL_REG2_INT_CFG_FIFO_MASK ((uint8_t) 0x80)
772#define FXAS21002_CTRL_REG2_INT_CFG_FIFO_SHIFT ((uint8_t) 7)
778#define FXAS21002_CTRL_REG2_PP_OD_PUSHPULL ((uint8_t) 0x00)
779#define FXAS21002_CTRL_REG2_PP_OD_OPENDRAIN ((uint8_t) 0x01)
780#define FXAS21002_CTRL_REG2_IPOL_ACTIVE_LOW ((uint8_t) 0x00)
781#define FXAS21002_CTRL_REG2_IPOL_ACTIVE_HIGH ((uint8_t) 0x02)
782#define FXAS21002_CTRL_REG2_INT_EN_DRDY_ENABLE ((uint8_t) 0x04)
783#define FXAS21002_CTRL_REG2_INT_EN_DRDY_DISABLE ((uint8_t) 0x00)
784#define FXAS21002_CTRL_REG2_INT_CFG_DRDY_INT2 ((uint8_t) 0x00)
785#define FXAS21002_CTRL_REG2_INT_CFG_DRDY_INT1 ((uint8_t) 0x08)
786#define FXAS21002_CTRL_REG2_INT_EN_RT_ENABLE ((uint8_t) 0x10)
787#define FXAS21002_CTRL_REG2_INT_EN_RT_DISABLE ((uint8_t) 0x00)
788#define FXAS21002_CTRL_REG2_INT_CFG_RT_INT2 ((uint8_t) 0x00)
789#define FXAS21002_CTRL_REG2_INT_CFG_RT_INT1 ((uint8_t) 0x20)
790#define FXAS21002_CTRL_REG2_INT_EN_FIFO_ENABLE ((uint8_t) 0x40)
791#define FXAS21002_CTRL_REG2_INT_EN_FIFO_DISABLE ((uint8_t) 0x00)
792#define FXAS21002_CTRL_REG2_INT_CFG_FIFO_INT2 ((uint8_t) 0x00)
793#define FXAS21002_CTRL_REG2_INT_CFG_FIFO_INT1 ((uint8_t) 0x80)
806 uint8_t fs_double : 1;
809 uint8_t _reserved_ : 1;
810 uint8_t extctrlen : 1;
812 uint8_t wraptoone : 1;
822#define FXAS21002_CTRL_REG3_FS_DOUBLE_MASK ((uint8_t) 0x01)
823#define FXAS21002_CTRL_REG3_FS_DOUBLE_SHIFT ((uint8_t) 0)
825#define FXAS21002_CTRL_REG3_EXTCTRLEN_MASK ((uint8_t) 0x04)
826#define FXAS21002_CTRL_REG3_EXTCTRLEN_SHIFT ((uint8_t) 2)
828#define FXAS21002_CTRL_REG3_WRAPTOONE_MASK ((uint8_t) 0x08)
829#define FXAS21002_CTRL_REG3_WRAPTOONE_SHIFT ((uint8_t) 3)
835#define FXAS21002_CTRL_REG3_FS_DOUBLE_ENABLE ((uint8_t) 0x01)
837#define FXAS21002_CTRL_REG3_FS_DOUBLE_DISABLE ((uint8_t) 0x00)
840#define FXAS21002_CTRL_REG3_EXTCTRLEN_INT2 ((uint8_t) 0x00)
842#define FXAS21002_CTRL_REG3_EXTCTRLEN_POWER_CONTROL ((uint8_t) 0x04)
844#define FXAS21002_CTRL_REG3_WRAPTOONE_ROLL_STATUS ((uint8_t) 0x00)
847#define FXAS21002_CTRL_REG3_WRAPTOONE_ROLL_DATA ((uint8_t) 0x08)