summaryrefslogtreecommitdiff
path: root/sensorlib/hw_ak8975.h
blob: e1cb8479c9745ddccbb4a0b75706b3d7c1c8922e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
//*****************************************************************************
//
// hw_ak8975.h - Macros used when accessing the Asahi Kasei AK8975
//               magnetometer.
//
// Copyright (c) 2013-2014 Texas Instruments Incorporated.  All rights reserved.
// Software License Agreement
// 
// Texas Instruments (TI) is supplying this software for use solely and
// exclusively on TI's microcontroller products. The software is owned by
// TI and/or its suppliers, and is protected under applicable copyright
// laws. You may not combine this software with "viral" open-source
// software in order to form a larger program.
// 
// THIS SOFTWARE IS PROVIDED "AS IS" AND WITH ALL FAULTS.
// NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT
// NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. TI SHALL NOT, UNDER ANY
// CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
// DAMAGES, FOR ANY REASON WHATSOEVER.
// 
// This is part of revision 2.1.0.12573 of the Tiva Firmware Development Package.
//
//*****************************************************************************

#ifndef __SENSORLIB_HW_AK8975_H__
#define __SENSORLIB_HW_AK8975_H__

//*****************************************************************************
//
// The following are defines for the AK8975 register addresses.
//
//*****************************************************************************
#define AK8975_O_WIA            0x00        // Device ID register
#define AK8975_O_INFO           0x01        // Information register
#define AK8975_O_ST1            0x02        // Status 1 register
#define AK8975_O_HXL            0x03        // X-axis LSB output register
#define AK8975_O_HXH            0x04        // X-axis MSB output register
#define AK8975_O_HYL            0x05        // Y-axis LSB output register
#define AK8975_O_HYH            0x06        // Y-axis MSB output register
#define AK8975_O_HZL            0x07        // Z-axis LSB output register
#define AK8975_O_HZH            0x08        // Z-axis MSB output register
#define AK8975_O_ST2            0x09        // Status 2 register
#define AK8975_O_CNTL           0x0A        // Control register
#define AK8975_O_ASTC           0x0C        // Self-test register
#define AK8975_O_ASAX           0x10        // X-axis sensitivity register
#define AK8975_O_ASAY           0x11        // Y-axis sensitivity register
#define AK8975_O_ASAZ           0x12        // Z-axis sensitivity register

//*****************************************************************************
//
// The following are defines for the bit fields in the AK8975_O_WIA register.
//
//*****************************************************************************
#define AK8975_WIA_M            0xFF        // Device ID
#define AK8975_WIA_AK8975       0x48        // AK8975
#define AK8975_WIA_S            0

//*****************************************************************************
//
// The following are defines for the bit fields in the AK8975_O_INFO register.
//
//*****************************************************************************
#define AK8975_INFO_M           0xFF        // Device information value
#define AK8975_INFO_S           0

//*****************************************************************************
//
// The following are defines for the bit fields in the AK8975_O_ST1 register.
//
//*****************************************************************************
#define AK8975_ST1_DRDY         0x01        // Data ready

//*****************************************************************************
//
// The following are defines for the bit fields in the AK8975_O_HXL register.
//
//*****************************************************************************
#define AK8975_HXL_M            0xFF        // Output data
#define AK8975_HXL_S            0

//*****************************************************************************
//
// The following are defines for the bit fields in the AK8975_O_HXH register.
//
//*****************************************************************************
#define AK8975_HXH_M            0xFF        // Output data
#define AK8975_HXH_S            0

//*****************************************************************************
//
// The following are defines for the bit fields in the AK8975_O_HYL register.
//
//*****************************************************************************
#define AK8975_HYL_M            0xFF        // Output data
#define AK8975_HYL_S            0

//*****************************************************************************
//
// The following are defines for the bit fields in the AK8975_O_HYH register.
//
//*****************************************************************************
#define AK8975_HYH_M            0xFF        // Output data
#define AK8975_HYH_S            0

//*****************************************************************************
//
// The following are defines for the bit fields in the AK8975_O_HZL register.
//
//*****************************************************************************
#define AK8975_HZL_M            0xFF        // Output data
#define AK8975_HZL_S            0

//*****************************************************************************
//
// The following are defines for the bit fields in the AK8975_O_HZH register.
//
//*****************************************************************************
#define AK8975_HZH_M            0xFF        // Output data
#define AK8975_HZH_S            0

//*****************************************************************************
//
// The following are defines for the bit fields in the AK8975_O_ST2 register.
//
//*****************************************************************************
#define AK8975_ST2_HOFL         0x08        // Magnetic sensor overflow
#define AK8975_ST2_DERR         0x04        // Data error

//*****************************************************************************
//
// The following are defines for the bit fields in the AK8975_O_CNTL register.
//
//*****************************************************************************
#define AK8975_CNTL_MODE_M      0x0F        // Operation mode
#define AK8975_CNTL_MODE_POWER_DOWN                                           \
                                0x00        // Power-down mode
#define AK8975_CNTL_MODE_SINGLE 0x01        // Single measurement mode
#define AK8975_CNTL_MODE_SELF_TEST                                            \
                                0x08        // Self-test mode
#define AK8975_CNTL_MODE_FUSE_ROM                                             \
                                0x0F        // Fuse ROM access mode
#define AK8975_CNTL_MODE_S      0

//*****************************************************************************
//
// The following are defines for the bit fields in the AK8975_O_ASTC register.
//
//*****************************************************************************
#define AK8975_ASTC_SELF        0x40        // Generate magnetic field for
                                            // self-test

//*****************************************************************************
//
// The following are defines for the bit fields in the AK8975_O_ASAX register.
//
//*****************************************************************************
#define AK8975_ASAX_M           0xFF        // X-axis sensitivity adjustment
#define AK8975_ASAX_S           0

//*****************************************************************************
//
// The following are defines for the bit fields in the AK8975_O_ASAY register.
//
//*****************************************************************************
#define AK8975_ASAY_M           0xFF        // Y-axis sensitivity adjustment
#define AK8975_ASAY_S           0

//*****************************************************************************
//
// The following are defines for the bit fields in the AK8975_O_ASAZ register.
//
//*****************************************************************************
#define AK8975_ASAZ_M           0xFF        // Z-axis sensitivity adjustment
#define AK8975_ASAZ_S           0

#endif // __SENSORLIB_HW_AK8975_H__