Da Vinci Firmware 1
Firmware for the DaVinci-M rocket avionics board.
Loading...
Searching...
No Matches
lis2mdl_reg.h
Go to the documentation of this file.
1
21/* Define to prevent recursive inclusion -------------------------------------*/
22#ifndef LIS2MDL_REGS_H
23#define LIS2MDL_REGS_H
24
25#ifdef __cplusplus
26extern "C" {
27#endif
28
29/* Includes ------------------------------------------------------------------*/
30#include <stdint.h>
31#include <stddef.h>
32#include <math.h>
33
44#ifndef DRV_BYTE_ORDER
45#ifndef __BYTE_ORDER__
46
47#define DRV_LITTLE_ENDIAN 1234
48#define DRV_BIG_ENDIAN 4321
49
53//#define DRV_BYTE_ORDER DRV_BIG_ENDIAN
54#define DRV_BYTE_ORDER DRV_LITTLE_ENDIAN
55
56#else /* defined __BYTE_ORDER__ */
57
58#define DRV_LITTLE_ENDIAN __ORDER_LITTLE_ENDIAN__
59#define DRV_BIG_ENDIAN __ORDER_BIG_ENDIAN__
60#define DRV_BYTE_ORDER __BYTE_ORDER__
61
62#endif /* __BYTE_ORDER__*/
63#endif /* DRV_BYTE_ORDER */
64
75#ifndef MEMS_SHARED_TYPES
76#define MEMS_SHARED_TYPES
77
78typedef struct
79{
80#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
81 uint8_t bit0 : 1;
82 uint8_t bit1 : 1;
83 uint8_t bit2 : 1;
84 uint8_t bit3 : 1;
85 uint8_t bit4 : 1;
86 uint8_t bit5 : 1;
87 uint8_t bit6 : 1;
88 uint8_t bit7 : 1;
89#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
90 uint8_t bit7 : 1;
91 uint8_t bit6 : 1;
92 uint8_t bit5 : 1;
93 uint8_t bit4 : 1;
94 uint8_t bit3 : 1;
95 uint8_t bit2 : 1;
96 uint8_t bit1 : 1;
97 uint8_t bit0 : 1;
98#endif /* DRV_BYTE_ORDER */
99} bitwise_t;
100
101#define PROPERTY_DISABLE (0U)
102#define PROPERTY_ENABLE (1U)
103
112typedef int32_t (*stmdev_write_ptr)(void *, uint8_t, const uint8_t *, uint16_t);
113typedef int32_t (*stmdev_read_ptr)(void *, uint8_t, uint8_t *, uint16_t);
114typedef void (*stmdev_mdelay_ptr)(uint32_t millisec);
115
116typedef struct
117{
124 void *handle;
126
132#endif /* MEMS_SHARED_TYPES */
133
134#ifndef MEMS_UCF_SHARED_TYPES
135#define MEMS_UCF_SHARED_TYPES
136
148typedef struct
149{
150 uint8_t address;
151 uint8_t data;
152} ucf_line_t;
153
159#endif /* MEMS_UCF_SHARED_TYPES */
160
172#define LIS2MDL_I2C_ADD 0x3DU
173
175#define LIS2MDL_ID 0x40U
176
182#define LIS2MDL_OFFSET_X_REG_L 0x45U
183#define LIS2MDL_OFFSET_X_REG_H 0x46U
184#define LIS2MDL_OFFSET_Y_REG_L 0x47U
185#define LIS2MDL_OFFSET_Y_REG_H 0x48U
186#define LIS2MDL_OFFSET_Z_REG_L 0x49U
187#define LIS2MDL_OFFSET_Z_REG_H 0x4AU
188#define LIS2MDL_WHO_AM_I 0x4FU
189#define LIS2MDL_CFG_REG_A 0x60U
190typedef struct
191{
192#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
193 uint8_t md : 2;
194 uint8_t odr : 2;
195 uint8_t lp : 1;
196 uint8_t soft_rst : 1;
197 uint8_t reboot : 1;
198 uint8_t comp_temp_en : 1;
199#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
200 uint8_t comp_temp_en : 1;
201 uint8_t reboot : 1;
202 uint8_t soft_rst : 1;
203 uint8_t lp : 1;
204 uint8_t odr : 2;
205 uint8_t md : 2;
206#endif /* DRV_BYTE_ORDER */
208
209#define LIS2MDL_CFG_REG_B 0x61U
210typedef struct
211{
212#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
213 uint8_t lpf : 1;
214 uint8_t set_rst : 2; /* OFF_CANC + Set_FREQ */
215 uint8_t int_on_dataoff : 1;
216 uint8_t off_canc_one_shot : 1;
217 uint8_t not_used_01 : 3;
218#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
219 uint8_t not_used_01 : 3;
220 uint8_t off_canc_one_shot : 1;
221 uint8_t int_on_dataoff : 1;
222 uint8_t set_rst : 2; /* OFF_CANC + Set_FREQ */
223 uint8_t lpf : 1;
224#endif /* DRV_BYTE_ORDER */
226
227#define LIS2MDL_CFG_REG_C 0x62U
228typedef struct
229{
230#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
231 uint8_t drdy_on_pin : 1;
232 uint8_t self_test : 1;
233 uint8_t _4wspi : 1;
234 uint8_t ble : 1;
235 uint8_t bdu : 1;
236 uint8_t i2c_dis : 1;
237 uint8_t int_on_pin : 1;
238 uint8_t not_used_02 : 1;
239#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
240 uint8_t not_used_02 : 1;
241 uint8_t int_on_pin : 1;
242 uint8_t i2c_dis : 1;
243 uint8_t bdu : 1;
244 uint8_t ble : 1;
245 uint8_t _4wspi : 1;
246 uint8_t self_test : 1;
247 uint8_t drdy_on_pin : 1;
248#endif /* DRV_BYTE_ORDER */
250
251#define LIS2MDL_INT_CRTL_REG 0x63U
252typedef struct
253{
254#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
255 uint8_t ien : 1;
256 uint8_t iel : 1;
257 uint8_t iea : 1;
258 uint8_t not_used_01 : 2;
259 uint8_t zien : 1;
260 uint8_t yien : 1;
261 uint8_t xien : 1;
262#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
263 uint8_t xien : 1;
264 uint8_t yien : 1;
265 uint8_t zien : 1;
266 uint8_t not_used_01 : 2;
267 uint8_t iea : 1;
268 uint8_t iel : 1;
269 uint8_t ien : 1;
270#endif /* DRV_BYTE_ORDER */
272
273#define LIS2MDL_INT_SOURCE_REG 0x64U
274typedef struct
275{
276#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
277 uint8_t _int : 1;
278 uint8_t mroi : 1;
279 uint8_t n_th_s_z : 1;
280 uint8_t n_th_s_y : 1;
281 uint8_t n_th_s_x : 1;
282 uint8_t p_th_s_z : 1;
283 uint8_t p_th_s_y : 1;
284 uint8_t p_th_s_x : 1;
285#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
286 uint8_t p_th_s_x : 1;
287 uint8_t p_th_s_y : 1;
288 uint8_t p_th_s_z : 1;
289 uint8_t n_th_s_x : 1;
290 uint8_t n_th_s_y : 1;
291 uint8_t n_th_s_z : 1;
292 uint8_t mroi : 1;
293 uint8_t _int : 1;
294#endif /* DRV_BYTE_ORDER */
296
297#define LIS2MDL_INT_THS_L_REG 0x65U
298#define LIS2MDL_INT_THS_H_REG 0x66U
299#define LIS2MDL_STATUS_REG 0x67U
300typedef struct
301{
302#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
303 uint8_t xda : 1;
304 uint8_t yda : 1;
305 uint8_t zda : 1;
306 uint8_t zyxda : 1;
307 uint8_t _xor : 1;
308 uint8_t yor : 1;
309 uint8_t zor : 1;
310 uint8_t zyxor : 1;
311#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
312 uint8_t zyxor : 1;
313 uint8_t zor : 1;
314 uint8_t yor : 1;
315 uint8_t _xor : 1;
316 uint8_t zyxda : 1;
317 uint8_t zda : 1;
318 uint8_t yda : 1;
319 uint8_t xda : 1;
320#endif /* DRV_BYTE_ORDER */
322
323#define LIS2MDL_OUTX_L_REG 0x68U
324#define LIS2MDL_OUTX_H_REG 0x69U
325#define LIS2MDL_OUTY_L_REG 0x6AU
326#define LIS2MDL_OUTY_H_REG 0x6BU
327#define LIS2MDL_OUTZ_L_REG 0x6CU
328#define LIS2MDL_OUTZ_H_REG 0x6DU
329#define LIS2MDL_TEMP_OUT_L_REG 0x6EU
330#define LIS2MDL_TEMP_OUT_H_REG 0x6FU
331
344typedef union
345{
353 uint8_t byte;
355
361#ifndef __weak
362#define __weak __attribute__((weak))
363#endif /* __weak */
364
365/*
366 * These are the basic platform dependent I/O routines to read
367 * and write device registers connected on a standard bus.
368 * The driver keeps offering a default implementation based on function
369 * pointers to read/write routines for backward compatibility.
370 * The __weak directive allows the final application to overwrite
371 * them with a custom implementation.
372 */
373
374int32_t lis2mdl_read_reg(const stmdev_ctx_t *ctx, uint8_t reg,
375 uint8_t *data,
376 uint16_t len);
377int32_t lis2mdl_write_reg(const stmdev_ctx_t *ctx, uint8_t reg,
378 uint8_t *data,
379 uint16_t len);
380
381float_t lis2mdl_from_lsb_to_mgauss(int16_t lsb);
382
383float_t lis2mdl_from_lsb_to_celsius(int16_t lsb);
384
385float_t lis2mdl_from_lsb_to_nanotesla(int16_t lsb);
386
387int32_t lis2mdl_mag_user_offset_set(const stmdev_ctx_t *ctx, int16_t *val);
388int32_t lis2mdl_mag_user_offset_get(const stmdev_ctx_t *ctx, int16_t *val);
389
390typedef enum
391{
397 lis2mdl_md_t val);
399 lis2mdl_md_t *val);
400
401typedef enum
402{
408int32_t lis2mdl_data_rate_set(const stmdev_ctx_t *ctx, lis2mdl_odr_t val);
409int32_t lis2mdl_data_rate_get(const stmdev_ctx_t *ctx, lis2mdl_odr_t *val);
410
411typedef enum
412{
416int32_t lis2mdl_power_mode_set(const stmdev_ctx_t *ctx, lis2mdl_lp_t val);
417int32_t lis2mdl_power_mode_get(const stmdev_ctx_t *ctx, lis2mdl_lp_t *val);
418
419int32_t lis2mdl_offset_temp_comp_set(const stmdev_ctx_t *ctx, uint8_t val);
420int32_t lis2mdl_offset_temp_comp_get(const stmdev_ctx_t *ctx, uint8_t *val);
421
422typedef enum
423{
428 lis2mdl_lpf_t val);
430 lis2mdl_lpf_t *val);
431
432typedef enum
433{
438int32_t lis2mdl_set_rst_mode_set(const stmdev_ctx_t *ctx,
440int32_t lis2mdl_set_rst_mode_get(const stmdev_ctx_t *ctx,
441 lis2mdl_set_rst_t *val);
442
444 uint8_t val);
446 uint8_t *val);
447
448int32_t lis2mdl_block_data_update_set(const stmdev_ctx_t *ctx, uint8_t val);
450 uint8_t *val);
451
452int32_t lis2mdl_mag_data_ready_get(const stmdev_ctx_t *ctx, uint8_t *val);
453
454int32_t lis2mdl_mag_data_ovr_get(const stmdev_ctx_t *ctx, uint8_t *val);
455
456int32_t lis2mdl_magnetic_raw_get(const stmdev_ctx_t *ctx, int16_t *val);
457
458int32_t lis2mdl_temperature_raw_get(const stmdev_ctx_t *ctx, int16_t *val);
459
460int32_t lis2mdl_device_id_get(const stmdev_ctx_t *ctx, uint8_t *buff);
461
462int32_t lis2mdl_reset_set(const stmdev_ctx_t *ctx, uint8_t val);
463int32_t lis2mdl_reset_get(const stmdev_ctx_t *ctx, uint8_t *val);
464
465int32_t lis2mdl_boot_set(const stmdev_ctx_t *ctx, uint8_t val);
466int32_t lis2mdl_boot_get(const stmdev_ctx_t *ctx, uint8_t *val);
467
468int32_t lis2mdl_self_test_set(const stmdev_ctx_t *ctx, uint8_t val);
469int32_t lis2mdl_self_test_get(const stmdev_ctx_t *ctx, uint8_t *val);
470
471typedef enum
472{
476int32_t lis2mdl_data_format_set(const stmdev_ctx_t *ctx, lis2mdl_ble_t val);
477int32_t lis2mdl_data_format_get(const stmdev_ctx_t *ctx,
478 lis2mdl_ble_t *val);
479
480int32_t lis2mdl_status_get(const stmdev_ctx_t *ctx,
482
483typedef enum
484{
492
493int32_t lis2mdl_drdy_on_pin_set(const stmdev_ctx_t *ctx, uint8_t val);
494int32_t lis2mdl_drdy_on_pin_get(const stmdev_ctx_t *ctx, uint8_t *val);
495
496int32_t lis2mdl_int_on_pin_set(const stmdev_ctx_t *ctx, uint8_t val);
497int32_t lis2mdl_int_on_pin_get(const stmdev_ctx_t *ctx, uint8_t *val);
498
499int32_t lis2mdl_int_gen_conf_set(const stmdev_ctx_t *ctx,
501int32_t lis2mdl_int_gen_conf_get(const stmdev_ctx_t *ctx,
503
506
507int32_t lis2mdl_int_gen_threshold_set(const stmdev_ctx_t *ctx, uint16_t val);
509 uint16_t *val);
510
511typedef enum
512{
516int32_t lis2mdl_spi_mode_set(const stmdev_ctx_t *ctx, lis2mdl_sim_t val);
517int32_t lis2mdl_spi_mode_get(const stmdev_ctx_t *ctx, lis2mdl_sim_t *val);
518
519typedef enum
520{
524int32_t lis2mdl_i2c_interface_set(const stmdev_ctx_t *ctx,
526int32_t lis2mdl_i2c_interface_get(const stmdev_ctx_t *ctx,
527 lis2mdl_i2c_dis_t *val);
528
529
530
531int32_t lis2mdl_init(stmdev_ctx_t *ctx);
532
533int32_t lis2mdl_init_2(stmdev_ctx_t *ctx);
534
540#ifdef __cplusplus
541}
542#endif
543
544#endif /* LIS2MDL_REGS_H */
545
546/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
void(* stmdev_mdelay_ptr)(uint32_t millisec)
int32_t(* stmdev_read_ptr)(void *, uint8_t, uint8_t *, uint16_t)
int32_t(* stmdev_write_ptr)(void *, uint8_t, const uint8_t *, uint16_t)
int32_t lis2mdl_offset_temp_comp_get(const stmdev_ctx_t *ctx, uint8_t *val)
Enables the magnetometer temperature compensation.[get].
int32_t lis2mdl_int_gen_threshold_set(const stmdev_ctx_t *ctx, uint16_t val)
User-defined threshold value for xl interrupt event on generator. Data format is the same of output d...
int32_t lis2mdl_mag_user_offset_get(const stmdev_ctx_t *ctx, int16_t *val)
These registers comprise a 3 group of 16-bit number and represent hard-iron offset in order to compen...
int32_t lis2mdl_int_on_pin_set(const stmdev_ctx_t *ctx, uint8_t val)
Interrupt signal on INT_DRDY pin.[set].
int32_t lis2mdl_set_rst_mode_set(const stmdev_ctx_t *ctx, lis2mdl_set_rst_t val)
Reset mode.[set].
int32_t lis2mdl_low_pass_bandwidth_set(const stmdev_ctx_t *ctx, lis2mdl_lpf_t val)
Low-pass bandwidth selection.[set].
int32_t lis2mdl_set_rst_sensor_single_get(const stmdev_ctx_t *ctx, uint8_t *val)
Enables offset cancellation in single measurement mode. The OFF_CANC bit must be set to 1 when enabli...
int32_t lis2mdl_self_test_set(const stmdev_ctx_t *ctx, uint8_t val)
Selftest.[set].
int32_t lis2mdl_init_2(stmdev_ctx_t *ctx)
int32_t lis2mdl_int_gen_threshold_get(const stmdev_ctx_t *ctx, uint16_t *val)
User-defined threshold value for xl interrupt event on generator. Data format is the same of output d...
int32_t lis2mdl_data_format_set(const stmdev_ctx_t *ctx, lis2mdl_ble_t val)
Big/Little Endian data selection.[set].
int32_t lis2mdl_drdy_on_pin_get(const stmdev_ctx_t *ctx, uint8_t *val)
Data-ready signal on INT_DRDY pin.[get].
lis2mdl_set_rst_t
int32_t lis2mdl_block_data_update_get(const stmdev_ctx_t *ctx, uint8_t *val)
Blockdataupdate.[get].
int32_t lis2mdl_status_get(const stmdev_ctx_t *ctx, lis2mdl_status_reg_t *val)
Info about device status.[get].
int32_t lis2mdl_operating_mode_set(const stmdev_ctx_t *ctx, lis2mdl_md_t val)
Operating mode selection.[set].
lis2mdl_i2c_dis_t
int32_t lis2mdl_self_test_get(const stmdev_ctx_t *ctx, uint8_t *val)
Selftest.[get].
int32_t lis2mdl_offset_temp_comp_set(const stmdev_ctx_t *ctx, uint8_t val)
Enables the magnetometer temperature compensation.[set].
int32_t lis2mdl_int_gen_conf_set(const stmdev_ctx_t *ctx, lis2mdl_int_crtl_reg_t *val)
Interrupt generator configuration register.[set].
int32_t lis2mdl_i2c_interface_set(const stmdev_ctx_t *ctx, lis2mdl_i2c_dis_t val)
Enable/Disable I2C interface.[set].
int32_t lis2mdl_i2c_interface_get(const stmdev_ctx_t *ctx, lis2mdl_i2c_dis_t *val)
Enable/Disable I2C interface.[get].
lis2mdl_lpf_t
lis2mdl_odr_t
int32_t lis2mdl_data_rate_set(const stmdev_ctx_t *ctx, lis2mdl_odr_t val)
Output data rate selection.[set].
int32_t lis2mdl_int_on_pin_get(const stmdev_ctx_t *ctx, uint8_t *val)
Interrupt signal on INT_DRDY pin.[get].
lis2mdl_sim_t
float_t lis2mdl_from_lsb_to_nanotesla(int16_t lsb)
Converts raw magnetic data to nanotesla (nT). Sensitivity: 1 LSB = 1.5 mG = 150 nT.
float_t lis2mdl_from_lsb_to_celsius(int16_t lsb)
int32_t lis2mdl_low_pass_bandwidth_get(const stmdev_ctx_t *ctx, lis2mdl_lpf_t *val)
Low-pass bandwidth selection.[get].
int32_t lis2mdl_set_rst_mode_get(const stmdev_ctx_t *ctx, lis2mdl_set_rst_t *val)
Reset mode.[get].
int32_t lis2mdl_block_data_update_set(const stmdev_ctx_t *ctx, uint8_t val)
Blockdataupdate.[set].
int32_t lis2mdl_spi_mode_set(const stmdev_ctx_t *ctx, lis2mdl_sim_t val)
SPI Serial Interface Mode selection.[set].
int32_t lis2mdl_int_gen_conf_get(const stmdev_ctx_t *ctx, lis2mdl_int_crtl_reg_t *val)
Interrupt generator configuration register.[get].
int32_t lis2mdl_mag_data_ready_get(const stmdev_ctx_t *ctx, uint8_t *val)
Magnetic set of data available.[get].
int32_t lis2mdl_read_reg(const stmdev_ctx_t *ctx, uint8_t reg, uint8_t *data, uint16_t len)
Read generic device register.
Definition lis2mdl_reg.c:66
lis2mdl_ble_t
int32_t lis2mdl_power_mode_set(const stmdev_ctx_t *ctx, lis2mdl_lp_t val)
Enables high-resolution/low-power mode.[set].
int32_t lis2mdl_data_format_get(const stmdev_ctx_t *ctx, lis2mdl_ble_t *val)
Big/Little Endian data selection.[get].
int32_t lis2mdl_magnetic_raw_get(const stmdev_ctx_t *ctx, int16_t *val)
Magnetic output value.[get].
int32_t lis2mdl_power_mode_get(const stmdev_ctx_t *ctx, lis2mdl_lp_t *val)
Enables high-resolution/low-power mode.[get].
lis2mdl_lp_t
int32_t lis2mdl_write_reg(const stmdev_ctx_t *ctx, uint8_t reg, uint8_t *data, uint16_t len)
Write generic device register.
Definition lis2mdl_reg.c:92
int32_t lis2mdl_mag_data_ovr_get(const stmdev_ctx_t *ctx, uint8_t *val)
Magnetic set of data overrun.[get].
int32_t lis2mdl_init(stmdev_ctx_t *ctx)
Initialize the LIS2MDL sensor.
int32_t lis2mdl_spi_mode_get(const stmdev_ctx_t *ctx, lis2mdl_sim_t *val)
SPI Serial Interface Mode selection.[get].
int32_t lis2mdl_boot_get(const stmdev_ctx_t *ctx, uint8_t *val)
Reboot memory content. Reload the calibration parameters.[get].
int32_t lis2mdl_offset_int_conf_set(const stmdev_ctx_t *ctx, lis2mdl_int_on_dataoff_t val)
The interrupt block recognition checks data after/before the hard-iron correction to discover the int...
int32_t lis2mdl_reset_get(const stmdev_ctx_t *ctx, uint8_t *val)
Software reset. Restore the default values in user registers.[get].
int32_t lis2mdl_reset_set(const stmdev_ctx_t *ctx, uint8_t val)
Software reset. Restore the default values in user registers.[set].
lis2mdl_int_on_dataoff_t
int32_t lis2mdl_drdy_on_pin_set(const stmdev_ctx_t *ctx, uint8_t val)
Data-ready signal on INT_DRDY pin.[set].
int32_t lis2mdl_offset_int_conf_get(const stmdev_ctx_t *ctx, lis2mdl_int_on_dataoff_t *val)
The interrupt block recognition checks data after/before the hard-iron correction to discover the int...
int32_t lis2mdl_set_rst_sensor_single_set(const stmdev_ctx_t *ctx, uint8_t val)
Enables offset cancellation in single measurement mode. The OFF_CANC bit must be set to 1 when enabli...
lis2mdl_md_t
int32_t lis2mdl_device_id_get(const stmdev_ctx_t *ctx, uint8_t *buff)
DeviceWhoamI.[get].
int32_t lis2mdl_operating_mode_get(const stmdev_ctx_t *ctx, lis2mdl_md_t *val)
Operating mode selection.[get].
int32_t lis2mdl_mag_user_offset_set(const stmdev_ctx_t *ctx, int16_t *val)
These registers comprise a 3 group of 16-bit number and represent hard-iron offset in order to compen...
float_t lis2mdl_from_lsb_to_mgauss(int16_t lsb)
int32_t lis2mdl_temperature_raw_get(const stmdev_ctx_t *ctx, int16_t *val)
Temperature output value.[get].
int32_t lis2mdl_data_rate_get(const stmdev_ctx_t *ctx, lis2mdl_odr_t *val)
Output data rate selection.[get].
int32_t lis2mdl_boot_set(const stmdev_ctx_t *ctx, uint8_t val)
Reboot memory content. Reload the calibration parameters.[set].
int32_t lis2mdl_int_gen_source_get(const stmdev_ctx_t *ctx, lis2mdl_int_source_reg_t *val)
Interrupt generator source register.[get].
@ LIS2MDL_SET_SENS_ODR_DIV_63
@ LIS2MDL_SET_SENS_ONLY_AT_POWER_ON
@ LIS2MDL_SENS_OFF_CANC_EVERY_ODR
@ LIS2MDL_I2C_ENABLE
@ LIS2MDL_I2C_DISABLE
@ LIS2MDL_ODR_DIV_4
@ LIS2MDL_ODR_DIV_2
@ LIS2MDL_ODR_100Hz
@ LIS2MDL_ODR_50Hz
@ LIS2MDL_ODR_10Hz
@ LIS2MDL_ODR_20Hz
@ LIS2MDL_SPI_3_WIRE
@ LIS2MDL_SPI_4_WIRE
@ LIS2MDL_LSB_AT_LOW_ADD
@ LIS2MDL_MSB_AT_LOW_ADD
@ LIS2MDL_LOW_POWER
@ LIS2MDL_HIGH_RESOLUTION
@ LIS2MDL_CHECK_AFTER
@ LIS2MDL_CHECK_BEFORE
@ LIS2MDL_POWER_DOWN
@ LIS2MDL_CONTINUOUS_MODE
@ LIS2MDL_SINGLE_TRIGGER
uint8_t bit1
Definition lis2mdl_reg.h:82
uint8_t bit6
Definition lis2mdl_reg.h:87
uint8_t bit2
Definition lis2mdl_reg.h:83
uint8_t bit3
Definition lis2mdl_reg.h:84
uint8_t bit7
Definition lis2mdl_reg.h:88
uint8_t bit4
Definition lis2mdl_reg.h:85
uint8_t bit0
Definition lis2mdl_reg.h:81
uint8_t bit5
Definition lis2mdl_reg.h:86
stmdev_read_ptr read_reg
stmdev_mdelay_ptr mdelay
stmdev_write_ptr write_reg
uint8_t address
uint8_t data
bitwise_t bitwise
lis2mdl_cfg_reg_c_t cfg_reg_c
lis2mdl_int_source_reg_t int_source_reg
lis2mdl_status_reg_t status_reg
lis2mdl_int_crtl_reg_t int_crtl_reg
lis2mdl_cfg_reg_a_t cfg_reg_a
lis2mdl_cfg_reg_b_t cfg_reg_b