compass7  2.0.0.0
compass7.h
Go to the documentation of this file.
1 /****************************************************************************
2 ** Copyright (C) 2020 MikroElektronika d.o.o.
3 ** Contact: https://www.mikroe.com/contact
4 **
5 ** Permission is hereby granted, free of charge, to any person obtaining a copy
6 ** of this software and associated documentation files (the "Software"), to deal
7 ** in the Software without restriction, including without limitation the rights
8 ** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 ** copies of the Software, and to permit persons to whom the Software is
10 ** furnished to do so, subject to the following conditions:
11 ** The above copyright notice and this permission notice shall be
12 ** included in all copies or substantial portions of the Software.
13 **
14 ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15 ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16 ** OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17 ** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18 ** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
19 ** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20 ** USE OR OTHER DEALINGS IN THE SOFTWARE.
21 ****************************************************************************/
22 
28 #ifndef COMPASS7_H
29 #define COMPASS7_H
30 
31 #ifdef __cplusplus
32 extern "C"{
33 #endif
34 
35 #include "mikrosdk_version.h"
36 
37 #ifdef __GNUC__
38 #if mikroSDK_GET_VERSION < 20800ul
39 #include "rcu_delays.h"
40 #else
41 #include "delays.h"
42 #endif
43 #endif
44 
45 #include "drv_digital_out.h"
46 #include "drv_digital_in.h"
47 #include "drv_i2c_master.h"
48 
69 #define COMPASS7_REG_XOUT0 0x00
70 #define COMPASS7_REG_XOUT1 0x01
71 #define COMPASS7_REG_YOUT0 0x02
72 #define COMPASS7_REG_YOUT1 0x03
73 #define COMPASS7_REG_ZOUT0 0x04
74 #define COMPASS7_REG_ZOUT1 0x05
75 #define COMPASS7_REG_XOUT2 0x06
76 #define COMPASS7_REG_YOUT2 0x07
77 #define COMPASS7_REG_ZOUT2 0x08
78 #define COMPASS7_REG_TOUT 0x09
79 #define COMPASS7_REG_TPH0 0x0A
80 #define COMPASS7_REG_TPH1 0x0B
81 #define COMPASS7_REG_TU 0x0C
82 #define COMPASS7_REG_STATUS1 0x18
83 #define COMPASS7_REG_STATUS0 0x19
84 #define COMPASS7_REG_ODR 0x1A
85 #define COMPASS7_REG_CONTROL0 0x1B
86 #define COMPASS7_REG_CONTROL1 0x1C
87 #define COMPASS7_REG_CONTROL2 0x1D
88 #define COMPASS7_REG_ST_X_TH 0x1E
89 #define COMPASS7_REG_ST_Y_TH 0x1F
90 #define COMPASS7_REG_ST_Z_TH 0x20
91 #define COMPASS7_REG_ST_X 0x27
92 #define COMPASS7_REG_ST_Y 0x28
93 #define COMPASS7_REG_ST_Z 0x29
94 #define COMPASS7_REG_PRODUCT_ID 0x39
95  // compass7_reg
97 
112 #define COMPASS7_STATUS1_MEAS_T_DONE 0x80
113 #define COMPASS7_STATUS1_MEAS_M_DONE 0x40
114 #define COMPASS7_STATUS1_SAT_SENSOR 0x20
115 #define COMPASS7_STATUS1_OTP_READ_DONE 0x10
116 #define COMPASS7_STATUS1_ST_FAIL 0x08
117 #define COMPASS7_STATUS1_MDT_FLAG_INT 0x04
118 #define COMPASS7_STATUS1_MEAS_T_DONE_INT 0x02
119 #define COMPASS7_STATUS1_MEAS_M_DONE_INT 0x01
120 
125 #define COMPASS7_CONTROL0_CMM_FREQ_EN 0x80
126 #define COMPASS7_CONTROL0_AUTO_ST_EN 0x40
127 #define COMPASS7_CONTROL0_AUTO_SR_EN 0x20
128 #define COMPASS7_CONTROL0_DO_RESET 0x10
129 #define COMPASS7_CONTROL0_DO_SET 0x08
130 #define COMPASS7_CONTROL0_START_MDT 0x04
131 #define COMPASS7_CONTROL0_TAKE_MEAS_T 0x02
132 #define COMPASS7_CONTROL0_TAKE_MEAS_M 0x01
133 
138 #define COMPASS7_CONTROL1_SW_RESET 0x80
139 #define COMPASS7_CONTROL1_ST_ENM 0x40
140 #define COMPASS7_CONTROL1_ST_ENP 0x20
141 #define COMPASS7_CONTROL1_Z_INHIBIT 0x10
142 #define COMPASS7_CONTROL1_Y_INHIBIT 0x08
143 #define COMPASS7_CONTROL1_X_INHIBIT 0x04
144 #define COMPASS7_CONTROL1_BW_6p6MS 0x00
145 #define COMPASS7_CONTROL1_BW_3p5MS 0x01
146 #define COMPASS7_CONTROL1_BW_2p0MS 0x02
147 #define COMPASS7_CONTROL1_BW_1p2MS 0x03
148 #define COMPASS7_CONTROL1_BW_BIT_MASK 0x03
149 
154 #define COMPASS7_CONTROL2_HPOWER 0x80
155 #define COMPASS7_CONTROL2_INT_MEAS_DONE_EN 0x40
156 #define COMPASS7_CONTROL2_INT_MDT_EN 0x20
157 #define COMPASS7_CONTROL2_CMM_EN 0x10
158 #define COMPASS7_CONTROL2_EN_PRD_SET 0x08
159 #define COMPASS7_CONTROL2_PRD_SET_1_SMPL 0x00
160 #define COMPASS7_CONTROL2_PRD_SET_25_SMPL 0x01
161 #define COMPASS7_CONTROL2_PRD_SET_75_SMPL 0x02
162 #define COMPASS7_CONTROL2_PRD_SET_100_SMPL 0x03
163 #define COMPASS7_CONTROL2_PRD_SET_250_SMPL 0x04
164 #define COMPASS7_CONTROL2_PRD_SET_500_SMPL 0x05
165 #define COMPASS7_CONTROL2_PRD_SET_1000_SMPL 0x06
166 #define COMPASS7_CONTROL2_PRD_SET_2000_SMPL 0x07
167 #define COMPASS7_CONTROL2_PRD_SET_BIT_MASK 0x07
168 
173 #define COMPASS7_ODR_DISABLE 0
174 #define COMPASS7_ODR_1HZ 1
175 #define COMPASS7_ODR_2HZ 2
176 #define COMPASS7_ODR_5HZ 5
177 #define COMPASS7_ODR_10HZ 10
178 #define COMPASS7_ODR_25HZ 25
179 #define COMPASS7_ODR_50HZ 50
180 #define COMPASS7_ODR_100HZ 100
181 
186 #define COMPASS7_MAGNETIC_OFFSET 0x080000l
187 #define COMPASS7_MAGNETIC_RESOLUTION 0.0625
188 #define COMPASS7_MILLIGAUSS_TO_GAUSS 0.001
189 #define COMPASS7_TEMPERATURE_OFFSET 75
190 #define COMPASS7_TEMPERATURE_RESOLUTION 0.8
191 #define COMPASS7_TIMEOUT 2000
192 
197 #define COMPASS7_MEAS_SINGLE_T 0
198 #define COMPASS7_MEAS_SINGLE_M 1
199 #define COMPASS7_MEAS_CONTINUOUS_M_1HZ 2
200 #define COMPASS7_MEAS_CONTINUOUS_M_2HZ 3
201 #define COMPASS7_MEAS_CONTINUOUS_M_5HZ 4
202 #define COMPASS7_MEAS_CONTINUOUS_M_10HZ 5
203 #define COMPASS7_MEAS_CONTINUOUS_M_25HZ 6
204 #define COMPASS7_MEAS_CONTINUOUS_M_50HZ 7
205 #define COMPASS7_MEAS_CONTINUOUS_M_100HZ 8
206 
211 #define COMPASS7_PRODUCT_ID 0x10
212 
218 #define COMPASS7_DEVICE_ADDRESS 0x30
219  // compass7_set
221 
236 #define COMPASS7_MAP_MIKROBUS( cfg, mikrobus ) \
237  cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
238  cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA );
239  // compass7_map // compass7
242 
247 typedef struct
248 {
249  // Modules
250  i2c_master_t i2c;
252  // I2C slave address
253  uint8_t slave_address;
255 } compass7_t;
256 
261 typedef struct
262 {
263  pin_name_t scl;
264  pin_name_t sda;
266  uint32_t i2c_speed;
267  uint8_t i2c_address;
270 
275 typedef struct
276 {
277  float x_axis;
278  float y_axis;
279  float z_axis;
280 
282 
287 typedef enum
288 {
290  COMPASS7_ERROR = -1
291 
293 
310 
325 
339 
354 err_t compass7_generic_write ( compass7_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len );
355 
370 err_t compass7_generic_read ( compass7_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len );
371 
384 err_t compass7_write_register ( compass7_t *ctx, uint8_t reg, uint8_t data_in );
385 
398 err_t compass7_read_register ( compass7_t *ctx, uint8_t reg, uint8_t *data_out );
399 
411 
423 
443 err_t compass7_set_measurement_mode ( compass7_t *ctx, uint8_t mode );
444 
459 
471 err_t compass7_get_temperature ( compass7_t *ctx, float *temperature );
472 
473 #ifdef __cplusplus
474 }
475 #endif
476 #endif // COMPASS7_H
477  // compass7
479 
480 // ------------------------------------------------------------------------ END
compass7_magnetic_flux_t::x_axis
float x_axis
Definition: compass7.h:277
compass7_generic_read
err_t compass7_generic_read(compass7_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len)
Compass 7 I2C reading function.
compass7_cfg_t
Compass 7 Click configuration object.
Definition: compass7.h:262
compass7_default_cfg
err_t compass7_default_cfg(compass7_t *ctx)
Compass 7 default configuration function.
compass7_cfg_t::sda
pin_name_t sda
Definition: compass7.h:264
compass7_return_value_t
compass7_return_value_t
Compass 7 Click return value data.
Definition: compass7.h:288
compass7_get_temperature
err_t compass7_get_temperature(compass7_t *ctx, float *temperature)
Compass 7 get temperature function.
compass7_check_communication
err_t compass7_check_communication(compass7_t *ctx)
Compass 7 check communication function.
compass7_t::i2c
i2c_master_t i2c
Definition: compass7.h:250
COMPASS7_OK
@ COMPASS7_OK
Definition: compass7.h:289
compass7_write_register
err_t compass7_write_register(compass7_t *ctx, uint8_t reg, uint8_t data_in)
Compass 7 write register function.
compass7_magnetic_flux_t::z_axis
float z_axis
Definition: compass7.h:279
compass7_soft_reset
err_t compass7_soft_reset(compass7_t *ctx)
Compass 7 soft reset function.
compass7_init
err_t compass7_init(compass7_t *ctx, compass7_cfg_t *cfg)
Compass 7 initialization function.
compass7_generic_write
err_t compass7_generic_write(compass7_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len)
Compass 7 I2C writing function.
compass7_get_magnetic_flux
err_t compass7_get_magnetic_flux(compass7_t *ctx, compass7_magnetic_flux_t *flux)
Compass 7 get magnetic flux function.
compass7_cfg_setup
void compass7_cfg_setup(compass7_cfg_t *cfg)
Compass 7 configuration object setup function.
compass7_magnetic_flux_t::y_axis
float y_axis
Definition: compass7.h:278
compass7_read_register
err_t compass7_read_register(compass7_t *ctx, uint8_t reg, uint8_t *data_out)
Compass 7 read register function.
compass7_t::slave_address
uint8_t slave_address
Definition: compass7.h:253
compass7_cfg_t::i2c_speed
uint32_t i2c_speed
Definition: compass7.h:266
compass7_cfg_t::i2c_address
uint8_t i2c_address
Definition: compass7.h:267
compass7_magnetic_flux_t
Compass 7 magnetic flux data object.
Definition: compass7.h:276
compass7_t
Compass 7 Click context object.
Definition: compass7.h:248
compass7_set_measurement_mode
err_t compass7_set_measurement_mode(compass7_t *ctx, uint8_t mode)
Compass 7 set measurement mode function.
COMPASS7_ERROR
@ COMPASS7_ERROR
Definition: compass7.h:290
compass7_cfg_t::scl
pin_name_t scl
Definition: compass7.h:263