Go to the documentation of this file.
28 #ifndef INCLINOMETER2_H
29 #define INCLINOMETER2_H
35 #include "mikrosdk_version.h"
38 #if mikroSDK_GET_VERSION < 20800ul
39 #include "rcu_delays.h"
45 #include "drv_digital_out.h"
46 #include "drv_digital_in.h"
47 #include "drv_i2c_master.h"
48 #include "drv_spi_master.h"
71 #define INCLINOMETER2_REG_FUNC_CFG_ACCESS 0x01
72 #define INCLINOMETER2_REG_PIN_CTRL 0x02
73 #define INCLINOMETER2_REG_FIFO_CTRL1 0x07
74 #define INCLINOMETER2_REG_FIFO_CTRL2 0x08
75 #define INCLINOMETER2_REG_FIFO_CTRL3 0x09
76 #define INCLINOMETER2_REG_FIFO_CTRL4 0x0A
77 #define INCLINOMETER2_REG_COUNTER_BDR_REG1 0x0B
78 #define INCLINOMETER2_REG_COUNTER_BDR_REG2 0x0C
79 #define INCLINOMETER2_REG_INT1_CTRL 0x0D
80 #define INCLINOMETER2_REG_INT2_CTRL 0x0E
81 #define INCLINOMETER2_REG_WHO_AM_I 0x0F
82 #define INCLINOMETER2_REG_CTRL1_XL 0x10
83 #define INCLINOMETER2_REG_CTRL3_C 0x12
84 #define INCLINOMETER2_REG_CTRL4_C 0x13
85 #define INCLINOMETER2_REG_CTRL5_C 0x14
86 #define INCLINOMETER2_REG_CTRL6_C 0x15
87 #define INCLINOMETER2_REG_CTRL7_XL 0x16
88 #define INCLINOMETER2_REG_CTRL8_XL 0x17
89 #define INCLINOMETER2_REG_CTRL9_XL 0x18
90 #define INCLINOMETER2_REG_CTRL10_C 0x19
91 #define INCLINOMETER2_REG_ALL_INT_SRC 0x1A
92 #define INCLINOMETER2_REG_WAKE_UP_SRC 0x1B
93 #define INCLINOMETER2_REG_TAP_SRC 0x1C
94 #define INCLINOMETER2_REG_DEN_SRC 0x1D
95 #define INCLINOMETER2_REG_STATUS 0x1E
96 #define INCLINOMETER2_REG_OUT_TEMP_L 0x20
97 #define INCLINOMETER2_REG_OUT_TEMP_H 0x21
98 #define INCLINOMETER2_REG_OUTX_L_A 0x28
99 #define INCLINOMETER2_REG_OUTX_H_A 0x29
100 #define INCLINOMETER2_REG_OUTY_L_A 0x2A
101 #define INCLINOMETER2_REG_OUTY_H_A 0x2B
102 #define INCLINOMETER2_REG_EMB_FUNC_STATUS_MAINPAGE 0x35
103 #define INCLINOMETER2_REG_FSM_STATUS_A_MAINPAGE 0x36
104 #define INCLINOMETER2_REG_FSM_STATUS_B_MAINPAGE 0x37
105 #define INCLINOMETER2_REG_MLC_STATUS_MAINPAGE 0x38
106 #define INCLINOMETER2_REG_STATUS_MASTER_MAINPAGE 0x39
107 #define INCLINOMETER2_REG_FIFO_STATUS1 0x3A
108 #define INCLINOMETER2_REG_FIFO_STATUS2 0x3B
109 #define INCLINOMETER2_REG_TIMESTAMP0 0x40
110 #define INCLINOMETER2_REG_TIMESTAMP1 0x41
111 #define INCLINOMETER2_REG_TIMESTAMP2 0x42
112 #define INCLINOMETER2_REG_TIMESTAMP3 0x43
113 #define INCLINOMETER2_REG_TAP_CFG0 0x56
114 #define INCLINOMETER2_REG_TAP_CFG1 0x57
115 #define INCLINOMETER2_REG_TAP_CFG2 0x58
116 #define INCLINOMETER2_REG_INT_DUR2 0x5A
117 #define INCLINOMETER2_REG_WAKE_UP_THS 0x5B
118 #define INCLINOMETER2_REG_WAKE_UP_DUR 0x5C
119 #define INCLINOMETER2_REG_MD1_CFG 0x5E
120 #define INCLINOMETER2_REG_MD2_CFG 0x5F
121 #define INCLINOMETER2_REG_INTERNAL_FREQ_FINE 0x63
122 #define INCLINOMETER2_REG_X_OFS_USR 0x73
123 #define INCLINOMETER2_REG_Y_OFS_USR 0x74
124 #define INCLINOMETER2_REG_FIFO_DATA_OUT_TAG 0x78
125 #define INCLINOMETER2_REG_FIFO_DATA_OUT_X_L 0x79
126 #define INCLINOMETER2_REG_FIFO_DATA_OUT_X_H 0x7A
127 #define INCLINOMETER2_REG_FIFO_DATA_OUT_Y_L 0x7B
128 #define INCLINOMETER2_REG_FIFO_DATA_OUT_Y_H 0x7C
129 #define INCLINOMETER2_REG_FIFO_DATA_OUT_Z_L 0x7D
130 #define INCLINOMETER2_REG_FIFO_DATA_OUT_Z_H 0x7E
136 #define INCLINOMETER2_FUNC_REG_PAGE_SEL 0x02
137 #define INCLINOMETER2_FUNC_REG_EMB_FUNC_EN_B 0x05
138 #define INCLINOMETER2_FUNC_REG_PAGE_ADDRESS 0x08
139 #define INCLINOMETER2_FUNC_REG_PAGE_VALUE 0x09
140 #define INCLINOMETER2_FUNC_REG_EMB_FUNC_INT1 0x0A
141 #define INCLINOMETER2_FUNC_REG_FSM_INT1_A 0x0B
142 #define INCLINOMETER2_FUNC_REG_FSM_INT1_B 0x0C
143 #define INCLINOMETER2_FUNC_REG_MLC_INT1 0x0D
144 #define INCLINOMETER2_FUNC_REG_EMB_FUNC_INT2 0x0E
145 #define INCLINOMETER2_FUNC_REG_FSM_INT2_A 0x0F
146 #define INCLINOMETER2_FUNC_REG_FSM_INT2_B 0x10
147 #define INCLINOMETER2_FUNC_REG_MLC_INT2 0x11
148 #define INCLINOMETER2_FUNC_REG_EMB_FUNC_STATUS 0x12
149 #define INCLINOMETER2_FUNC_REG_FSM_STATUS_A 0x13
150 #define INCLINOMETER2_FUNC_REG_FSM_STATUS_B 0x14
151 #define INCLINOMETER2_FUNC_REG_MLC_STATUS 0x15
152 #define INCLINOMETER2_FUNC_REG_PAGE_RW 0x17
153 #define INCLINOMETER2_FUNC_REG_FSM_ENABLE_A 0x46
154 #define INCLINOMETER2_FUNC_REG_FSM_ENABLE_B 0x47
155 #define INCLINOMETER2_FUNC_REG_FSM_LONG_COUNTER_L 0x48
156 #define INCLINOMETER2_FUNC_REG_FSM_LONG_COUNTER_H 0x49
157 #define INCLINOMETER2_FUNC_REG_FSM_LONG_COUNTER_CLR 0x4A
158 #define INCLINOMETER2_FUNC_REG_FSM_OUTS1 0x4C
159 #define INCLINOMETER2_FUNC_REG_FSM_OUTS2 0x4D
160 #define INCLINOMETER2_FUNC_REG_FSM_OUTS3 0x4E
161 #define INCLINOMETER2_FUNC_REG_FSM_OUTS4 0x4F
162 #define INCLINOMETER2_FUNC_REG_FSM_OUTS5 0x50
163 #define INCLINOMETER2_FUNC_REG_FSM_OUTS6 0x51
164 #define INCLINOMETER2_FUNC_REG_FSM_OUTS7 0x52
165 #define INCLINOMETER2_FUNC_REG_FSM_OUTS8 0x53
166 #define INCLINOMETER2_FUNC_REG_FSM_OUTS9 0x54
167 #define INCLINOMETER2_FUNC_REG_FSM_OUTS10 0x55
168 #define INCLINOMETER2_FUNC_REG_FSM_OUTS11 0x56
169 #define INCLINOMETER2_FUNC_REG_FSM_OUTS12 0x57
170 #define INCLINOMETER2_FUNC_REG_FSM_OUTS13 0x58
171 #define INCLINOMETER2_FUNC_REG_FSM_OUTS14 0x59
172 #define INCLINOMETER2_FUNC_REG_FSM_OUTS15 0x5A
173 #define INCLINOMETER2_FUNC_REG_FSM_OUTS16 0x5B
174 #define INCLINOMETER2_FUNC_REG_EMB_FUNC_ODR_CFG_B 0x5F
175 #define INCLINOMETER2_FUNC_REG_EMB_FUNC_ODR_CFG_C 0x60
176 #define INCLINOMETER2_FUNC_REG_EMB_FUNC_INIT_B 0x67
177 #define INCLINOMETER2_FUNC_REG_MCL0_SRC 0x70
178 #define INCLINOMETER2_FUNC_REG_MCL1_SRC 0x71
179 #define INCLINOMETER2_FUNC_REG_MCL2_SRC 0x72
180 #define INCLINOMETER2_FUNC_REG_MCL3_SRC 0x73
181 #define INCLINOMETER2_FUNC_REG_MCL4_SRC 0x74
182 #define INCLINOMETER2_FUNC_REG_MCL5_SRC 0x75
183 #define INCLINOMETER2_FUNC_REG_MCL6_SRC 0x76
184 #define INCLINOMETER2_FUNC_REG_MCL7_SRC 0x77
190 #define INCLINOMETER2_SHUB_REG_SENSOR_HUB_1 0x02
191 #define INCLINOMETER2_SHUB_REG_SENSOR_HUB_2 0x03
192 #define INCLINOMETER2_SHUB_REG_SENSOR_HUB_3 0x04
193 #define INCLINOMETER2_SHUB_REG_SENSOR_HUB_4 0x05
194 #define INCLINOMETER2_SHUB_REG_SENSOR_HUB_5 0x06
195 #define INCLINOMETER2_SHUB_REG_SENSOR_HUB_6 0x07
196 #define INCLINOMETER2_SHUB_REG_SENSOR_HUB_7 0x08
197 #define INCLINOMETER2_SHUB_REG_SENSOR_HUB_8 0x09
198 #define INCLINOMETER2_SHUB_REG_SENSOR_HUB_9 0x0A
199 #define INCLINOMETER2_SHUB_REG_SENSOR_HUB_10 0x0B
200 #define INCLINOMETER2_SHUB_REG_SENSOR_HUB_11 0x0C
201 #define INCLINOMETER2_SHUB_REG_SENSOR_HUB_12 0x0D
202 #define INCLINOMETER2_SHUB_REG_SENSOR_HUB_13 0x0E
203 #define INCLINOMETER2_SHUB_REG_SENSOR_HUB_14 0x0F
204 #define INCLINOMETER2_SHUB_REG_SENSOR_HUB_15 0x10
205 #define INCLINOMETER2_SHUB_REG_SENSOR_HUB_16 0x11
206 #define INCLINOMETER2_SHUB_REG_SENSOR_HUB_17 0x12
207 #define INCLINOMETER2_SHUB_REG_SENSOR_HUB_18 0x13
208 #define INCLINOMETER2_SHUB_REG_MASTER_CONFIG 0x14
209 #define INCLINOMETER2_SHUB_REG_SLV0_ADD 0x15
210 #define INCLINOMETER2_SHUB_REG_SLV0_SUBADD 0x16
211 #define INCLINOMETER2_SHUB_REG_SLV0_CONFIG 0x17
212 #define INCLINOMETER2_SHUB_REG_SLV1_ADD 0x18
213 #define INCLINOMETER2_SHUB_REG_SLV1_SUBADD 0x19
214 #define INCLINOMETER2_SHUB_REG_SLV1_CONFIG 0x1A
215 #define INCLINOMETER2_SHUB_REG_SLV2_ADD 0x1B
216 #define INCLINOMETER2_SHUB_REG_SLV2_SUBADD 0x1C
217 #define INCLINOMETER2_SHUB_REG_SLV2_CONFIG 0x1D
218 #define INCLINOMETER2_SHUB_REG_SLV3_ADD 0x1E
219 #define INCLINOMETER2_SHUB_REG_SLV3_SUBADD 0x1F
220 #define INCLINOMETER2_SHUB_REG_SLV3_CONFIG 0x20
221 #define INCLINOMETER2_SHUB_REG_DATAWRITE_SLV0 0x21
222 #define INCLINOMETER2_SHUB_REG_STATUS_MASTER 0x22
240 #define INCLINOMETER2_INT1_CTRL_DEN_DRDY 0x80
241 #define INCLINOMETER2_INT1_CTRL_CNT_BDR 0x40
242 #define INCLINOMETER2_INT1_CTRL_FIFO_FULL 0x20
243 #define INCLINOMETER2_INT1_CTRL_FIFO_OVR 0x10
244 #define INCLINOMETER2_INT1_CTRL_FIFO_TH 0x08
245 #define INCLINOMETER2_INT1_CTRL_BOOT 0x04
246 #define INCLINOMETER2_INT1_CTRL_DRDY_XL 0x01
252 #define INCLINOMETER2_STATUS_TEMP_DRDY 0x04
253 #define INCLINOMETER2_STATUS_ACCEL_DRDY 0x01
259 #define INCLINOMETER2_ACCEL_FSR_0p5G_RES 0.015f
260 #define INCLINOMETER2_ACCEL_FSR_1G_RES 0.031f
261 #define INCLINOMETER2_ACCEL_FSR_2G_RES 0.061f
262 #define INCLINOMETER2_ACCEL_FSR_3G_RES 0.122f
263 #define INCLINOMETER2_ROOM_TEMP 25.0f
264 #define INCLINOMETER2_TEMP_SENS 256.0f
270 #define INCLINOMETER2_WHO_AM_I 0x6B
277 #define INCLINOMETER2_DEVICE_ADDRESS_0 0x6A
278 #define INCLINOMETER2_DEVICE_ADDRESS_1 0x6B
288 #define INCLINOMETER2_SET_DATA_SAMPLE_EDGE SET_SPI_DATA_SAMPLE_EDGE
289 #define INCLINOMETER2_SET_DATA_SAMPLE_MIDDLE SET_SPI_DATA_SAMPLE_MIDDLE
307 #define INCLINOMETER2_MAP_MIKROBUS( cfg, mikrobus ) \
308 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
309 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
310 cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \
311 cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \
312 cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \
313 cfg.cs = MIKROBUS( mikrobus, MIKROBUS_CS ); \
314 cfg.int_pin = MIKROBUS( mikrobus, MIKROBUS_INT )
616 #endif // INCLINOMETER2_H
inclinometer2_master_io_t write_f
Definition: inclinometer2.h:352
@ INCLINOMETER2_FSR_BIT_MASK
Definition: inclinometer2.h:393
uint32_t spi_speed
Definition: inclinometer2.h:375
inclinometer2_drv_t drv_sel
Definition: inclinometer2.h:350
@ INCLINOMETER2_DRV_SEL_I2C
Definition: inclinometer2.h:326
inclinometer2_drv_t
Inclinometer 2 Click driver selector.
Definition: inclinometer2.h:324
This file contains SPI specific macros, functions, etc.
err_t inclinometer2_get_temperature(inclinometer2_t *ctx, float *temperature)
Inclinometer 2 get temperature function.
@ INCLINOMETER2_ODR_12p5HZ
Definition: inclinometer2.h:404
uint8_t i2c_address
Definition: inclinometer2.h:373
uint32_t i2c_speed
Definition: inclinometer2.h:372
digital_in_t int_pin
Definition: inclinometer2.h:343
pin_name_t miso
Definition: inclinometer2.h:366
@ INCLINOMETER2_ODR_833HZ
Definition: inclinometer2.h:410
@ INCLINOMETER2_ODR_52HZ
Definition: inclinometer2.h:406
Inclinometer 2 Click context object.
Definition: inclinometer2.h:342
uint8_t slave_address
Definition: inclinometer2.h:348
pin_name_t chip_select
Definition: inclinometer2.h:349
err_t inclinometer2_check_communication(inclinometer2_t *ctx)
Inclinometer 2 check communication function.
inclinometer2_master_io_t read_f
Definition: inclinometer2.h:353
pin_name_t sck
Definition: inclinometer2.h:368
err_t inclinometer2_get_accel(inclinometer2_t *ctx, float *x_axis, float *y_axis)
Inclinometer 2 get accel function.
@ INCLINOMETER2_ODR_POWER_DOWN
Definition: inclinometer2.h:403
pin_name_t scl
Definition: inclinometer2.h:364
@ INCLINOMETER2_ODR_104HZ
Definition: inclinometer2.h:407
@ INCLINOMETER2_ERROR
Definition: inclinometer2.h:422
err_t inclinometer2_set_fsr_and_odr(inclinometer2_t *ctx, inclinometer2_fsr_t fsr, inclinometer2_odr_t odr)
Inclinometer 2 set fsr and odr function.
void inclinometer2_drv_interface_selection(inclinometer2_cfg_t *cfg, inclinometer2_drv_t drv_sel)
Inclinometer 2 driver interface setup function.
@ INCLINOMETER2_FSR_2G
Definition: inclinometer2.h:392
spi_master_chip_select_polarity_t cs_polarity
Definition: inclinometer2.h:377
err_t inclinometer2_init(inclinometer2_t *ctx, inclinometer2_cfg_t *cfg)
Inclinometer 2 initialization function.
spi_master_t spi
Definition: inclinometer2.h:346
inclinometer2_return_value_t
Inclinometer 2 Click return value data.
Definition: inclinometer2.h:420
@ INCLINOMETER2_ODR_BIT_MASK
Definition: inclinometer2.h:411
@ INCLINOMETER2_ODR_416HZ
Definition: inclinometer2.h:409
@ INCLINOMETER2_DRV_SEL_SPI
Definition: inclinometer2.h:325
err_t inclinometer2_generic_read(inclinometer2_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len)
Inclinometer 2 data reading function.
@ INCLINOMETER2_FSR_3G
Definition: inclinometer2.h:390
err_t inclinometer2_write_register(inclinometer2_t *ctx, uint8_t reg, uint8_t data_in)
Inclinometer 2 write register function.
@ INCLINOMETER2_OK
Definition: inclinometer2.h:421
float resolution
Definition: inclinometer2.h:354
Inclinometer 2 Click configuration object.
Definition: inclinometer2.h:363
void inclinometer2_cfg_setup(inclinometer2_cfg_t *cfg)
Inclinometer 2 configuration object setup function.
inclinometer2_fsr_t
Inclinometer 2 Click accel full-scale range selection.
Definition: inclinometer2.h:388
inclinometer2_drv_t drv_sel
Definition: inclinometer2.h:379
pin_name_t cs
Definition: inclinometer2.h:369
@ INCLINOMETER2_FSR_0p5G
Definition: inclinometer2.h:389
err_t inclinometer2_default_cfg(inclinometer2_t *ctx)
Inclinometer 2 default configuration function.
struct inclinometer2_s inclinometer2_t
Inclinometer 2 Click context object.
spi_master_mode_t spi_mode
Definition: inclinometer2.h:376
err_t(* inclinometer2_master_io_t)(struct inclinometer2_s *, uint8_t, uint8_t *, uint8_t)
Definition: inclinometer2.h:335
@ INCLINOMETER2_FSR_1G
Definition: inclinometer2.h:391
pin_name_t mosi
Definition: inclinometer2.h:367
err_t inclinometer2_generic_write(inclinometer2_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len)
Inclinometer 2 data writing function.
pin_name_t sda
Definition: inclinometer2.h:365
err_t inclinometer2_read_register(inclinometer2_t *ctx, uint8_t reg, uint8_t *data_out)
Inclinometer 2 read register function.
pin_name_t int_pin
Definition: inclinometer2.h:370
inclinometer2_odr_t
Inclinometer 2 Click output data rate.
Definition: inclinometer2.h:402
@ INCLINOMETER2_ODR_208HZ
Definition: inclinometer2.h:408
@ INCLINOMETER2_ODR_26HZ
Definition: inclinometer2.h:405
uint8_t inclinometer2_get_int_pin(inclinometer2_t *ctx)
Inclinometer 2 get int pin function.
i2c_master_t i2c
Definition: inclinometer2.h:345