Go to the documentation of this file.
35 #include "drv_digital_out.h"
36 #include "drv_digital_in.h"
37 #include "drv_i2c_master.h"
38 #include "drv_spi_master.h"
63 #define ACCEL15_REG_CHIP_ID 0x00
64 #define ACCEL15_REG_ERROR 0x02
65 #define ACCEL15_REG_STATUS 0x03
66 #define ACCEL15_REG_DATA_0 0x0A
67 #define ACCEL15_REG_DATA_8 0x12
68 #define ACCEL15_REG_SENSORTIME_0 0x18
69 #define ACCEL15_REG_EVENT 0x1B
70 #define ACCEL15_REG_INT_STAT_0 0x1C
71 #define ACCEL15_REG_INT_STAT_1 0x1D
72 #define ACCEL15_REG_TEMPERATURE 0x22
73 #define ACCEL15_REG_FIFO_LENGTH_0 0x24
74 #define ACCEL15_REG_FIFO_DATA 0x26
75 #define ACCEL15_REG_INTERNAL_STAT 0x2A
76 #define ACCEL15_REG_ACCEL_CONFIG 0x40
77 #define ACCEL15_REG_ACCEL_RANGE 0x41
78 #define ACCEL15_REG_AUX_CONF 0x44
79 #define ACCEL15_REG_FIFO_DOWN 0x45
80 #define ACCEL15_REG_FIFO_WTM_0 0x46
81 #define ACCEL15_REG_FIFO_CONFIG_0 0x48
82 #define ACCEL15_REG_FIFO_CONFIG_1 0x49
83 #define ACCEL15_REG_AUX_DEV_ID 0x4B
84 #define ACCEL15_REG_AUX_IF_CONF 0x4C
85 #define ACCEL15_REG_AUX_RD 0x4D
86 #define ACCEL15_REG_INT_MAP_1 0x56
87 #define ACCEL15_REG_INT_MAP_2 0x57
88 #define ACCEL15_REG_INT_MAP_DATA 0x58
89 #define ACCEL15_REG_INIT_CTRL 0x59
90 #define ACCEL15_REG_RESERVED_REG_5B 0x5B
91 #define ACCEL15_REG_RESERVED_REG_5C 0x5C
92 #define ACCEL15_REG_FEATURE_CONFIG 0x5E
93 #define ACCEL15_REG_INTERNAL_ERROR 0x5F
94 #define ACCEL15_REG_ACC_SELF_TEST 0x6D
95 #define ACCEL15_REG_ACC_SELF_TEST 0x6D
96 #define ACCEL15_REG_NV_CONFIG 0x70
97 #define ACCEL15_REG_OFFSET_0 0x71
98 #define ACCEL15_REG_OFFSET_1 0x72
99 #define ACCEL15_REG_OFFSET_2 0x73
100 #define ACCEL15_REG_POWER_CONF 0x7C
101 #define ACCEL15_REG_POWER_CTRL 0x7D
102 #define ACCEL15_REG_CMD 0x7E
125 #define ACCEL15_CHIP_ID 0x1A
126 #define ACCEL15_FEATURE_SIZE 0x0C
127 #define ACCEL15_RD_WR_MIN_LEN 0x02
128 #define ACCEL15_RD_WR_MAX_LEN 0x0514
134 #define ACCEL15_ANY_MOT_START_ADDR 0x00
135 #define ACCEL15_NO_MOT_START_ADDR 0x04
136 #define ACCEL15_CONFIG_ID_START_ADDR 0x08
137 #define ACCEL15_AXES_REMAP_START_ADDR 0x0A
144 #define ACCEL15_X_AXIS_MSK 0x03
145 #define ACCEL15_X_AXIS_SIGN_MSK 0x04
146 #define ACCEL15_Y_AXIS_MSK 0x18
147 #define ACCEL15_Y_AXIS_SIGN_MSK 0x20
148 #define ACCEL15_Z_AXIS_MSK 0xC0
149 #define ACCEL15_Z_AXIS_SIGN_MSK 0x01
156 #define ACCEL15_X_AXIS_SIGN_POS 0x02
157 #define ACCEL15_Y_AXIS_POS 0x03
158 #define ACCEL15_Y_AXIS_SIGN_POS 0x05
159 #define ACCEL15_Z_AXIS_POS 0x06
166 #define ACCEL15_X_AXIS_EN 0x01
167 #define ACCEL15_Y_AXIS_EN 0x02
168 #define ACCEL15_Z_AXIS_EN 0x04
169 #define ACCEL15_EN_ALL_AXIS 0x07
170 #define ACCEL15_DIS_ALL_AXIS 0x00
177 #define ACCEL15_ANY_MOT_INT 0x20
178 #define ACCEL15_NO_MOT_INT 0x40
179 #define ACCEL15_ERROR_INT 0x80
186 #define ACCEL15_ACCEL_OFF 0x00
187 #define ACCEL15_ACCEL_ON 0x04
188 #define ACCEL15_AUX_OFF 0x00
189 #define ACCEL15_AUX_ON 0x01
196 #define ACCEL15_APS_OFF 0x00
197 #define ACCEL15_APS_ON 0x01
198 #define ACCEL15_FSW_OFF 0x00
199 #define ACCEL15_FSW_ON 0x02
206 #define ACCEL15_CONFIG_MAJOR_POS 0x06
213 #define ACCEL15_DRDY 0x01
214 #define ACCEL15_ACCEL_EN 0x40
215 #define ACCEL15_ACCEL_DRDY 0x80
223 #define ACCEL15_SPI_WR_MASK 0x7F
224 #define ACCEL15_SPI_RD_MASK 0x80
231 #define ACCEL15_ENABLE 0x01
232 #define ACCEL15_DISABLE 0x00
239 #define ACCEL15_CIC_AVG_MODE 0
240 #define ACCEL15_CONTINUOUS_MODE 1
247 #define ACCEL15_ADVANCE_POWER_SAVE_MSK 0x01
254 #define ACCEL15_12_BIT_RESOLUTION 12
255 #define ACCEL15_16_BIT_RESOLUTION 16
262 #define ACCEL15_ACCEL_ENABLE_POS 2
263 #define ACCEL15_ACCEL_ENABLE_MSK 0x04
270 #define ACCEL15_SOFT_RESET 0x6B
277 #define ACCEL15_ACCEL_ODR_MSK 0x0F
278 #define ACCEL15_ACCEL_BW_POS 4
279 #define ACCEL15_ACCEL_BW_MSK 0x70
280 #define ACCEL15_ACCEL_RANGE_MSK 0x03
281 #define ACCEL15_ACCEL_PERFMODE_POS 7
282 #define ACCEL15_ACCEL_PERFMODE_MSK 0x80
289 #define ACCEL15_ACCEL_CONFIG_LENGTH 2
290 #define ACCEL15_FIFO_CONFIG_LENGTH 2
291 #define ACCEL15_FIFO_WM_LENGTH 2
292 #define ACCEL15_ACCEL_DATA_LENGTH 6
293 #define ACCEL15_FIFO_DATA_LENGTH 2
294 #define ACCEL15_MA_FIFO_A_X_LSB 8
295 #define ACCEL15_SENSOR_TIME_MSB_BYTE 2
296 #define ACCEL15_SENSOR_TIME_XLSB_BYTE 1
297 #define ACCEL15_SENSOR_TIME_LSB_BYTE 0
298 #define ACCEL15_FIFO_LENGTH_MSB_BYTE 1
305 #define ACCEL15_OUTPUT_DATA_RATE_0_78HZ 0x01
306 #define ACCEL15_OUTPUT_DATA_RATE_1_56HZ 0x02
307 #define ACCEL15_OUTPUT_DATA_RATE_3_12HZ 0x03
308 #define ACCEL15_OUTPUT_DATA_RATE_6_25HZ 0x04
309 #define ACCEL15_OUTPUT_DATA_RATE_12_5HZ 0x05
310 #define ACCEL15_OUTPUT_DATA_RATE_25HZ 0x06
311 #define ACCEL15_OUTPUT_DATA_RATE_50HZ 0x07
312 #define ACCEL15_OUTPUT_DATA_RATE_100HZ 0x08
313 #define ACCEL15_OUTPUT_DATA_RATE_200HZ 0x09
314 #define ACCEL15_OUTPUT_DATA_RATE_400HZ 0x0A
315 #define ACCEL15_OUTPUT_DATA_RATE_800HZ 0x0B
316 #define ACCEL15_OUTPUT_DATA_RATE_1600HZ 0x0C
323 #define ACCEL15_ACCEL_OSR4_AVG1 0
324 #define ACCEL15_ACCEL_OSR2_AVG2 1
325 #define ACCEL15_ACCEL_NORMAL_AVG4 2
326 #define ACCEL15_ACCEL_CIC_AVG8 3
327 #define ACCEL15_ACCEL_RES_AVG16 4
328 #define ACCEL15_ACCEL_RES_AVG32 5
329 #define ACCEL15_ACCEL_RES_AVG64 6
330 #define ACCEL15_ACCEL_RES_AVG128 7
337 #define ACCEL15_ACCEL_RANGE_2G 0
338 #define ACCEL15_ACCEL_RANGE_4G 1
339 #define ACCEL15_ACCEL_RANGE_8G 2
340 #define ACCEL15_ACCEL_RANGE_16G 3
347 #define ACCEL15_FATAL_ERR_MSK 0x01
348 #define ACCEL15_CMD_ERR_POS 1
349 #define ACCEL15_CMD_ERR_MSK 0x02
350 #define ACCEL15_ERR_CODE_POS 2
351 #define ACCEL15_ERR_CODE_MSK 0x1C
352 #define ACCEL15_FIFO_ERR_POS 6
353 #define ACCEL15_FIFO_ERR_MSK 0x40
360 #define ACCEL15_FIFO_SELF_WAKE_UP_POS 1
361 #define ACCEL15_FIFO_SELF_WAKE_UP_MSK 0x02
362 #define ACCEL15_FIFO_BYTE_COUNTER_MSB_MSK 0x3F
363 #define ACCEL15_FIFO_DATA_POS 0
364 #define ACCEL15_FIFO_DATA_MSK 0xFF
365 #define ACCEL15_FIFO_DOWN_ACCEL_POS 4
366 #define ACCEL15_FIFO_DOWN_ACCEL_MSK 0x70
367 #define ACCEL15_FIFO_FILTER_ACCEL_POS 7
368 #define ACCEL15_FIFO_FILTER_ACCEL_MSK 0x80
375 #define ACCEL15_FIFO_HEADER_ACC 0x84
376 #define ACCEL15_FIFO_HEADER_MAG 0x90
377 #define ACCEL15_FIFO_HEADER_MAG_ACC 0x94
378 #define ACCEL15_FIFO_HEADER_SENSOR_TIME 0x44
379 #define ACCEL15_FIFO_HEADER_INPUT_CONFIG 0x48
380 #define ACCEL15_FIFO_HEADER_SKIP_FRAME 0x40
381 #define ACCEL15_FIFO_HEADER_OVER_READ_MSB 0x80
382 #define ACCEL15_FIFO_HEADER_SAMPLE_DROP 0x50
383 #define ACCEL15_FIFO_MAG_ACC_ENABLE 0x60
384 #define ACCEL15_FIFO_ACC_ENABLE 0x40
385 #define ACCEL15_FIFO_MAG_ENABLE 0x20
386 #define ACCEL15_FIFO_STOP_ON_FULL 0x01
387 #define ACCEL15_FIFO_TIME 0x02
388 #define ACCEL15_FIFO_TAG_INTR2 0x04
389 #define ACCEL15_FIFO_TAG_INTR1 0x08
390 #define ACCEL15_FIFO_HEADER 0x10
391 #define ACCEL15_FIFO_MAG 0x20
392 #define ACCEL15_FIFO_ACCEL 0x40
393 #define ACCEL15_FIFO_ALL 0x7F
394 #define ACCEL15_FIFO_CONFIG_0_MASK 0x03
395 #define ACCEL15_FIFO_CONFIG_1_MASK 0xFC
402 #define ACCEL15_FIFO_LSB_CONFIG_CHECK 0x00
403 #define ACCEL15_FIFO_MSB_CONFIG_CHECK 0x80
404 #define ACCEL15_FIFO_TAG_INTR_MASK 0xFC
411 #define ACCEL15_ACCEL_AUX_FIFO_DROP 0x05
412 #define ACCEL15_ACCEL_FIFO_DROP 0x01
419 #define ACCEL15_INIT_START 0x00
420 #define ACCEL15_INIT_STOP 0x01
427 #define ACCEL15_SENSOR_TIME_LENGTH 3
434 #define ACCEL15_FIFO_ACC_LENGTH 6
435 #define ACCEL15_FIFO_MAG_LENGTH 8
436 #define ACCEL15_FIFO_MAG_ACC_LENGTH 14
437 #define ACCEL15_CONFIG_STREAM_MESSAGE_MSK 0x0F
438 #define ACCEL15_ASIC_INITIALIZED 0x01
445 #define ACCEL15_ACCEL_CONFIG_FOC 0xB7
452 #define ACCEL15_X_AXIS 0
453 #define ACCEL15_Y_AXIS 1
454 #define ACCEL15_Z_AXIS 2
461 #define ACCEL15_NV_ENABLE_I2C 0x00
462 #define ACCEL15_NV_DISABLE_I2C 0x01
463 #define ACCEL15_NV_ACCEL_OFFSET_POS 3
464 #define ACCEL15_NV_ACCEL_OFFSET_MSK 0x08
471 #define ACCEL15_SELFTEST_PASS 0
472 #define ACCEL15_SELFTEST_FAIL 1
473 #define ACCEL15_SELFTEST_DIFF_X_AXIS_FAILED 1
474 #define ACCEL15_SELFTEST_DIFF_Y_AXIS_FAILED 2
475 #define ACCEL15_SELFTEST_DIFF_Z_AXIS_FAILED 3
476 #define ACCEL15_SELFTEST_DIFF_X_AND_Y_AXIS_FAILED 4
477 #define ACCEL15_SELFTEST_DIFF_X_AND_Z_AXIS_FAILED 5
478 #define ACCEL15_SELFTEST_DIFF_Y_AND_Z_AXIS_FAILED 6
479 #define ACCEL15_SELFTEST_DIFF_X_Y_AND_Z_AXIS_FAILED 7
486 #define ACCEL15_ACCEL_SELFTEST_ENABLE_MSK 0x01
487 #define ACCEL15_ACCEL_SELFTEST_SIGN_POS 2
488 #define ACCEL15_ACCEL_SELFTEST_SIGN_MSK 0x04
489 #define ACCEL15_SELFTEST_AMP_POS 3
490 #define ACCEL15_SELFTEST_AMP_MSK 0x08
497 #define ACCEL15_MAX_VALUE_FIFO_FILTER 1
498 #define ACCEL15_MAX_VALUE_SPI3 1
499 #define ACCEL15_MAX_VALUE_SELFTEST_AMP 1
500 #define ACCEL15_MAX_IF_MODE 3
501 #define ACCEL15_MAX_VALUE_SELFTEST_SIGN 1
508 #define ACCEL15_FOC_ACC_CONF_VAL 0xB7
515 #define ACCEL15_SPI_WRITE 0x00
516 #define ACCEL15_SPI_READ 0x80
523 #define ACCEL15_SET_DEV_ADDR_GND 0x18
524 #define ACCEL15_SET_DEV_ADDR_VCC 0x19
542 #define ACCEL15_MAP_MIKROBUS( cfg, mikrobus ) \
543 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
544 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
545 cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \
546 cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \
547 cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \
548 cfg.cs = MIKROBUS( mikrobus, MIKROBUS_CS ); \
549 cfg.i2 = MIKROBUS( mikrobus, MIKROBUS_AN ); \
550 cfg.i1 = MIKROBUS( mikrobus, MIKROBUS_INT )
613 spi_master_mode_t spi_mode;
614 spi_master_chip_select_polarity_t cs_polarity;
void accel15_cfg_setup(accel15_cfg_t *cfg)
Accel 15 configuration object setup function.
err_t(* accel15_master_io_t)(struct accel15_s *, uint8_t, uint8_t *, uint8_t)
Accel 15 Click driver interface.
Definition: accel15.h:569
accel15_drv_t
Accel 15 Click driver selector.
Definition: accel15.h:558
void accel15_cfg_accel(accel15_t *ctx, uint8_t acc_odr, uint8_t g_range)
Accel 15 config accel function.
err_t accel15_generic_write(accel15_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len)
Accel 15 data writing function.
digital_in_t i2
Definition: accel15.h:578
uint8_t accel15_get_error(accel15_t *ctx)
Accel 15 get error function.
void accel15_default_cfg(accel15_t *ctx)
Accel 15 default configuration function.
Accel axis data structure.
Definition: accel15.h:622
void accel15_get_axis_data(accel15_t *ctx, accel15_axis_t *axis)
Accel 15 get accelerometer axis function.
uint8_t accel15_get_int_2(accel15_t *ctx)
Accel 15 get Interrupt 1 function.
pin_name_t chip_select
Definition: accel15.h:585
i2c_master_t i2c
Definition: accel15.h:581
uint8_t slave_address
Definition: accel15.h:584
Accel 15 Click configuration object.
Definition: accel15.h:597
Accel 15 Click context object.
Definition: accel15.h:575
uint8_t accel15_get_int_1(accel15_t *ctx)
Accel 15 get Interrupt 1 function.
accel15_master_io_t write_f
Definition: accel15.h:588
digital_in_t i1
Definition: accel15.h:579
err_t accel15_init(accel15_t *ctx, accel15_cfg_t *cfg)
Accel 15 initialization function.
void accel15_enable_accel(accel15_t *ctx)
Accel 15 enable accel function.
Definition: accel15.h:560
struct accel15_s accel15_t
Accel 15 Click context object.
void accel15_drv_interface_selection(accel15_cfg_t *cfg, accel15_drv_t drv_sel)
Accel 15 driver interface setup function.
spi_master_t spi
Definition: accel15.h:582
accel15_drv_t drv_sel
Definition: accel15.h:586
err_t accel15_check_id(accel15_t *ctx)
Accel 15 check ID function.
void accel15_soft_reset(accel15_t *ctx)
Accel 15 soft reset function.
Definition: accel15.h:561
err_t accel15_generic_read(accel15_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len)
Accel 15 data reading function.
uint8_t accel15_get_internal_status(accel15_t *ctx)
Accel 15 internal status function.
accel15_master_io_t read_f
Definition: accel15.h:589
uint8_t accel15_get_status(accel15_t *ctx)
Accel 15 status function.