c9dof3  2.0.0.0
c9dof3.h
Go to the documentation of this file.
1 /*
2  * MikroSDK - MikroE Software Development Kit
3  * Copyright© 2020 MikroElektronika d.o.o.
4  *
5  * Permission is hereby granted, free of charge, to any person
6  * obtaining a copy of this software and associated documentation
7  * files (the "Software"), to deal in the Software without restriction,
8  * including without limitation the rights to use, copy, modify, merge,
9  * publish, distribute, sublicense, and/or sell copies of the Software,
10  * and to permit persons to whom the Software is furnished to do so,
11  * subject to the following conditions:
12  *
13  * The above copyright notice and this permission notice shall be
14  * included in all copies or substantial portions of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19  * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
20  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
21  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
22  * OR OTHER DEALINGS IN THE SOFTWARE.
23  */
24 
33 // ----------------------------------------------------------------------------
34 
35 #ifndef C9DOF3_H
36 #define C9DOF3_H
37 
38 #include "mikrosdk_version.h"
39 
40 #ifdef __GNUC__
41 #if mikroSDK_GET_VERSION < 20800ul
42 #include "rcu_delays.h"
43 #else
44 #include "delays.h"
45 #endif
46 #endif
47 
48 #include "drv_digital_out.h"
49 #include "drv_digital_in.h"
50 #include "drv_i2c_master.h"
51 #include "drv_spi_master.h"
52 
53 // -------------------------------------------------------------- PUBLIC MACROS
64 #define C9DOF3_MAP_MIKROBUS( cfg, mikrobus ) \
65  cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
66  cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
67  cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \
68  cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \
69  cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \
70  cfg.cs1 = MIKROBUS( mikrobus, MIKROBUS_CS ); \
71  cfg.cs2 = MIKROBUS( mikrobus, MIKROBUS_RST ); \
72  cfg.cs3 = MIKROBUS( mikrobus, MIKROBUS_PWM ); \
73  cfg.int_pin = MIKROBUS( mikrobus, MIKROBUS_INT )
74 
80 #define C9DOF3_MASTER_I2C 0
81 #define C9DOF3_MASTER_SPI 1
82 
88 #define C9DOF3_RETVAL uint8_t
89 
95 #define C9DOF3_ACC_I2C_SLAVE_ADDRESS 0x18
96 #define C9DOF3_GYRO_I2C_SLAVE_ADDRESS 0x68
97 #define C9DOF3_MAG_I2C_SLAVE_ADDRESS 0x10
98 
104 #define C9DOF3_ACC_DEVICE 0xFA
105 #define C9DOF3_GYRO_DEVICE 0x0F
106 #define C9DOF3_MAG_DEVICE 0x32
107 
113 #define C9DOF3_INITIATED_SOFT_RESET 0xB6
114 
120 #define C9DOF3_REG_ACC_WHO_AM_I 0x00
121 #define C9DOF3_REG_ACC_DATA_START 0x02
122 #define C9DOF3_REG_ACC_D_X_LSB 0x02
123 #define C9DOF3_REG_ACC_D_X_MSB 0x03
124 #define C9DOF3_REG_ACC_D_Y_LSB 0x04
125 #define C9DOF3_REG_ACC_D_Y_MSB 0x05
126 #define C9DOF3_REG_ACC_D_Z_LSB 0x06
127 #define C9DOF3_REG_ACC_D_Z_MSB 0x07
128 #define C9DOF3_REG_ACC_D_TEMP 0x08
129 #define C9DOF3_REG_ACC_INT_STATUS_0 0x09
130 #define C9DOF3_REG_ACC_INT_STATUS_1 0x0A
131 #define C9DOF3_REG_ACC_INT_STATUS_2 0x0B
132 #define C9DOF3_REG_ACC_INT_STATUS_3 0x0C
133 #define C9DOF3_REG_ACC_FIFO_STATUS 0x0E
134 #define C9DOF3_REG_ACC_PMU_RANGE 0x0F
135 #define C9DOF3_REG_ACC_PMU_BW 0x10
136 #define C9DOF3_REG_ACC_PMU_LPW 0x11
137 #define C9DOF3_REG_ACC_PMU_LOW_POWER 0x12
138 #define C9DOF3_REG_ACC_D_HBW 0x13
139 #define C9DOF3_REG_ACC_BGW_SOFTRESET 0x14
140 #define C9DOF3_REG_ACC_INT_EN_0 0x16
141 #define C9DOF3_REG_ACC_INT_EN_1 0x17
142 #define C9DOF3_REG_ACC_INT_EN_2 0x18
143 #define C9DOF3_REG_ACC_INT_MAP_0 0x19
144 #define C9DOF3_REG_ACC_INT_MAP_1 0x1A
145 #define C9DOF3_REG_ACC_INT_MAP_2 0x1B
146 #define C9DOF3_REG_ACC_INT_SRC 0x1E
147 #define C9DOF3_REG_ACC_INT_OUT_CTRL 0x20
148 #define C9DOF3_REG_ACC_INT_RST_LATCH 0x21
149 #define C9DOF3_REG_ACC_INT_0 0x22
150 #define C9DOF3_REG_ACC_INT_1 0x23
151 #define C9DOF3_REG_ACC_INT_2 0x24
152 #define C9DOF3_REG_ACC_INT_3 0x25
153 #define C9DOF3_REG_ACC_INT_4 0x26
154 #define C9DOF3_REG_ACC_INT_5 0x27
155 #define C9DOF3_REG_ACC_INT_6 0x28
156 #define C9DOF3_REG_ACC_INT_7 0x29
157 #define C9DOF3_REG_ACC_INT_8 0x2A
158 #define C9DOF3_REG_ACC_INT_9 0x2B
159 #define C9DOF3_REG_ACC_INT_A 0x2C
160 #define C9DOF3_REG_ACC_INT_B 0x2D
161 #define C9DOF3_REG_ACC_INT_C 0x2E
162 #define C9DOF3_REG_ACC_INT_D 0x2F
163 #define C9DOF3_REG_ACC_FIFO_CONFIG_0 0x30
164 #define C9DOF3_REG_ACC_PMU_SELF_TEST 0x32
165 #define C9DOF3_REG_ACC_TRIM_NVM_CTRL 0x33
166 #define C9DOF3_REG_ACC_BGW_SPI3_WDT 0x34
167 #define C9DOF3_REG_ACC_OFC_CTRL 0x36
168 #define C9DOF3_REG_ACC_OFC_SETTING 0x37
169 #define C9DOF3_REG_ACC_OFC_OFFSET_X 0x38
170 #define C9DOF3_REG_ACC_OFC_OFFSET_Y 0x39
171 #define C9DOF3_REG_ACC_OFC_OFFSET_Z 0x3A
172 #define C9DOF3_REG_ACC_TRIM_GPO 0x3B
173 #define C9DOF3_REG_ACC_TRIM_GP1 0x3C
174 #define C9DOF3_REG_ACC_FIFO_CONFIG_1 0x3E
175 #define C9DOF3_REG_ACC_FIFO_DATA 0x3F
176 
182 #define C9DOF3_REG_GYRO_WHO_AM_I 0x00
183 #define C9DOF3_REG_GYRO_DATA_START 0x02
184 #define C9DOF3_REG_GYRO_RATE_X_LSB 0x02
185 #define C9DOF3_REG_GYRO_RATE_X_MSB 0x03
186 #define C9DOF3_REG_GYRO_RATE_Y_LSB 0x04
187 #define C9DOF3_REG_GYRO_RATE_Y_MSB 0x05
188 #define C9DOF3_REG_GYRO_RATE_Z_LSB 0x06
189 #define C9DOF3_REG_GYRO_RATE_Z_MSB 0x07
190 #define C9DOF3_REG_GYRO_INT_STATUS_0 0x09
191 #define C9DOF3_REG_GYRO_INT_STATUS_1 0x0A
192 #define C9DOF3_REG_GYRO_INT_STATUS_2 0x0B
193 #define C9DOF3_REG_GYRO_INT_STATUS_3 0x0C
194 #define C9DOF3_REG_GYRO_FIFO_STATUS 0x0E
195 #define C9DOF3_REG_GYRO_RANGE 0x0F
196 #define C9DOF3_REG_GYRO_BW 0x10
197 #define C9DOF3_REG_GYRO_LPM1 0x11
198 #define C9DOF3_REG_GYRO_LPM2 0x12
199 #define C9DOF3_REG_GYRO_RATE_HBW 0x13
200 #define C9DOF3_REG_GYRO_BGW_SOFTRESET 0x14
201 #define C9DOF3_REG_GYRO_INT_EN_0 0x15
202 #define C9DOF3_REG_GYRO_INT_EN_1 0x16
203 #define C9DOF3_REG_GYRO_INT_MAP_0 0x17
204 #define C9DOF3_REG_GYRO_INT_MAP_1 0x18
205 #define C9DOF3_REG_GYRO_INT_MAP_2 0x19
206 #define C9DOF3_REG_GYRO_INT_SRC_1 0x1A
207 #define C9DOF3_REG_GYRO_INT_SRC_2 0x1B
208 #define C9DOF3_REG_GYRO_INT_SRC_3 0x1C
209 #define C9DOF3_REG_GYRO_FIFO_EN 0x1E
210 #define C9DOF3_REG_GYRO_INT_RST_LATCH 0x21
211 #define C9DOF3_REG_GYRO_HIGH_TH_X 0x22
212 #define C9DOF3_REG_GYRO_HIGH_DUR_X 0x23
213 #define C9DOF3_REG_GYRO_HIGH_TH_Y 0x24
214 #define C9DOF3_REG_GYRO_HIGH_DUR_Y 0x25
215 #define C9DOF3_REG_GYRO_HIGH_TH_Z 0x26
216 #define C9DOF3_REG_GYRO_HIGH_DUR_Z 0x27
217 #define C9DOF3_REG_GYRO_SOC 0x31
218 #define C9DOF3_REG_GYRO_A_FOC 0x32
219 #define C9DOF3_REG_GYRO_TRIM_NVM_CTRL 0x33
220 #define C9DOF3_REG_GYRO_BGW_SPI3_WDT 0x34
221 #define C9DOF3_REG_GYRO_OFC1 0x36
222 #define C9DOF3_REG_GYRO_OFC2 0x37
223 #define C9DOF3_REG_GYRO_OFC3 0x38
224 #define C9DOF3_REG_GYRO_OFC4 0x39
225 #define C9DOF3_REG_GYRO_TRIM_GP0 0x3A
226 #define C9DOF3_REG_GYRO_TRIM_GP1 0x3B
227 #define C9DOF3_REG_GYRO_BIST 0x3C
228 #define C9DOF3_REG_GYRO_FIFO_CONFIG_0 0x3D
229 #define C9DOF3_REG_GYRO_FIFO_CONFIG_1 0x3E
230 
236 #define C9DOF3_REG_MAG_WHO_AM_I 0x40
237 #define C9DOF3_REG_MAG_DATA_START 0x42
238 #define C9DOF3_REG_MAG_XOUT_LSB 0x42
239 #define C9DOF3_REG_MAG_XOUT_MSB 0x43
240 #define C9DOF3_REG_MAG_YOUT_LSB 0x44
241 #define C9DOF3_REG_MAG_YOUT_MSB 0x45
242 #define C9DOF3_REG_MAG_ZOUT_LSB 0x46
243 #define C9DOF3_REG_MAG_ZOUT_MSB 0x47
244 #define C9DOF3_REG_MAG_ROUT_LSB 0x48
245 #define C9DOF3_REG_MAG_ROUT_MSB 0x49
246 #define C9DOF3_REG_MAG_INT_STATUS 0x4A
247 #define C9DOF3_REG_MAG_PWR_CNTL1 0x4B
248 #define C9DOF3_REG_MAG_PWR_CNTL2 0x4C
249 #define C9DOF3_REG_MAG_INT_EN_1 0x4D
250 #define C9DOF3_REG_MAG_INT_EN_2 0x4E
251 #define C9DOF3_REG_MAG_LOW_THS 0x4F
252 #define C9DOF3_REG_MAG_HIGH_THS 0x50
253 #define C9DOF3_REG_MAG_REP_XY 0x51
254 #define C9DOF3_REG_MAG_REP_Z 0x52
255 
261 #define C9DOF3_ACC_RANGE_2 0x03
262 #define C9DOF3_ACC_RANGE_4 0x05
263 #define C9DOF3_ACC_RANGE_8 0x08
264 #define C9DOF3_ACC_RANGE_16 0x0C
265 
271 #define C9DOF3_ACC_PMU_BW_7_81 0x08
272 #define C9DOF3_ACC_PMU_BW_15_63 0x09
273 #define C9DOF3_ACC_PMU_BW_31_25 0x0A
274 #define C9DOF3_ACC_PMU_BW_62_5 0x0B
275 #define C9DOF3_ACC_PMU_BW_125 0x0C
276 #define C9DOF3_ACC_PMU_BW_250 0x0D
277 #define C9DOF3_ACC_PMU_BW_500 0x0E
278 #define C9DOF3_ACC_PMU_BW_1000 0x0F
279 
285 #define C9DOF3_ACC_PMU_LPW_MODE_NOMAL 0x00
286 #define C9DOF3_ACC_PMU_LPW_MODE_DEEP_SUSPEND 0x20
287 #define C9DOF3_ACC_PMU_LPW_MODE_LOW_POWER 0x40
288 #define C9DOF3_ACC_PMU_LPW_MODE_SUSPEND 0x80
289 
295 #define C9DOF3_ACC_PMU_LPW_SLEEP_DUR_0_5MS 0x00
296 #define C9DOF3_ACC_PMU_LPW_SLEEP_DUR_1MS 0x0C
297 #define C9DOF3_ACC_PMU_LPW_SLEEP_DUR_2MS 0x0E
298 #define C9DOF3_ACC_PMU_LPW_SLEEP_DUR_4MS 0x10
299 #define C9DOF3_ACC_PMU_LPW_SLEEP_DUR_6MS 0x12
300 #define C9DOF3_ACC_PMU_LPW_SLEEP_DUR_10MS 0x14
301 #define C9DOF3_ACC_PMU_LPW_SLEEP_DUR_25MS 0x16
302 #define C9DOF3_ACC_PMU_LPW_SLEEP_DUR_50MS 0x18
303 #define C9DOF3_ACC_PMU_LPW_SLEEP_DUR_100MS 0x1A
304 #define C9DOF3_ACC_PMU_LPW_SLEEP_DUR_500MS 0x1C
305 #define C9DOF3_ACC_PMU_LPW_SLEEP_DUR_1S 0x1E
306 
312 #define C9DOF3_GYRO_LPM1_MODE_NOMAL 0x00
313 #define C9DOF3_GYRO_LPM1_MODE_DEEP_SUSPEND 0x01
314 #define C9DOF3_GYRO_LPM1_MODE_SUSPEND 0x10
315 
321 #define C9DOF3_GYRO_RANGE_16_4 0x00
322 #define C9DOF3_GYRO_RANGE_32_8 0x01
323 #define C9DOF3_GYRO_RANGE_65_6 0x02
324 #define C9DOF3_GYRO_RANGE_131_2 0x03
325 #define C9DOF3_GYRO_RANGE_262_4 0x04
326 
332 #define C9DOF3_GYRO_BW_32 0x07
333 #define C9DOF3_GYRO_BW_64 0x06
334 #define C9DOF3_GYRO_BW_12 0x05
335 #define C9DOF3_GYRO_BW_23 0x04
336 #define C9DOF3_GYRO_BW_47 0x03
337 #define C9DOF3_GYRO_BW_116 0x02
338 #define C9DOF3_GYRO_BW_230 0x01
339 #define C9DOF3_GYRO_BW_523 0x00
340 
346 #define C9DOF3_GYRO_LPM1_SLEEP_DUR_2MS 0x00
347 #define C9DOF3_GYRO_LPM1_SLEEP_DUR_4MS 0x01
348 #define C9DOF3_GYRO_LPM1_SLEEP_DUR_5MS 0x02
349 #define C9DOF3_GYRO_LPM1_SLEEP_DUR_8MS 0x03
350 #define C9DOF3_GYRO_LPM1_SLEEP_DUR_10MS 0x04
351 #define C9DOF3_GYRO_LPM1_SLEEP_DUR_15MS 0x05
352 #define C9DOF3_GYRO_LPM1_SLEEP_DUR_18MS 0x06
353 #define C9DOF3_GYRO_LPM1_SLEEP_DUR_20MS 0x07
354 
360 #define C9DOF3_MAG_POW_CTL_SOFT_RESET 0x82
361 #define C9DOF3_MAG_POW_CTL_SLEEP_MODE 0x01
362 #define C9DOF3_MAG_POW_CTL_SUSPEND_MODE 0x00
363 
369 #define C9DOF3_MAG_DATA_RATE_10 0x00
370 #define C9DOF3_MAG_DATA_RATE_2 0x08
371 #define C9DOF3_MAG_DATA_RATE_6 0x10
372 #define C9DOF3_MAG_DATA_RATE_8 0x18
373 #define C9DOF3_MAG_DATA_RATE_15 0x20
374 #define C9DOF3_MAG_DATA_RATE_20 0x28
375 #define C9DOF3_MAG_DATA_RATE_25 0x30
376 #define C9DOF3_MAG_DATA_RATE_30 0x38
377 
383 #define C9DOF3_MAG_XY_REPET_9 0x04
384 #define C9DOF3_MAG_Z_REPET_15 0x0F
385 
391 #define C9DOF3_BIT_MASK_SPI_CMD_WRITE 0x7F
392 #define C9DOF3_BIT_MASK_SPI_CMD_READ 0x80
393 #define C9DOF3_SPI_COMMUNICATION_DUMMY 0x00
394 
400 #define C9DOF3_ID_CHECK_ERROR 0x00
401 #define C9DOF3_ID_CHECK_SUCCESS 0x01
402 #define C9DOF3_ACC_COMM_ERROR 0x00
403 #define C9DOF3_ACC_COMM_SUCCESS 0x04
404 #define C9DOF3_GYRO_COMM_ERROR 0x00
405 #define C9DOF3_GYRO_COMM_SUCCESS 0x02
406 #define C9DOF3_MAG_COMM_ERROR 0x00
407 #define C9DOF3_MAG_COMM_SUCCESS 0x01
408 
414 #define COMMUNICATION_MODE_ACCEL 0x01
415 #define COMMUNICATION_MODE_GYRO 0x02
416 #define COMMUNICATION_MODE_MAG 0x03
417 
423 #define C9DOF3_PIN_STATE_LOW 0x00
424 #define C9DOF3_PIN_STATE_HIGH 0x01
425  // End group macro
428 // --------------------------------------------------------------- PUBLIC TYPES
438 typedef enum
439 {
443 
448 typedef void ( *c9dof3_master_io_t )( struct c9dof3_s*, uint8_t, uint8_t*, uint8_t );
453 typedef struct c9dof3_s
454 {
455  // Output pins
456 
457  digital_out_t cs1;
458  digital_out_t cs2;
459  digital_out_t cs3;
460 
461  // Input pins
462 
463  digital_in_t int_pin;
464 
465  // Modules
466 
467  i2c_master_t i2c;
468  spi_master_t spi;
470  // ctx variable
471 
472  uint8_t slave_address;
473  pin_name_t chip_select;
479  uint8_t sel_mode;
480 
482 
486 typedef struct
487 {
488  // Communication gpio pins
489 
490  pin_name_t scl;
491  pin_name_t sda;
492  pin_name_t miso;
493  pin_name_t mosi;
494  pin_name_t sck;
495  pin_name_t cs1;
496  pin_name_t cs2;
497  pin_name_t cs3;
498 
499  // Additional gpio pins
500 
501  pin_name_t int_pin;
502 
503  // static variable
504 
505  uint32_t i2c_speed;
506  uint8_t i2c_address;
508  uint32_t spi_speed;
509  spi_master_mode_t spi_mode;
510  spi_master_chip_select_polarity_t cs_polarity;
514 } c9dof3_cfg_t;
515 
516 typedef struct
517 {
518  int16_t x;
519  int16_t y;
520  int16_t z;
521 }
523 
524 typedef struct
525 {
526  int16_t x;
527  int16_t y;
528  int16_t z;
529 }
531 
532 typedef struct
533 {
534  int16_t x;
535  int16_t y;
536  int16_t z;
537 }
539 
544 typedef enum
545 {
547  C9DOF3_ERROR = -1
548 
550  // End types group
552 // ----------------------------------------------- PUBLIC FUNCTION DECLARATIONS
558 #ifdef __cplusplus
559 extern "C"{
560 #endif
561 
571 
587 
597 
619 
630 void c9dof3_generic_write ( c9dof3_t *ctx, uint8_t reg, uint8_t *data_buf, uint8_t len );
631 
642 void c9dof3_generic_read ( c9dof3_t *ctx, uint8_t reg, uint8_t *data_buf, uint8_t len );
643 
665 
676 
687 
698 
710 
721 
722 #ifdef __cplusplus
723 }
724 #endif
725 #endif // _C9DOF3_H_
726  // End public_function group
729 
730 // ------------------------------------------------------------------------- END
c9dof3_drv_interface_selection
void c9dof3_drv_interface_selection(c9dof3_cfg_t *cfg, c9dof3_drv_t drv_sel)
9DOF 3 driver interface setup function.
c9dof3_cfg_t::i2c_speed
uint32_t i2c_speed
Definition: c9dof3.h:505
c9dof3_cfg_t
Click configuration structure definition.
Definition: c9dof3.h:487
C9DOF3_DRV_SEL_SPI
@ C9DOF3_DRV_SEL_SPI
Definition: c9dof3.h:440
c9dof3_s::i2c
i2c_master_t i2c
Definition: c9dof3.h:467
c9dof3_cfg_t::sck
pin_name_t sck
Definition: c9dof3.h:494
c9dof3_cfg_t::i2c_address
uint8_t i2c_address
Definition: c9dof3.h:506
c9dof3_read_gyro_data
void c9dof3_read_gyro_data(c9dof3_t *ctx, c9dof3_gyro_t *gyro_data)
Read Gyro data function.
c9dof3_read_accel_data
void c9dof3_read_accel_data(c9dof3_t *ctx, c9dof3_accel_t *accel_data)
Read Accel data function.
C9DOF3_OK
@ C9DOF3_OK
Definition: c9dof3.h:546
c9dof3_gyro_t::x
int16_t x
Definition: c9dof3.h:526
c9dof3_s::write_f
c9dof3_master_io_t write_f
Definition: c9dof3.h:476
c9dof3_mag_t
Definition: c9dof3.h:533
c9dof3_cfg_t::drv_sel
c9dof3_drv_t drv_sel
Definition: c9dof3.h:512
c9dof3_drv_t
c9dof3_drv_t
9DOF 3 Click driver selector.
Definition: c9dof3.h:439
c9dof3_get_data
void c9dof3_get_data(c9dof3_t *ctx, c9dof3_accel_t *accel_data, c9dof3_gyro_t *gyro_data, c9dof3_mag_t *mag_data)
Read Accel, Gyro and Mag data function.
C9DOF3_ERROR
@ C9DOF3_ERROR
Definition: c9dof3.h:547
c9dof3_accel_t
Definition: c9dof3.h:517
gyro_data
c9dof3_gyro_t gyro_data
Definition: main.c:39
c9dof3_s::spi
spi_master_t spi
Definition: c9dof3.h:468
c9dof3_cfg_t::int_pin
pin_name_t int_pin
Definition: c9dof3.h:501
c9dof3_check_communication
uint8_t c9dof3_check_communication(c9dof3_t *ctx)
Check communication function.
c9dof3_mag_t::y
int16_t y
Definition: c9dof3.h:535
c9dof3_generic_read
void c9dof3_generic_read(c9dof3_t *ctx, uint8_t reg, uint8_t *data_buf, uint8_t len)
Generic read function.
c9dof3_cfg_t::cs3
pin_name_t cs3
Definition: c9dof3.h:497
c9dof3_cfg_t::spi_mode
spi_master_mode_t spi_mode
Definition: c9dof3.h:509
c9dof3_mag_t::z
int16_t z
Definition: c9dof3.h:536
C9DOF3_DRV_SEL_I2C
@ C9DOF3_DRV_SEL_I2C
Definition: c9dof3.h:441
c9dof3_default_cfg
void c9dof3_default_cfg(c9dof3_t *ctx)
Click Default Configuration function.
c9dof3_gyro_t::z
int16_t z
Definition: c9dof3.h:528
c9dof3_return_value_t
c9dof3_return_value_t
9DOF 3 Click return value data.
Definition: c9dof3.h:545
c9dof3_t
struct c9dof3_s c9dof3_t
Click ctx object definition.
c9dof3_s::cs3
digital_out_t cs3
Definition: c9dof3.h:459
c9dof3_master_io_t
void(* c9dof3_master_io_t)(struct c9dof3_s *, uint8_t, uint8_t *, uint8_t)
9DOF 3 Click driver interface.
Definition: c9dof3.h:448
c9dof3_cfg_t::mosi
pin_name_t mosi
Definition: c9dof3.h:493
c9dof3_mag_t::x
int16_t x
Definition: c9dof3.h:534
c9dof3_s
Click ctx object definition.
Definition: c9dof3.h:454
c9dof3_cfg_t::cs1
pin_name_t cs1
Definition: c9dof3.h:495
c9dof3_init
C9DOF3_RETVAL c9dof3_init(c9dof3_t *ctx, c9dof3_cfg_t *cfg)
Initialization function.
c9dof3_gyro_t
Definition: c9dof3.h:525
c9dof3_cfg_t::cs_polarity
spi_master_chip_select_polarity_t cs_polarity
Definition: c9dof3.h:510
c9dof3_s::chip_select
pin_name_t chip_select
Definition: c9dof3.h:473
c9dof3_s::int_pin
digital_in_t int_pin
Definition: c9dof3.h:463
c9dof3_s::cs2
digital_out_t cs2
Definition: c9dof3.h:458
c9dof3_cfg_t::scl
pin_name_t scl
Definition: c9dof3.h:490
c9dof3_generic_write
void c9dof3_generic_write(c9dof3_t *ctx, uint8_t reg, uint8_t *data_buf, uint8_t len)
Generic write function.
c9dof3_cfg_setup
void c9dof3_cfg_setup(c9dof3_cfg_t *cfg)
Config Object Initialization function.
c9dof3_gyro_t::y
int16_t y
Definition: c9dof3.h:527
c9dof3_s::read_f
c9dof3_master_io_t read_f
Definition: c9dof3.h:477
c9dof3_cfg_t::spi_speed
uint32_t spi_speed
Definition: c9dof3.h:508
c9dof3_cfg_t::cs2
pin_name_t cs2
Definition: c9dof3.h:496
c9dof3_cfg_t::miso
pin_name_t miso
Definition: c9dof3.h:492
c9dof3_s::slave_address
uint8_t slave_address
Definition: c9dof3.h:472
c9dof3_s::drv_sel
c9dof3_drv_t drv_sel
Definition: c9dof3.h:474
c9dof3_accel_t::z
int16_t z
Definition: c9dof3.h:520
c9dof3_read_mag_data
void c9dof3_read_mag_data(c9dof3_t *ctx, c9dof3_mag_t *mag_data)
Read Mag data function.
c9dof3_s::cs1
digital_out_t cs1
Definition: c9dof3.h:457
c9dof3_check_interrupt
uint8_t c9dof3_check_interrupt(c9dof3_t *ctx)
Check interrupt status function.
c9dof3_cfg_t::sda
pin_name_t sda
Definition: c9dof3.h:491
c9dof3_accel_t::x
int16_t x
Definition: c9dof3.h:518
c9dof3_s::sel_mode
uint8_t sel_mode
Definition: c9dof3.h:479
mag_data
c9dof3_mag_t mag_data
Definition: main.c:40
C9DOF3_RETVAL
#define C9DOF3_RETVAL
Definition: c9dof3.h:88
accel_data
c9dof3_accel_t accel_data
Definition: main.c:38
c9dof3_accel_t::y
int16_t y
Definition: c9dof3.h:519