Loading...
Searching...
No Matches
mma8x5x_regs.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2014 PHYTEC Messtechnik GmbH
3 * SPDX-FileCopyrightText: 2016 Freie Universität Berlin
4 * SPDX-License-Identifier: LGPL-2.1-only
5 */
6
7#pragma once
8
20
21#ifdef __cplusplus
22extern "C"
23{
24#endif
25
30#define MMA8X5X_STATUS 0x00
31#define MMA8X5X_OUT_X_MSB 0x01
32#define MMA8X5X_OUT_X_LSB 0x02
33#define MMA8X5X_OUT_Y_MSB 0x03
34#define MMA8X5X_OUT_Y_LSB 0x04
35#define MMA8X5X_OUT_Z_MSB 0x05
36#define MMA8X5X_OUT_Z_LSB 0x06
37#define MMA8X5X_F_SETUP 0x09
38#define MMA8X5X_TRIG_CFG 0x0A
39#define MMA8X5X_SYSMOD 0x0B
40#define MMA8X5X_INT_SOURCE 0x0C
41#define MMA8X5X_WHO_AM_I 0x0D
42#define MMA8X5X_XYZ_DATA_CFG 0x0E
43#define MMA8X5X_HP_FILTER_CUTOFF 0x0F
44#define MMA8X5X_PL_STATUS 0x10
45#define MMA8X5X_PL_CFG 0x11
46#define MMA8X5X_PL_COUNT 0x12
47#define MMA8X5X_PL_BF_ZCOMP 0x13
48#define MMA8X5X_P_L_THS_REG 0x14
49#define MMA8X5X_FF_MT_CFG 0x15
50#define MMA8X5X_FF_MT_SRC 0x16
51#define MMA8X5X_FF_MT_THS 0x17
52#define MMA8X5X_FF_MT_COUNT 0x18
53#define MMA8X5X_TRANSIENT_CFG 0x1D
54#define MMA8X5X_TRANSIENT_SRC 0x1E
55#define MMA8X5X_TRANSIENT_THS 0x1F
56#define MMA8X5X_TRANSIENT_COUNT 0x20
57#define MMA8X5X_PULSE_CFG 0x21
58#define MMA8X5X_PULSE_SRC 0x22
59#define MMA8X5X_PULSE_THSX 0x23
60#define MMA8X5X_PULSE_THSY 0x24
61#define MMA8X5X_PULSE_THSZ 0x25
62#define MMA8X5X_PULSE_TMLT 0x26
63#define MMA8X5X_PULSE_LTCY 0x27
64#define MMA8X5X_PULSE_WIND 0x28
65#define MMA8X5X_ASLP_COUNT 0x29
66#define MMA8X5X_CTRL_REG1 0x2A
67#define MMA8X5X_CTRL_REG2 0x2B
68#define MMA8X5X_CTRL_REG3 0x2C
69#define MMA8X5X_CTRL_REG4 0x2D
70#define MMA8X5X_CTRL_REG5 0x2E
71#define MMA8X5X_OFF_X 0x2F
72#define MMA8X5X_OFF_Y 0x30
73#define MMA8X5X_OFF_Z 0x31
75
80#define MMA8X5X_STATUS_XDR (1 << 0)
81#define MMA8X5X_STATUS_YDR (1 << 1)
82#define MMA8X5X_STATUS_ZDR (1 << 2)
83#define MMA8X5X_STATUS_ZYXDR (1 << 3)
84#define MMA8X5X_STATUS_XOW (1 << 4)
85#define MMA8X5X_STATUS_YOW (1 << 5)
86#define MMA8X5X_STATUS_ZOW (1 << 6)
87#define MMA8X5X_STATUS_ZYXOW (1 << 7)
88
89#define MMA8X5X_F_STATUS_F_CNT_MASK 0x3F
90#define MMA8X5X_F_STATUS_F_WMRK_FLAG (1 << 6)
91#define MMA8X5X_F_STATUS_F_OVF (1 << 7)
92
93#define MMA8X5X_F_SETUP_MODE_MASK 0xC0
94#define MMA8X5X_F_SETUP_MODE_DISABLED 0
95#define MMA8X5X_F_SETUP_MODE_CIRCULAR 1
96#define MMA8X5X_F_SETUP_MODE_STOP 2
97#define MMA8X5X_F_SETUP_MODE_TRIGGER 3
98#define MMA8X5X_F_SETUP_F_WMRK_MASK 0x3F
99
100#define MMA8X5X_TRIG_CFG_FF_MT (1 << 2)
101#define MMA8X5X_TRIG_CFG_PULSE (1 << 3)
102#define MMA8X5X_TRIG_CFG_LNDPRT (1 << 4)
103#define MMA8X5X_TRIG_CFG_TRANS (1 << 5)
104
105#define MMA8X5X_SYSMOD_MASK 0x3
106#define MMA8X5X_SYSMOD_STANDBY 0
107#define MMA8X5X_SYSMOD_WAKE 1
108#define MMA8X5X_SYSMOD_SLEEP 2
109#define MMA8X5X_SYSMOD_FGT_MASK 0x7C
110#define MMA8X5X_SYSMOD_FGERR (1 << 7)
111
112#define MMA8X5X_INT_SOURCE_DRDY (1 << 0)
113#define MMA8X5X_INT_SOURCE_FF_MT (1 << 2)
114#define MMA8X5X_INT_SOURCE_PULSE (1 << 3)
115#define MMA8X5X_INT_SOURCE_LNDPRT (1 << 4)
116#define MMA8X5X_INT_SOURCE_TRANS (1 << 5)
117#define MMA8X5X_INT_SOURCE_FIFO (1 << 6)
118#define MMA8X5X_INT_SOURCE_ASLP (1 << 7)
119
120#define MMA8X5X_XYZ_DATA_CFG_FS_MASK 0x3
121#define MMA8X5X_XYZ_DATA_CFG_HPF_OUT (1 << 4)
122
123#define MMA8X5X_HP_FILTER_SEL_MASK 0x03
124#define MMA8X5X_HP_FILTER_LPF_EN (1 << 4)
125#define MMA8X5X_HP_FILTER_HPF_BYP (1 << 5)
126
127#define MMA8X5X_PL_STATUS_BAFRO (1 << 0)
128#define MMA8X5X_PL_STATUS_LAPO_MASK 0x6
129#define MMA8X5X_PL_STATUS_LAPO_P_UP 0
130#define MMA8X5X_PL_STATUS_LAPO_P_DOWN 1
131#define MMA8X5X_PL_STATUS_LAPO_L_RIGHT 2
132#define MMA8X5X_PL_STATUS_LAPO_L_LEFT 3
133#define MMA8X5X_PL_STATUS_LO (1 << 6)
134#define MMA8X5X_PL_STATUS_NEWLP (1 << 7)
135
136#define MMA8X5X_PL_CFG_PL_EN (1 << 6)
137#define MMA8X5X_PL_CFG_DBCNTM (1 << 7)
138
139#define MMA8X5X_PL_BF_ZCOMP_ZLOCK_MASK 0x07
140#define MMA8X5X_PL_BF_ZCOMP_BKFR_MASK 0xC0
141
142#define MMA8X5X_P_L_HYS_MASK 0x07
143#define MMA8X5X_P_L_THS_MASK 0xF8
144
145#define MMA8X5X_FF_MT_CFG_XEFE (1 << 3)
146#define MMA8X5X_FF_MT_CFG_YEFE (1 << 4)
147#define MMA8X5X_FF_MT_CFG_ZEFE (1 << 5)
148#define MMA8X5X_FF_MT_CFG_OAE (1 << 6)
149#define MMA8X5X_FF_MT_CFG_ELE (1 << 7)
150
151#define MMA8X5X_FF_MT_SRC_XHP (1 << 0)
152#define MMA8X5X_FF_MT_SRC_XHE (1 << 1)
153#define MMA8X5X_FF_MT_SRC_YHP (1 << 2)
154#define MMA8X5X_FF_MT_SRC_YHE (1 << 3)
155#define MMA8X5X_FF_MT_SRC_ZHP (1 << 4)
156#define MMA8X5X_FF_MT_SRC_ZHE (1 << 5)
157#define MMA8X5X_FF_MT_SRC_EA (1 << 7)
158
159#define MMA8X5X_FF_MT_THS_MASK 0x7F
160#define MMA8X5X_FF_MT_THS_DBCNTM (1 << 7)
161
162#define MMA8X5X_TRANSIENT_CFG_HPF_BYP (1 << 0)
163#define MMA8X5X_TRANSIENT_CFG_XTEFE (1 << 1)
164#define MMA8X5X_TRANSIENT_CFG_YTEFE (1 << 2)
165#define MMA8X5X_TRANSIENT_CFG_ZTEFE (1 << 3)
166#define MMA8X5X_TRANSIENT_CFG_ELE (1 << 4)
167
168#define MMA8X5X_TRANSIENT_SRC_XTPOL (1 << 0)
169#define MMA8X5X_TRANSIENT_SRC_XTEVENT (1 << 1)
170#define MMA8X5X_TRANSIENT_SRC_YTPOL (1 << 2)
171#define MMA8X5X_TRANSIENT_SRC_YTEVENT (1 << 3)
172#define MMA8X5X_TRANSIENT_SRC_ZTPOL (1 << 4)
173#define MMA8X5X_TRANSIENT_SRC_ZTEVENT (1 << 5)
174#define MMA8X5X_TRANSIENT_SRC_EA (1 << 6)
175
176#define MMA8X5X_TRANSIENT_THS_MASK 0x7F
177#define MMA8X5X_TRANSIENT_THS_DBCNTM (1<< 7)
178
179#define MMA8X5X_PULSE_CFG_XSPEFE (1 << 0)
180#define MMA8X5X_PULSE_CFG_XDPEFE (1 << 1)
181#define MMA8X5X_PULSE_CFG_YSPEFE (1 << 2)
182#define MMA8X5X_PULSE_CFG_YDPEFE (1 << 3)
183#define MMA8X5X_PULSE_CFG_ZSPEFE (1 << 4)
184#define MMA8X5X_PULSE_CFG_ZDPEFE (1 << 5)
185#define MMA8X5X_PULSE_CFG_ELE (1 << 6)
186#define MMA8X5X_PULSE_CFG_DPA (1 << 7)
187
188#define MMA8X5X_PULSE_SRC_POLX (1 << 0)
189#define MMA8X5X_PULSE_SRC_POLY (1 << 1)
190#define MMA8X5X_PULSE_SRC_POLZ (1 << 2)
191#define MMA8X5X_PULSE_SRC_DPE (1 << 3)
192#define MMA8X5X_PULSE_SRC_AXX (1 << 4)
193#define MMA8X5X_PULSE_SRC_AXY (1 << 5)
194#define MMA8X5X_PULSE_SRC_AXZ (1 << 6)
195#define MMA8X5X_PULSE_SRC_EA (1 << 7)
196
197#define MMA8X5X_PULSE_THSX_MASK 0x7F
198#define MMA8X5X_PULSE_THSY_MASK 0x7F
199#define MMA8X5X_PULSE_THSZ_MASK 0x7F
200
201#define MMA8X5X_CTRL_REG1_ACTIVE (1 << 0)
202#define MMA8X5X_CTRL_REG1_F_READ (1 << 1)
203#define MMA8X5X_CTRL_REG1_DR_MASK 0x38
204#define MMA8X5X_CTRL_REG1_DR_SHIFT 3
205#define MMA8X5X_CTRL_REG1_DR(x) (((uint8_t)(((uint8_t)(x))<<MMA8X5X_CTRL_REG1_DR_SHIFT))\
206 &MMA8X5X_CTRL_REG1_DR_MASK)
207#define MMA8X5X_CTRL_REG1_ASR_MASK 0xC0
208#define MMA8X5X_CTRL_REG1_ASR_50HZ 0
209#define MMA8X5X_CTRL_REG1_ASR_12HZ5 1
210#define MMA8X5X_CTRL_REG1_ASR_6HZ25 2
211#define MMA8X5X_CTRL_REG1_ASR_1HZ56 3
212
213#define MMA8X5X_CTRL_REG2_MODS_MASK 0x3
214#define MMA8X5X_CTRL_REG2_MODS_NORMAL 0
215#define MMA8X5X_CTRL_REG2_MODS_LNLP 1
216#define MMA8X5X_CTRL_REG2_MODS_HR 2
217#define MMA8X5X_CTRL_REG2_MODS_LP 3
218#define MMA8X5X_CTRL_REG2_SLPE (1 << 2)
219#define MMA8X5X_CTRL_REG2_SMODS_MASK 0x18
220#define MMA8X5X_CTRL_REG2_SMODS_NORMAL 0
221#define MMA8X5X_CTRL_REG2_SMODS_LNLP 1
222#define MMA8X5X_CTRL_REG2_SMODS_HR 2
223#define MMA8X5X_CTRL_REG2_SMODS_LP 3
224#define MMA8X5X_CTRL_REG2_RST (1 << 6)
225#define MMA8X5X_CTRL_REG2_ST (1 << 7)
226
227#define MMA8X5X_CTRL_REG3_PP_OD (1 << 0)
228#define MMA8X5X_CTRL_REG3_IPOL (1 << 1)
229#define MMA8X5X_CTRL_REG3_WAKE_FF_MT (1 << 3)
230#define MMA8X5X_CTRL_REG3_WAKE_PULSE (1 << 4)
231#define MMA8X5X_CTRL_REG3_WAKE_LNDPRT (1 << 5)
232#define MMA8X5X_CTRL_REG3_WAKE_TRANS (1 << 6)
233#define MMA8X5X_CTRL_REG3_FIFO_GATE (1 << 7)
234
235#define MMA8X5X_CTRL_REG4_INT_EN_DRDY (1 << 0)
236#define MMA8X5X_CTRL_REG4_INT_EN_FF_MT (1 << 2)
237#define MMA8X5X_CTRL_REG4_INT_EN_PULSE (1 << 3)
238#define MMA8X5X_CTRL_REG4_INT_EN_LNDPRT (1 << 4)
239#define MMA8X5X_CTRL_REG4_INT_EN_TRANS (1 << 5)
240#define MMA8X5X_CTRL_REG4_INT_EN_FIFO (1 << 6)
241#define MMA8X5X_CTRL_REG4_INT_EN_ASLP (1 << 7)
242
243#define MMA8X5X_CTRL_REG5_INT_CFG_DRDY (1 << 0)
244#define MMA8X5X_CTRL_REG5_INT_CFG_FF_MT (1 << 2)
245#define MMA8X5X_CTRL_REG5_INT_CFG_PULSE (1 << 3)
246#define MMA8X5X_CTRL_REG5_INT_CFG_LNDPRT (1 << 4)
247#define MMA8X5X_CTRL_REG5_INT_CFG_TRANS (1 << 5)
248#define MMA8X5X_CTRL_REG5_INT_CFG_FIFO (1 << 6)
249#define MMA8X5X_CTRL_REG5_INT_CFG_ASLP (1 << 7)
251
252#ifdef __cplusplus
253}
254#endif
255