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