| ISF 2.2 rev 5 Intelligent Sensing Framework for Kinetis with Processor Expert

- Main Page
- Modules
- Data Structures
- Files

- File List
- Globals

mag3110.h
Go to the documentation of this file.
1 /**
2 * @file mag3110.h
3 * @brief The \b mag3110.h contains the MAG3110 Magnetometer register definitions, access macros, and
4 * device access functions.
5 *
6 * @copyright Copyright (c) 2015, Freescale Semiconductor, Inc.
7 */
8
9 #ifndef MAG3110_H_
10 #define MAG3110_H_
11
12 #define MAG3110_IIC_ADDRESS 0x0E // MAG3110 I2C Address.
13
14 /**
15 * @brief The MAG3110 registers, masks, and constants.
16 */
17 #define MAG3110_NUMBER_AXIS 0x3 // Number of Axis
18 #define MAG3110_NUMBER_BYTES_AXIS 0x2 // Number of bytes in each axis
19
20 /**
21 **
22 ** @brief The MAG3110 Sensor Internal Register Map.
23 */
24 enum {
25 MAG3110_DR_STATUS = 0x00,
26 MAG3110_OUT_X_MSB = 0x01,
27 MAG3110_OUT_X_LSB = 0x02,
28 MAG3110_OUT_Y_MSB = 0x03,
29 MAG3110_OUT_Y_LSB = 0x04,
30 MAG3110_OUT_Z_MSB = 0x05,
31 MAG3110_OUT_Z_LSB = 0x06,
32 MAG3110_WHO_AM_I = 0x07,
33 MAG3110_SYS_MOD = 0x08,
34 MAG3110_OFF_X_MSB = 0x09,
35 MAG3110_OFF_X_LSB = 0x0A,
36 MAG3110_OFF_Y_MSB = 0x0B,
37 MAG3110_OFF_Y_LSB = 0x0C,
38 MAG3110_OFF_Z_MSB = 0x0D,
39 MAG3110_OFF_Z_LSB = 0x0E,
40 MAG3110_DIE_TEMP = 0x0F,
41 MAG3110_CTRL_REG1 = 0x10,
42 MAG3110_CTRL_REG2 = 0x11,
43 MAG3110_DEVICE_ID = 0xC4,
44 };
45
46 /*
47 * General purpose macros to set/get a specific bit field within a register.
48 * The macro assumes that the root identifier for the field is a consistent character string (e.g., "BIT_FIELD").
49 * The bit field mask is the character string followed by "_MASK" (e.g., BIT_FIELD_MASK).
50 * The bit field shift is the character string followed by "_SHIFT" (e.g., BIT_FIELD_SHIFT).
51 */
52 #define MAG3110_SET_FIELD(name,val) (((val)<<MAG3110_##name##_SHIFT)&(MAG3110_##name##_MASK))
53 #define MAG3110_GET_FIELD(name,val) ((val&MAG3110_##name##_MASK)>>MAG3110_##name##_SHIFT)
54
55 /*
56 ** DR_STATUS Register
57 */
58 #define MAG3110_ZYXOW_MASK (0x80)
59 #define MAG3110_ZYXOW_SHIFT 7
60 #define MAG3110_ZOW_MASK (0x40)
61 #define MAG3110_ZOW_SHIFT 6
62 #define MAG3110_YOW_MASK (0x20)
63 #define MAG3110_YOW_SHIFT 5
64 #define MAG3110_XOW_MASK (0x10)
65 #define MAG3110_XOW_SHIFT 4
66 #define MAG3110_ZYXDR_MASK (0x08)
67 #define MAG3110_ZYXDR_SHIFT 3
68 #define MAG3110_ZDR_MASK (0x04)
69 #define MAG3110_ZDR_SHIFT 2
70 #define MAG3110_YDR_MASK (0x02)
71 #define MAG3110_YDR_SHIFT 1
72 #define MAG3110_XDR_MASK (0x01)
73 #define MAG3110_XDR_SHIFT 0
74
75 /*
76 ** SYSMOD Register
77 */
78 #define MAG3110_SYSMOD1_MASK (0x02)
79 #define MAG3110_SYSMOD1_SHIFT 1
80 #define MAG3110_SYSMOD0_MASK (0x01)
81 #define MAG3110_SYSMOD0_SHIFT 0
82
83 /*
84 ** CTRL1 Register
85 */
86 #define MAG3110_DR_MASK (0xE0)
87 #define MAG3110_DR_SHIFT 5
88 #define MAG3110_OS_MASK (0x18)
89 #define MAG3110_OS_SHIFT 3
90 #define MAG3110_FR_MASK (0x04)
91 #define MAG3110_FR_SHIFT 2
92 #define MAG3110_TM_MASK (0x02)
93 #define MAG3110_TM_SHIFT 1
94 #define MAG3110_AC_MASK (0x01)
95 #define MAG3110_AC_SHIFT 0
96
97 /*
98 ** CTRL2 Register
99 */
100 #define MAG3110_AUTO_MRST_EN_MASK (0x80)
101 #define MAG3110_AUTO_MRST_EN_SHIFT 7
102 #define MAG3110_RAW_MASK (0x20)
103 #define MAG3110_RAW_SHIFT 5
104 #define MAG3110_MAG_RST_MASK (0x10)
105 #define MAG3110_MAG_RST_SHIFT 4
106
107 #define MAG3100_READ_BUF_SIZE (6)
108 #define NUMBER_OF_BYTES_TIMESTAMP (4)
109 #define MAG3110_WHOAMI_VALUE (0xC4)
110
111 // Device standby to active time, number of samples to wait. MAG3110 datasheet states
112 // that for 80 ODR (12.5ms sample period), the standby to active time is 25ms which
113 // is 2 samples (2 * 12.5ms = 25ms).
114 #define MAG3110_STANDBY_TO_ACTIVE_SAMPLE_WAIT (2)
115
116 typedef int32 mag3110_status_t;
117
118 /*! @brief The structure defines the MAG3110 configuration.*/
119 typedef struct {
120 uint32 period; // The period used to process samples in microseconds.
121 uint8 overSampleRate; // The over sample rate.
122 } mag_config_t;
123
124 typedef struct
125 {
126 uint8 regAddr;
127 uint8 regValue;
128 } mag3110_Sensor_Specific_Reg_t;
129
130 typedef struct
131 {
132 uint8 overSamplingRatio;
133 uint32 regCount;
134 mag3110_Sensor_Specific_Reg_t regPairs[];
135 } mag3110_Sensor_Specific_Settings_t;
136
137
138
139 #endif /* MAG3110_H_ */
MAG3110_OUT_X_MSB
Definition: mag3110.h:26
uint8
unsigned char uint8
Definition: isf_types.h:76
MAG3110_DIE_TEMP
Definition: mag3110.h:40
mag_config_t::overSampleRate
uint8 overSampleRate
Definition: mag3110.h:121
MAG3110_WHO_AM_I
Definition: mag3110.h:32
MAG3110_OFF_Z_MSB
Definition: mag3110.h:38
MAG3110_OUT_Z_MSB
Definition: mag3110.h:30
MAG3110_OFF_Z_LSB
Definition: mag3110.h:39
mag3110_Sensor_Specific_Reg_t
Definition: mag3110.h:124
MAG3110_CTRL_REG2
Definition: mag3110.h:42
mag_config_t::period
uint32 period
Definition: mag3110.h:120
mag3110_Sensor_Specific_Reg_t::regValue
uint8 regValue
Definition: mag3110.h:127
MAG3110_OFF_X_LSB
Definition: mag3110.h:35
MAG3110_OFF_Y_MSB
Definition: mag3110.h:36
MAG3110_DR_STATUS
Definition: mag3110.h:25
mag3110_Sensor_Specific_Settings_t::overSamplingRatio
uint8 overSamplingRatio
Definition: mag3110.h:132
MAG3110_OFF_Y_LSB
Definition: mag3110.h:37
mag3110_Sensor_Specific_Settings_t
Definition: mag3110.h:130
MAG3110_OUT_X_LSB
Definition: mag3110.h:27
MAG3110_OFF_X_MSB
Definition: mag3110.h:34
MAG3110_CTRL_REG1
Definition: mag3110.h:41
mag_config_t
The structure defines the MAG3110 configuration.
Definition: mag3110.h:119
int32
signed long int int32
Definition: isf_types.h:74
mag3110_Sensor_Specific_Reg_t::regAddr
uint8 regAddr
Definition: mag3110.h:126
MAG3110_DEVICE_ID
Definition: mag3110.h:43
mag3110_Sensor_Specific_Settings_t::regCount
uint32 regCount
Definition: mag3110.h:133
uint32
unsigned long int uint32
Definition: isf_types.h:78
MAG3110_SYS_MOD
Definition: mag3110.h:33
MAG3110_OUT_Y_LSB
Definition: mag3110.h:29
MAG3110_OUT_Y_MSB
Definition: mag3110.h:28
mag3110_status_t
int32 mag3110_status_t
Definition: mag3110.h:116
MAG3110_OUT_Z_LSB
Definition: mag3110.h:31
- © Freescale Semiconductor, Inc. 2016. All Rights Reserved.