14 #ifndef DRV_I2C_LSM303D_H_
15 #define DRV_I2C_LSM303AGR_H_
34 #define LSM303D_MAGSCALE_2GAUSS 0x00
35 #define LSM303D_MAGSCALE_4GAUSS 0x01
36 #define LSM303D_MAGSCALE_8GAUSS 0x02
37 #define LSM303D_MAGSCALE_12GAUSS 0x03
39 #define LSM303D_MAGRATE_3HZ125 0x00
40 #define LSM303D_MAGRATE_6HZ25 0x01
41 #define LSM303D_MAGRATE_12HZ5 0x02
42 #define LSM303D_MAGRATE_25HZ 0x03
43 #define LSM303D_MAGRATE_50HZ 0x04
44 #define LSM303D_MAGRATE_100HZ 0x05
45 #define LSM303D_MAGRATE_DO_NOT_USE 0x06
47 #define LSM303D_MAGMODE_CONTINUOUS 0x00
48 #define LSM303D_MAGMODE_SINGLE 0x01
49 #define LSM303D_MAGMODE_POWERDOWN 0x02
51 #define LSM303D_ACCRATE_POWERDOWN 0x00
52 #define LSM303D_ACCRATE_3HZ125 0x01
53 #define LSM303D_ACCRATE_6HZ25 0x02
54 #define LSM303D_ACCRATE_12HZ5 0x03
55 #define LSM303D_ACCRATE_25HZ 0x04
56 #define LSM303D_ACCRATE_50HZ 0x05
57 #define LSM303D_ACCRATE_100HZ 0x06
58 #define LSM303D_ACCRATE_200HZ 0x07
59 #define LSM303D_ACCRATE_400HZ 0x08
60 #define LSM303D_ACCRATE_800HZ 0x09
61 #define LSM303D_ACCRATE_1600HZ 0x0A
63 #define LSM303D_ACCAAF_773HZ 0x00
64 #define LSM303D_ACCAAF_194HZ 0x01
65 #define LSM303D_ACCAAF_362HZ 0x02
66 #define LSM303D_ACCAAF_50HZ 0x03
68 #define LSM303D_ACCSCALE_2G 0x00
69 #define LSM303D_ACCSCALE_4G 0x01
70 #define LSM303D_ACCSCALE_6G 0x02
71 #define LSM303D_ACCSCALE_8G 0x03
72 #define LSM303D_ACCSCALE_16G 0x04
74 #define LSM303D_ACCHPF_NORMAL 0x00
75 #define LSM303D_ACCHPF_REFSIG 0x01
76 #define LSM303D_ACCHPF_AUTORESET 0x03
89 #define LSM303D_CFG_DEFAULT { \
107 #define LSM303D_MAGCFG_DEFAULT {\
108 .magScale = LSM303D_MAGSCALE_2GAUSS, \
109 .magRate = LSM303D_MAGRATE_DO_NOT_USE, \
110 .magMode = LSM303D_MAGMODE_POWERDOWN, \
128 #define LSM303D_ACCCFG_DEFAULT {\
129 .accRate = LSM303D_ACCRATE_POWERDOWN, \
130 .accAAF = LSM303D_ACCAAF_773HZ, \
131 .accHPF = LSM303D_ACCHPF_NORMAL, \
132 .accScale = LSM303D_ACCSCALE_2G, \
uint16_t accAAF
Anti-alias filter, one of LSM303D_ACCAAF_*.
Axis structure for 3D information.
uint8_t magMode
Magnetic sensor mode selection, LSM303D_MAGMODE_*.
uint16_t accScale
Accelerometer scale, one of LSM303D_ACCSCALE_*.
bool filterAcc
Filter acceleration data.
bool lsm303DMagnetCfg(I2C_Device *dev, uint8_t addr, Lsm303DMagCfg config)
Set the Magnet configuration.
Generic LSM303D configuration.
bool hiRes
High resolution.
bool selfTest
Enabled self-test.
uint16_t accRate
Accelerometer rate , one of LSM303D_ACCRATE_*.
uint8_t magRate
Magnet rate, use one of LSM303D_MAGRATE_*.
Accelerator configuration structure.
bool lsm303DAccelRead(I2C_Device *dev, uint8_t addr, Lsm303Axis *result)
Read the accelerometer information.
bool tempOnly
!< Temperature sensor (coupled to magnet)
Structure defines OpenCores I2C Device.
bool lowPower
Magnet in low power mode.
bool temp
!< Block data update
struct Lsm303DMagCfg_ Lsm303DMagCfg
Magnet configuration.
bool lsm303DValid(I2C_Device *dev, uint8_t addr, bool *isLSM303)
Checks whether or not the LSM303D is valid.
bool lsm303DMagnetRead(I2C_Device *dev, uint8_t addr, Lsm303Axis *result)
Read the magnet information.
uint16_t accHPF
High-pass filter, one of LSM303D_ACCHPF_*.
bool lsm303DAccelCfg(I2C_Device *dev, uint8_t addr, Lsm303DAccCfg config)
Set the accelerometer configuration.
bool lsm303DCfg(I2C_Device *dev, uint8_t addr, Lsm303DCfg config)
Sets the generic device configuration parameters.
bool lsm303DTempRead(I2C_Device *dev, uint8_t addr, int16_t *result)
Reads the temperature.
struct Lsm303DAccCfg_ Lsm303DAccCfg
Accelerator configuration structure.
struct Lsm303DCfg_ Lsm303DCfg
Generic LSM303D configuration.
OpenCores I2C device driver.
uint8_t magScale
Magnet scale, use one of LSM303D_MAGSCALEE_*.