Smart Remote 3 nRF52 v1.2
 All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
drv_acc_bma222e.h
1 /*$$$LICENCE_NORDIC_STANDARD<2016>$$$*/
2 
12 #ifndef __DRV_ACC_BMA222E_H__
13 #define __DRV_ACC_BMA222E_H__
14 
15 //-----------------------------------------------------------------------------
16 // Register map
17 //-----------------------------------------------------------------------------
18 #define BMA222E_BGW_CHIPID (0x00)
19 #define BMA222E_PMU_RANGE (0x0F)
20 #define BMA222E_PMU_BW (0x10)
21 #define BMA222E_PMU_LPW (0x11)
22 #define BMA222E_PMU_LOW_POWER (0x12)
23 #define BMA222E_ACCD_HBW (0x13)
24 #define BMA222E_BGW_SOFTRESET (0x14)
25 #define BMA222E_INT_EN_0 (0x16)
26 #define BMA222E_INT_EN_1 (0x17)
27 #define BMA222E_INT_EN_2 (0x18)
28 #define BMA222E_INT_MAP_0 (0x19)
29 #define BMA222E_INT_MAP_1 (0x1A)
30 #define BMA222E_INT_MAP_2 (0x1B)
31 #define BMA222E_INT_SRC (0x1E)
32 #define BMA222E_INT_OUT_CTRL (0x20)
33 #define BMA222E_INT_RST_LATCH (0x21)
34 #define BMA222E_INT_0 (0x22)
35 #define BMA222E_INT_1 (0x23)
36 #define BMA222E_INT_2 (0x24)
37 #define BMA222E_INT_3 (0x25)
38 #define BMA222E_INT_4 (0x26)
39 #define BMA222E_INT_5 (0x27)
40 #define BMA222E_INT_6 (0x28)
41 #define BMA222E_INT_7 (0x29)
42 #define BMA222E_INT_8 (0x2A)
43 #define BMA222E_INT_9 (0x2B)
44 #define BMA222E_INT_A (0x2C)
45 #define BMA222E_INT_B (0x2D)
46 #define BMA222E_INT_C (0x2E)
47 #define BMA222E_INT_D (0x2F)
48 #define BMA222E_FIFO_CONFIG_0 (0x30)
49 
50 #define BMA222E_I_AM_BMA222E (0xF8)
51 
52 /****************************/
54 /****************************/
55 #define BMA2x2_SLEEP_DURN_POS (1)
56 #define BMA2x2_SLEEP_DURN_LEN (4)
57 #define BMA2x2_SLEEP_DURN_MSK (0x1E)
58 #define BMA2x2_SLEEP_DURN_REG BMA222E_PMU_LPW
59 /****************************/
61 /****************************/
62 #define BMA2x2_MODE_CTRL_POS (5)
63 #define BMA2x2_MODE_CTRL_LEN (3)
64 #define BMA2x2_MODE_CTRL_MSK (0xE0)
65 #define BMA2x2_MODE_CTRL_REG BMA222E_PMU_LPW
66 
67 /***************************************************/
68 /* SOFT RESET VALUE */
69 /***************************************************/
70 #define BMA2x2_ENABLE_SOFT_RESET_VALUE (0xB6)
71 
72 /**********************************************/
73 /* INTERRUPT ENABLE OF SLOPE-XYZ */
74 /**********************************************/
75 #define BMA2x2_ENABLE_SLOPE_X_INTR_POS (0)
76 #define BMA2x2_ENABLE_SLOPE_X_INTR_LEN (1)
77 #define BMA2x2_ENABLE_SLOPE_X_INTR_MSK (0x01)
78 #define BMA2x2_ENABLE_SLOPE_X_INTR_REG BMA222E_INT_EN_0
79 
80 #define BMA2x2_ENABLE_SLOPE_Y_INTR_POS (1)
81 #define BMA2x2_ENABLE_SLOPE_Y_INTR_LEN (1)
82 #define BMA2x2_ENABLE_SLOPE_Y_INTR_MSK (0x02)
83 #define BMA2x2_ENABLE_SLOPE_Y_INTR_REG BMA222E_INT_EN_0
84 
85 #define BMA2x2_ENABLE_SLOPE_Z_INTR_POS (2)
86 #define BMA2x2_ENABLE_SLOPE_Z_INTR_LEN (1)
87 #define BMA2x2_ENABLE_SLOPE_Z_INTR_MSK (0x04)
88 #define BMA2x2_ENABLE_SLOPE_Z_INTR_REG BMA222E_INT_EN_0
89 
90 /**********************************************/
92 /**********************************************/
93 #define BMA2x2_ENABLE_DOUBLE_TAP_INTR_POS (4)
94 #define BMA2x2_ENABLE_DOUBLE_TAP_INTR_LEN (1)
95 #define BMA2x2_ENABLE_DOUBLE_TAP_INTR_MSK (0x10)
96 #define BMA2x2_ENABLE_DOUBLE_TAP_INTR_REG BMA222E_INT_EN_0
97 /**********************************************/
99 /**********************************************/
100 #define BMA2x2_ENABLE_SINGLE_TAP_INTR_POS (5)
101 #define BMA2x2_ENABLE_SINGLE_TAP_INTR_LEN (1)
102 #define BMA2x2_ENABLE_SINGLE_TAP_INTR_MSK (0x20)
103 #define BMA2x2_ENABLE_SINGLE_TAP_INTR_REG BMA222E_INT_EN_0
104 
105 /**********************************************/
106 /* INTERRUPT1 ENABLE OF PAD LOW_G */
107 /**********************************************/
108 #define BMA2x2_ENABLE_INTR1_PAD_LOW_G_POS (0)
109 #define BMA2x2_ENABLE_INTR1_PAD_LOW_G_LEN (1)
110 #define BMA2x2_ENABLE_INTR1_PAD_LOW_G_MSK (0x01)
111 #define BMA2x2_ENABLE_INTR1_PAD_LOW_G_REG BMA222E_INT_MAP_0
112 
113 /**********************************************/
114 /* INTERRUPT1 ENABLE OF PAD HIGH_G */
115 /**********************************************/
116 #define BMA2x2_ENABLE_INTR1_PAD_HIGH_G_POS (1)
117 #define BMA2x2_ENABLE_INTR1_PAD_HIGH_G_LEN (1)
118 #define BMA2x2_ENABLE_INTR1_PAD_HIGH_G_MSK (0x02)
119 #define BMA2x2_ENABLE_INTR1_PAD_HIGH_G_REG BMA222E_INT_MAP_0
120 /**********************************************/
121 /* INTERRUPT1 ENABLE OF PAD SLOPE */
122 /**********************************************/
123 #define BMA2x2_ENABLE_INTR1_PAD_SLOPE_POS (2)
124 #define BMA2x2_ENABLE_INTR1_PAD_SLOPE_LEN (1)
125 #define BMA2x2_ENABLE_INTR1_PAD_SLOPE_MSK (0x04)
126 #define BMA2x2_ENABLE_INTR1_PAD_SLOPE_REG BMA222E_INT_MAP_0
127 /**********************************************/
128 /* INTERRUPT1 ENABLE OF SLOW NO MOTION */
129 /**********************************************/
130 #define BMA2x2_ENABLE_INTR1_PAD_SLOW_NO_MOTION_POS (3)
131 #define BMA2x2_ENABLE_INTR1_PAD_SLOW_NO_MOTION_LEN (1)
132 #define BMA2x2_ENABLE_INTR1_PAD_SLOW_NO_MOTION_MSK (0x08)
133 #define BMA2x2_ENABLE_INTR1_PAD_SLOW_NO_MOTION_REG BMA222E_INT_MAP_0
134 /**********************************************/
135 /* INTERRUPT1 ENABLE OF PAD DOUBLE_TAP */
136 /**********************************************/
137 #define BMA2x2_ENABLE_INTR1_PAD_DOUBLE_TAP_POS (4)
138 #define BMA2x2_ENABLE_INTR1_PAD_DOUBLE_TAP_LEN (1)
139 #define BMA2x2_ENABLE_INTR1_PAD_DOUBLE_TAP_MSK (0x10)
140 #define BMA2x2_ENABLE_INTR1_PAD_DOUBLE_TAP_REG BMA222E_INT_MAP_0
141 /**********************************************/
142 /* INTERRUPT1 ENABLE OF PAD SINGLE_TAP */
143 /**********************************************/
144 #define BMA2x2_ENABLE_INTR1_PAD_SINGLE_TAP_POS (5)
145 #define BMA2x2_ENABLE_INTR1_PAD_SINGLE_TAP_LEN (1)
146 #define BMA2x2_ENABLE_INTR1_PAD_SINGLE_TAP_MSK (0x20)
147 #define BMA2x2_ENABLE_INTR1_PAD_SINGLE_TAP_REG BMA222E_INT_MAP_0
148 /**********************************************/
149 /* INTERRUPT1 ENABLE OF PAD ORIENT */
150 /**********************************************/
151 #define BMA2x2_ENABLE_INTR1_PAD_ORIENT_POS (6)
152 #define BMA2x2_ENABLE_INTR1_PAD_ORIENT_LEN (1)
153 #define BMA2x2_ENABLE_INTR1_PAD_ORIENT_MSK (0x40)
154 #define BMA2x2_ENABLE_INTR1_PAD_ORIENT_REG BMA222E_INT_MAP_0
155 /**********************************************/
156 /* INTERRUPT1 ENABLE OF PAD FLAT */
157 /**********************************************/
158 #define BMA2x2_ENABLE_INTR1_PAD_FLAT_POS (7)
159 #define BMA2x2_ENABLE_INTR1_PAD_FLAT_LEN (1)
160 #define BMA2x2_ENABLE_INTR1_PAD_FLAT_MSK (0x80)
161 #define BMA2x2_ENABLE_INTR1_PAD_FLAT_REG BMA222E_INT_MAP_0
162 
163 /**********************************************/
164 /* INTERRUPT SOURCE SELECTION OF LOW_G */
165 /**********************************************/
166 #define BMA2x2_UNFILT_INTR_SOURCE_LOW_G_POS (0)
167 #define BMA2x2_UNFILT_INTR_SOURCE_LOW_G_LEN (1)
168 #define BMA2x2_UNFILT_INTR_SOURCE_LOW_G_MSK (0x01)
169 #define BMA2x2_UNFILT_INTR_SOURCE_LOW_G_REG BMA222E_INT_SRC
170 /**********************************************/
171 /* INTERRUPT SOURCE SELECTION OF HIGH_G */
172 /**********************************************/
173 #define BMA2x2_UNFILT_INTR_SOURCE_HIGH_G_POS (1)
174 #define BMA2x2_UNFILT_INTR_SOURCE_HIGH_G_LEN (1)
175 #define BMA2x2_UNFILT_INTR_SOURCE_HIGH_G_MSK (0x02)
176 #define BMA2x2_UNFILT_INTR_SOURCE_HIGH_G_REG BMA222E_INT_SRC
177 /**********************************************/
178 /* INTERRUPT SOURCE SELECTION OF SLOPE */
179 /**********************************************/
180 #define BMA2x2_UNFILT_INTR_SOURCE_SLOPE_POS (2)
181 #define BMA2x2_UNFILT_INTR_SOURCE_SLOPE_LEN (1)
182 #define BMA2x2_UNFILT_INTR_SOURCE_SLOPE_MSK (0x04)
183 #define BMA2x2_UNFILT_INTR_SOURCE_SLOPE_REG BMA222E_INT_SRC
184 /************************************************/
185 /* INTERRUPT SOURCE SELECTION OF SLOW NO MOTION */
186 /************************************************/
187 #define BMA2x2_UNFILT_INTR_SOURCE_SLOW_NO_MOTION_POS (3)
188 #define BMA2x2_UNFILT_INTR_SOURCE_SLOW_NO_MOTION_LEN (1)
189 #define BMA2x2_UNFILT_INTR_SOURCE_SLOW_NO_MOTION_MSK (0x08)
190 #define BMA2x2_UNFILT_INTR_SOURCE_SLOW_NO_MOTION_REG BMA222E_INT_SRC
191 /**********************************************/
192 /* INTERRUPT SOURCE SELECTION OF TAP */
193 /**********************************************/
194 #define BMA2x2_UNFILT_INTR_SOURCE_TAP_POS (4)
195 #define BMA2x2_UNFILT_INTR_SOURCE_TAP_LEN (1)
196 #define BMA2x2_UNFILT_INTR_SOURCE_TAP_MSK (0x10)
197 #define BMA2x2_UNFILT_INTR_SOURCE_TAP_REG BMA222E_INT_SRC
198 /**********************************************/
199 /* INTERRUPT SOURCE SELECTION OF DATA */
200 /**********************************************/
201 #define BMA2x2_UNFILT_INTR_SOURCE_DATA_POS (5)
202 #define BMA2x2_UNFILT_INTR_SOURCE_DATA_LEN (1)
203 #define BMA2x2_UNFILT_INTR_SOURCE_DATA_MSK (0x20)
204 #define BMA2x2_UNFILT_INTR_SOURCE_DATA_REG BMA222E_INT_SRC
205 
206 /****************************************************/
207 /* INTERRUPT PAD ACTIVE LEVEL AND OUTPUT TYPE */
208 /****************************************************/
209 #define BMA2x2_INTR1_PAD_ACTIVE_LEVEL_POS (0)
210 #define BMA2x2_INTR1_PAD_ACTIVE_LEVEL_LEN (1)
211 #define BMA2x2_INTR1_PAD_ACTIVE_LEVEL_MSK (0x01)
212 #define BMA2x2_INTR1_PAD_ACTIVE_LEVEL_REG BMA222E_INT_OUT_CTRL
213 
214 #define BMA2x2_INTR2_PAD_ACTIVE_LEVEL_POS (2)
215 #define BMA2x2_INTR2_PAD_ACTIVE_LEVEL_LEN (1)
216 #define BMA2x2_INTR2_PAD_ACTIVE_LEVEL_MSK (0x04)
217 #define BMA2x2_INTR2_PAD_ACTIVE_LEVEL_REG BMA222E_INT_OUT_CTRL
218 
219 #define BMA2x2_INTR1_PAD_OUTPUT_TYPE_POS (1)
220 #define BMA2x2_INTR1_PAD_OUTPUT_TYPE_LEN (1)
221 #define BMA2x2_INTR1_PAD_OUTPUT_TYPE_MSK (0x02)
222 #define BMA2x2_INTR1_PAD_OUTPUT_TYPE_REG BMA222E_INT_OUT_CTRL
223 
224 #define BMA2x2_INTR2_PAD_OUTPUT_TYPE_POS (3)
225 #define BMA2x2_INTR2_PAD_OUTPUT_TYPE_LEN (1)
226 #define BMA2x2_INTR2_PAD_OUTPUT_TYPE_MSK (0x08)
227 #define BMA2x2_INTR2_PAD_OUTPUT_TYPE_REG BMA222E_INT_OUT_CTRL
228 
229 /****************************************************/
230 /* LATCH INTERRUPT */
231 /****************************************************/
232 #define BMA2x2_LATCH_INTR_POS (0)
233 #define BMA2x2_LATCH_INTR_LEN (4)
234 #define BMA2x2_LATCH_INTR_MSK (0x0F)
235 #define BMA2x2_LATCH_INTR_REG BMA222E_INT_RST_LATCH
236 /****************************************************/
237 /* RESET LATCH INTERRUPT */
238 /****************************************************/
239 #define BMA2x2_RESET_INTR_POS (7)
240 #define BMA2x2_RESET_INTR_LEN (1)
241 #define BMA2x2_RESET_INTR_MSK (0x80)
242 #define BMA2x2_RESET_INTR_REG BMA222E_INT_RST_LATCH
243 
244 /****************************************************/
246 /****************************************************/
247 #define BMA2x2_TAP_DURN_POS (0)
248 #define BMA2x2_TAP_DURN_LEN (3)
249 #define BMA2x2_TAP_DURN_MSK (0x07)
250 #define BMA2x2_TAP_DURN_REG BMA222E_INT_8
251 
252 /****************************************************/
254 /****************************************************/
255 #define BMA2x2_TAP_SHOCK_DURN_POS (6)
256 #define BMA2x2_TAP_SHOCK_DURN_LEN (1)
257 #define BMA2x2_TAP_SHOCK_DURN_MSK (0x40)
258 #define BMA2x2_TAP_SHOCK_DURN_REG BMA222E_INT_8
259 
260 /* This advance tap interrupt only uses for the chip id 0xFB */
261 #define BMA2x2_ADV_TAP_INTR_POS (5)
262 #define BMA2x2_ADV_TAP_INTR_LEN (1)
263 #define BMA2x2_ADV_TAP_INTR_MSK (0x20)
264 #define BMA2x2_ADV_TAP_INTR_REG BMA222E_INT_8
265 
266 /****************************************************/
268 /****************************************************/
269 #define BMA2x2_TAP_QUIET_DURN_POS (7)
270 #define BMA2x2_TAP_QUIET_DURN_LEN (1)
271 #define BMA2x2_TAP_QUIET_DURN_MSK (0x80)
272 #define BMA2x2_TAP_QUIET_DURN_REG BMA222E_INT_8
273 
274 /****************************************************/
276 /****************************************************/
277 #define BMA2x2_TAP_THRES_POS (0)
278 #define BMA2x2_TAP_THRES_LEN (5)
279 #define BMA2x2_TAP_THRES_MSK (0x1F)
280 #define BMA2x2_TAP_THRES_REG BMA222E_INT_9
281 
282 /****************************************************/
284 /****************************************************/
285 #define BMA2x2_TAP_SAMPLES_POS (6)
286 #define BMA2x2_TAP_SAMPLES_LEN (2)
287 #define BMA2x2_TAP_SAMPLES_MSK (0xC0)
288 #define BMA2x2_TAP_SAMPLES_REG BMA222E_INT_9
289 
290 /****************************/
292 /****************************/
293 #define BMA2x2_BW_POS (0)
294 #define BMA2x2_BW_LEN (5)
295 #define BMA2x2_BW_MSK (0x1F)
296 #define BMA2x2_BW_REG BMA222E_PMU_BW
297 
298 #endif /* __DRV_ACC_BMA222E_TYPES_H__ */
299