Documentation ¶
Index ¶
- Constants
- type MPU9250
- func (mpu *MPU9250) CloseMPU()
- func (mpu *MPU9250) EnableGyroBiasCal(enable bool) error
- func (mpu *MPU9250) MagEnabled() bool
- func (mpu *MPU9250) ReadAccelBias(sensitivityAccel int) error
- func (mpu *MPU9250) ReadGyroBias(sensitivityGyro int) error
- func (mpu *MPU9250) ReadMagCalibration() error
- func (mpu *MPU9250) SampleRate() int
- func (mpu *MPU9250) SetAccelLPF(rate byte) (err error)
- func (mpu *MPU9250) SetAccelSensitivity(sensitivityAccel int) (err error)
- func (mpu *MPU9250) SetGyroLPF(rate byte) (err error)
- func (mpu *MPU9250) SetGyroSensitivity(sensitivityGyro int) (err error)
- func (mpu *MPU9250) SetSampleRate(rate byte) (err error)
Constants ¶
const ( MPU_ADDRESS1 = 0x68 MPU_ADDRESS2 = 0x69 MPUREG_XG_OFFS_TC = 0x00 MPUREG_YG_OFFS_TC = 0x01 MPUREG_ZG_OFFS_TC = 0x02 MPUREG_X_FINE_GAIN = 0x03 MPUREG_Y_FINE_GAIN = 0x04 MPUREG_Z_FINE_GAIN = 0x05 MPUREG_XA_OFFS_H = 0x06 MPUREG_XA_OFFS_L = 0x07 MPUREG_YA_OFFS_H = 0x08 MPUREG_YA_OFFS_L = 0x09 MPUREG_ZA_OFFS_H = 0x0A MPUREG_ZA_OFFS_L = 0x0B MPUREG_PRODUCT_ID = 0x0C MPUREG_SELF_TEST_X = 0x0D MPUREG_SELF_TEST_Y = 0x0E MPUREG_SELF_TEST_Z = 0x0F MPUREG_SELF_TEST_A = 0x10 MPUREG_XG_OFFS_USRH = 0x13 MPUREG_XG_OFFS_USRL = 0x14 MPUREG_YG_OFFS_USRH = 0x15 MPUREG_YG_OFFS_USRL = 0x16 MPUREG_ZG_OFFS_USRH = 0x17 MPUREG_ZG_OFFS_USRL = 0x18 MPUREG_SMPLRT_DIV = 0x19 MPUREG_CONFIG = 0x1A MPUREG_GYRO_CONFIG = 0x1B MPUREG_ACCEL_CONFIG = 0x1C MPUREG_ACCEL_CONFIG_2 = 0x1D MPUREG_LP_ACCEL_ODR = 0x1E MPUREG_MOT_THR = 0x1F MPUREG_FIFO_EN = 0x23 MPUREG_I2C_MST_CTRL = 0x24 MPUREG_I2C_SLV0_ADDR = 0x25 MPUREG_I2C_SLV0_REG = 0x26 MPUREG_I2C_SLV0_CTRL = 0x27 MPUREG_I2C_SLV1_ADDR = 0x28 MPUREG_I2C_SLV1_REG = 0x29 MPUREG_I2C_SLV1_CTRL = 0x2A MPUREG_I2C_SLV2_ADDR = 0x2B MPUREG_I2C_SLV2_REG = 0x2C MPUREG_I2C_SLV2_CTRL = 0x2D MPUREG_I2C_SLV3_ADDR = 0x2E MPUREG_I2C_SLV3_REG = 0x2F MPUREG_I2C_SLV3_CTRL = 0x30 MPUREG_I2C_SLV4_ADDR = 0x31 MPUREG_I2C_SLV4_REG = 0x32 MPUREG_I2C_SLV4_DO = 0x33 MPUREG_I2C_SLV4_CTRL = 0x34 MPUREG_I2C_SLV4_DI = 0x35 MPUREG_I2C_MST_STATUS = 0x36 MPUREG_INT_PIN_CFG = 0x37 MPUREG_INT_ENABLE = 0x38 MPUREG_ACCEL_XOUT_H = 0x3B MPUREG_ACCEL_XOUT_L = 0x3C MPUREG_ACCEL_YOUT_H = 0x3D MPUREG_ACCEL_YOUT_L = 0x3E MPUREG_ACCEL_ZOUT_H = 0x3F MPUREG_ACCEL_ZOUT_L = 0x40 MPUREG_TEMP_OUT_H = 0x41 MPUREG_TEMP_OUT_L = 0x42 MPUREG_GYRO_XOUT_H = 0x43 MPUREG_GYRO_XOUT_L = 0x44 MPUREG_GYRO_YOUT_H = 0x45 MPUREG_GYRO_YOUT_L = 0x46 MPUREG_GYRO_ZOUT_H = 0x47 MPUREG_GYRO_ZOUT_L = 0x48 MPUREG_EXT_SENS_DATA_00 = 0x49 MPUREG_EXT_SENS_DATA_01 = 0x4A MPUREG_EXT_SENS_DATA_02 = 0x4B MPUREG_EXT_SENS_DATA_03 = 0x4C MPUREG_EXT_SENS_DATA_04 = 0x4D MPUREG_EXT_SENS_DATA_05 = 0x4E MPUREG_EXT_SENS_DATA_06 = 0x4F MPUREG_EXT_SENS_DATA_07 = 0x50 MPUREG_EXT_SENS_DATA_08 = 0x51 MPUREG_EXT_SENS_DATA_09 = 0x52 MPUREG_EXT_SENS_DATA_10 = 0x53 MPUREG_EXT_SENS_DATA_11 = 0x54 MPUREG_EXT_SENS_DATA_12 = 0x55 MPUREG_EXT_SENS_DATA_13 = 0x56 MPUREG_EXT_SENS_DATA_14 = 0x57 MPUREG_EXT_SENS_DATA_15 = 0x58 MPUREG_EXT_SENS_DATA_16 = 0x59 MPUREG_EXT_SENS_DATA_17 = 0x5A MPUREG_EXT_SENS_DATA_18 = 0x5B MPUREG_EXT_SENS_DATA_19 = 0x5C MPUREG_EXT_SENS_DATA_20 = 0x5D MPUREG_EXT_SENS_DATA_21 = 0x5E MPUREG_EXT_SENS_DATA_22 = 0x5F MPUREG_EXT_SENS_DATA_23 = 0x60 MPUREG_I2C_SLV0_DO = 0x63 MPUREG_I2C_SLV1_DO = 0x64 MPUREG_I2C_SLV2_DO = 0x65 MPUREG_I2C_SLV3_DO = 0x66 MPUREG_I2C_MST_DELAY_CTRL = 0x67 MPUREG_SIGNAL_PATH_RESET = 0x68 MPUREG_MOT_DETECT_CTRL = 0x69 MPUREG_USER_CTRL = 0x6A MPUREG_PWR_MGMT_1 = 0x6B MPUREG_PWR_MGMT_2 = 0x6C MPUREG_BANK_SEL = 0x6D MPUREG_MEM_START_ADDR = 0x6E MPUREG_MEM_R_W = 0x6F MPUREG_DMP_CFG_1 = 0x70 MPUREG_DMP_CFG_2 = 0x71 MPUREG_FIFO_COUNTH = 0x72 MPUREG_FIFO_COUNTL = 0x73 MPUREG_FIFO_R_W = 0x74 MPUREG_WHOAMI = 0x75 MPUREG_XA_OFFSET_H = 0x77 MPUREG_XA_OFFSET_L = 0x78 MPUREG_YA_OFFSET_H = 0x7A MPUREG_YA_OFFSET_L = 0x7B MPUREG_ZA_OFFSET_H = 0x7D MPUREG_ZA_OFFSET_L = 0x7E /* ---- AK8963 Reg In MPU9250 ----------------------------------------------- */ AK8963_I2C_ADDR = 0x0C //0x18 AK8963_Device_ID = 0x48 AK8963_MAX_SAMPLE_RATE = 0x64 // 100 Hz // Read-only Reg AK8963_WIA = 0x00 AK8963_INFO = 0x01 AK8963_ST1 = 0x02 AK8963_HXL = 0x03 AK8963_HXH = 0x04 AK8963_HYL = 0x05 AK8963_HYH = 0x06 AK8963_HZL = 0x07 AK8963_HZH = 0x08 AK8963_ST2 = 0x09 // Write/Read Reg AK8963_CNTL1 = 0x0A AK8963_CNTL2 = 0x0B AK8963_ASTC = 0x0C AK8963_TS1 = 0x0D AK8963_TS2 = 0x0E AK8963_I2CDIS = 0x0F // Read-only Reg ( ROM ) AK8963_ASAX = 0x10 AK8963_ASAY = 0x11 AK8963_ASAZ = 0x12 // Configuration bits mpu9250 BIT_SLEEP = 0x40 BIT_H_RESET = 0x80 BITS_CLKSEL = 0x07 MPU_CLK_SEL_PLLGYROX = 0x01 MPU_CLK_SEL_PLLGYROZ = 0x03 MPU_EXT_SYNC_GYROX = 0x02 BITS_FS_250DPS = 0x00 BITS_FS_500DPS = 0x08 BITS_FS_1000DPS = 0x10 BITS_FS_2000DPS = 0x18 BITS_FS_2G = 0x00 BITS_FS_4G = 0x08 BITS_FS_8G = 0x10 BITS_FS_16G = 0x18 BITS_FS_MASK = 0x18 BITS_DLPF_CFG_256HZ_NOLPF2 = 0x00 BITS_DLPF_CFG_188HZ = 0x01 BITS_DLPF_CFG_98HZ = 0x02 BITS_DLPF_CFG_42HZ = 0x03 BITS_DLPF_CFG_20HZ = 0x04 BITS_DLPF_CFG_10HZ = 0x05 BITS_DLPF_CFG_5HZ = 0x06 BITS_DLPF_CFG_2100HZ_NOLPF = 0x07 BITS_DLPF_CFG_MASK = 0x07 BIT_INT_ANYRD_2CLEAR = 0x10 BIT_RAW_RDY_EN = 0x01 BIT_I2C_IF_DIS = 0x10 // Misc READ_FLAG = 0x80 MPU_BANK_SIZE = 0xFF CFG_MOTION_BIAS = 0x4B8 // Enable/disable gyro bias compensation BIT_FIFO_SIZE_1024 = 0x40 // FIFO buffer size BIT_AUX_IF_EN uint8 = 0x20 BIT_BYPASS_EN = 0x02 AKM_POWER_DOWN = 0x00 BIT_I2C_READ = 0x80 BIT_SLAVE_EN = 0x80 AKM_SINGLE_MEASUREMENT = 0x01 INV_CLK_PLL = 0x01 AK89xx_FSR = 9830 AKM_DATA_READY = 0x01 AKM_DATA_OVERRUN = 0x02 AKM_OVERFLOW = 0x80 MPU9250M_4800uT = 0.6 // 0.6 uT/LSB MPU9250T_85degC = 0.002995177763 // 0.002995177763 degC/LSB Magnetometer_Sensitivity_Scale_Factor = 0.15 )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type MPU9250 ¶
type MPU9250 struct { sensors.IMUSensor sensors.IMUCalData Address byte // contains filtered or unexported fields }
MPU9250 represents an InvenSense MPU9250 9DoF chip. All communication is via channels.
func NewMPU9250 ¶
func NewMPU9250(i2cbus *embd.I2CBus, address byte, sensitivityGyro, sensitivityAccel, sampleRate int, enableMag bool, applyHWOffsets bool) (*MPU9250, error)
NewMPU9250 creates a new MPU9250 object according to the supplied parameters. If there is no MPU9250 available or there is an error creating the object, an error is returned.
func (*MPU9250) CloseMPU ¶
func (mpu *MPU9250) CloseMPU()
CloseMPU stops the driver from reading the MPU. TODO westphae: need a way to start it going again!
func (*MPU9250) EnableGyroBiasCal ¶
EnableGyroBiasCal enables or disables motion bias compensation for the gyro. For flying we generally do not want this!
func (*MPU9250) MagEnabled ¶
MagEnabled returns whether or not the magnetometer is being read.
func (*MPU9250) ReadAccelBias ¶
ReadAccelBias reads the bias accelerometer value stored on the chip. These values are set at the factory.
func (*MPU9250) ReadGyroBias ¶
ReadGyroBias reads the bias gyro value stored on the chip. These values are set at the factory.
func (*MPU9250) ReadMagCalibration ¶
ReadMagCalibration reads the magnetometer bias values stored on the chpi. These values are set at the factory.
func (*MPU9250) SampleRate ¶
SampleRate returns the current sample rate of the MPU9250, in Hz.
func (*MPU9250) SetAccelLPF ¶
SetAccelLPF sets the low pass filter for the accelerometer.
func (*MPU9250) SetAccelSensitivity ¶
SetAccelSensitivity sets the accelerometer sensitivity of the MPU9250; it must be one of the following values: 2, 4, 8, 16, all in G (gravity).
func (*MPU9250) SetGyroLPF ¶
SetGyroLPF sets the low pass filter for the gyro.
func (*MPU9250) SetGyroSensitivity ¶
SetGyroSensitivity sets the gyro sensitivity of the MPU9250; it must be one of the following values: 250, 500, 1000, 2000 (all in deg/s).
func (*MPU9250) SetSampleRate ¶
SetSampleRate changes the sampling rate of the MPU.