AKM AK8975 3-axis magnetometer.
This file contains functions for initializing and reading data from a AKM AK8975 3-axis magnetometer.
Copyright (c) 2014-2018 Microchip Technology Inc. and its subsidiaries.
#include <asf.h>
Macros | |
#define | AK8975_DATA_RESOLUTION (13) |
Signed axis data sample resolution (bits) More... | |
#define | AK8975_REG_ASAX (0x10) /* x-axis sensitivity adjust */ |
#define | AK8975_REG_ASAY (0x11) /* y-axis sensitivity adjust */ |
#define | AK8975_REG_ASAZ (0x12) /* z-axis sensitivity adjust */ |
#define | AK8975_TWI_ADDR (0x0c) /* TWI/I2C slave address */ |
#define | MICRO_TESLA_PER_COUNT (0.3) /* from AK8975 data sheet */ |
Device sensitivity (scaling) More... | |
#define | AK8975_TEST_X_MIN (-100) /* min X */ |
Self-test Definitions. More... | |
#define | AK8975_TEST_X_MAX (100) /* max X */ |
#define | AK8975_TEST_Y_MIN (-100) /* min Y */ |
#define | AK8975_TEST_Y_MAX (100) /* max Y */ |
#define | AK8975_TEST_Z_MIN (-1000) /* min Z */ |
#define | AK8975_TEST_Z_MAX (-300) /* max Z */ |
#define | AK8975_REG_WIA (0x00) /* device ID */ |
AK8975 Register Addresses. More... | |
#define | AK8975_REG_INFO (0x01) /* information */ |
#define | AK8975_REG_ST1 (0x02) /* data status 1 */ |
#define | AK8975_REG_HXL (0x03) /* x-axis data (low) */ |
#define | AK8975_REG_HXH (0x04) /* x-axis data (high) */ |
#define | AK8975_REG_HYL (0x05) /* y-axis data (low) */ |
#define | AK8975_REG_HYH (0x06) /* y-axis data (high) */ |
#define | AK8975_REG_HZL (0x07) /* z-axis data (low) */ |
#define | AK8975_REG_HZH (0x08) /* z-axis data (high) */ |
#define | AK8975_REG_ST2 (0x09) /* data status 2 */ |
#define | AK8975_REG_CNTL1 (0x0a) /* control 1 */ |
#define | AK8975_REG_CNTL2 (0x0b) /* reserved (do not access) */ |
#define | AK8975_REG_ASTC (0x0c) /* self-test */ |
#define | AK8975_REG_TS1 (0x0d) /* test 1 (do not access) */ |
#define | AK8975_REG_TS2 (0x0e) /* test 2 (do not access) */ |
#define | AK8975_REG_I2CDIS (0x0f) /* I2C disable */ |
#define | AK8975_WIA_VALUE (0x48) /* AK8975 device ID value */ |
AK8975 Register Bit Definitions. More... | |
#define | AK8975_DATA_READY (0x01) /* data ready in single mode */ |
#define | AK8975_DERR (0x04) /* data read error event */ |
#define | AK8975_HOFL (0x08) /* magnetic sensor overflow event */ |
#define | AK8975_POWER_DOWN_MODE (0x00) /* set power down mode */ |
#define | AK8975_SINGLE_MODE (0x01) /* set single measurement mode */ |
#define | AK8975_SELF_TEST_MODE (0x08) /* set self-test mode */ |
#define | AK8975_FUSE_READ_MODE (0x0f) /* set fuse ROM access mode */ |
#define | AK8975_ASTC_SELF (0x40) /* enable self-test mode */ |
Enumerations | |
enum | LAYOUT { OBVERSE_0DEG, OBVERSE_90DEG, OBVERSE_180DEG, OBVERSE_270DEG, REVERSE_0DEG, REVERSE_90DEG, REVERSE_180DEG, REVERSE_270DEG } |
Sensor Layout Type Constants. More... | |
Functions | |
bool | ak8975_init (sensor_t *, int) |
AKM AK8975 magnetometer driver initialization. More... | |
#define AK8975_ASTC_SELF (0x40) /* enable self-test mode */ |
Referenced by ak8975_selftest().
#define AK8975_DATA_READY (0x01) /* data ready in single mode */ |
#define AK8975_DATA_RESOLUTION (13) |
Signed axis data sample resolution (bits)
Referenced by ak8975_check_overflow(), and ak8975_init().
#define AK8975_DERR (0x04) /* data read error event */ |
#define AK8975_FUSE_READ_MODE (0x0f) /* set fuse ROM access mode */ |
#define AK8975_HOFL (0x08) /* magnetic sensor overflow event */ |
#define AK8975_POWER_DOWN_MODE (0x00) /* set power down mode */ |
Referenced by ak8975_selftest(), and ak8975_set_state().
#define AK8975_REG_ASAX (0x10) /* x-axis sensitivity adjust */ |
#define AK8975_REG_ASAY (0x11) /* y-axis sensitivity adjust */ |
#define AK8975_REG_ASAZ (0x12) /* z-axis sensitivity adjust */ |
#define AK8975_REG_ASTC (0x0c) /* self-test */ |
Referenced by ak8975_selftest().
#define AK8975_REG_CNTL1 (0x0a) /* control 1 */ |
Referenced by ak8975_get_data(), ak8975_selftest(), and ak8975_set_state().
#define AK8975_REG_CNTL2 (0x0b) /* reserved (do not access) */ |
#define AK8975_REG_HXH (0x04) /* x-axis data (high) */ |
#define AK8975_REG_HXL (0x03) /* x-axis data (low) */ |
Referenced by ak8975_get_data().
#define AK8975_REG_HYH (0x06) /* y-axis data (high) */ |
#define AK8975_REG_HYL (0x05) /* y-axis data (low) */ |
#define AK8975_REG_HZH (0x08) /* z-axis data (high) */ |
#define AK8975_REG_HZL (0x07) /* z-axis data (low) */ |
#define AK8975_REG_I2CDIS (0x0f) /* I2C disable */ |
#define AK8975_REG_INFO (0x01) /* information */ |
#define AK8975_REG_ST1 (0x02) /* data status 1 */ |
#define AK8975_REG_ST2 (0x09) /* data status 2 */ |
#define AK8975_REG_TS1 (0x0d) /* test 1 (do not access) */ |
#define AK8975_REG_TS2 (0x0e) /* test 2 (do not access) */ |
#define AK8975_REG_WIA (0x00) /* device ID */ |
AK8975 Register Addresses.
Referenced by ak8975_device_id(), and ak8975_init().
#define AK8975_SELF_TEST_MODE (0x08) /* set self-test mode */ |
Referenced by ak8975_selftest().
#define AK8975_SINGLE_MODE (0x01) /* set single measurement mode */ |
Referenced by ak8975_calibrate(), ak8975_get_field(), and ak8975_get_heading().
#define AK8975_TEST_X_MAX (100) /* max X */ |
Referenced by ak8975_selftest().
#define AK8975_TEST_X_MIN (-100) /* min X */ |
Self-test Definitions.
Referenced by ak8975_selftest().
#define AK8975_TEST_Y_MAX (100) /* max Y */ |
Referenced by ak8975_selftest().
#define AK8975_TEST_Y_MIN (-100) /* min Y */ |
Referenced by ak8975_selftest().
#define AK8975_TEST_Z_MAX (-300) /* max Z */ |
Referenced by ak8975_selftest().
#define AK8975_TEST_Z_MIN (-1000) /* min Z */ |
Referenced by ak8975_selftest().
#define AK8975_TWI_ADDR (0x0c) /* TWI/I2C slave address */ |
#define AK8975_WIA_VALUE (0x48) /* AK8975 device ID value */ |
AK8975 Register Bit Definitions.
Referenced by ak8975_init().
#define MICRO_TESLA_PER_COUNT (0.3) /* from AK8975 data sheet */ |
Device sensitivity (scaling)
Referenced by ak8975_check_overflow(), ak8975_get_field(), and ak8975_get_heading().
enum LAYOUT |
Sensor Layout Type Constants.
AKM AK8975 magnetometer driver initialization.
This is the main initialization function for the AK8975 device.
sensor | Address of a sensor device descriptor. |
resvd | Reserved value. |
References ak8975_calibrate(), AK8975_DATA_RESOLUTION, ak8975_ioctl(), ak8975_read(), AK8975_REG_WIA, ak8975_selftest(), AK8975_WIA_VALUE, sensor_desc::drv, sensor_device_t::func, sensor_desc::hal, nvram_read(), sensor_funcs_t::read, sensor_hal::resolution, sensor_bus_get, SENSOR_CAPS_3_AXIS, SENSOR_CAPS_SELFTEST, SENSOR_SCALE_micro, SENSOR_UNITS_tesla, SENSOR_VENDOR_AKM, vector3_t::x, vector3_t::y, and vector3_t::z.