|
|
#define | FEATURE_IO0 0x10 |
| |
|
#define | FEATURE_IO1 0x11 |
| |
|
#define | FEATURE_IO2 0x12 |
| |
|
#define | FEATURE_IO3 0x13 |
| |
|
#define | FEATURE_IO_STATUS 0x14 |
| |
|
#define | FEATURE_CTRL 0x40 |
| |
|
#define | INT_STATUS_INT1 0x0D |
| |
|
#define | INT_STATUS_INT2 0x0E |
| |
|
#define | BMI_SET_LOW_BYTE 0x00FF |
| |
|
#define | BMI_SET_HIGH_BYTE 0xFF00 |
| |
|
#define | BMI3_E_NULL_PTR INT8_C(-1) |
| |
|
#define | BMI323_CHIP_ID 0x43U |
| |
|
#define | BMI323_MAX_NUM_DATA 16U |
| |
|
#define | BMI3_ACC_DP_DOFFSET_X_MASK UINT16_C(0x3FFF) |
| |
|
#define | BMI3_ACC_DP_DOFFSET_Y_MASK UINT16_C(0x3FFF) |
| |
|
#define | BMI3_ACC_DP_DOFFSET_Z_MASK UINT16_C(0x3FFF) |
| |
|
#define | BMI3_ACC_DP_DGAIN_X_MASK UINT16_C(0x00FF) |
| |
|
#define | BMI3_ACC_DP_DGAIN_Y_MASK UINT16_C(0x00FF) |
| |
|
#define | BMI3_ACC_DP_DGAIN_Z_MASK UINT16_C(0x00FF) |
| |
|
#define | BMI3_GYR_DP_OFF_X_MASK UINT16_C(0x03FF) |
| |
|
#define | BMI3_GYR_DP_DGAIN_X_MASK UINT16_C(0x007F) |
| |
|
#define | BMI3_GYR_DP_OFF_Y_MASK UINT16_C(0x03FF) |
| |
|
#define | BMI3_GYR_DP_DGAIN_Y_MASK UINT16_C(0x007F) |
| |
|
#define | BMI3_GYR_DP_OFF_Z_MASK UINT16_C(0x03FF) |
| |
|
#define | BMI3_GYR_DP_DGAIN_Z_MASK UINT16_C(0x007F) |
| |
|
#define | DELTA_T 0.1f |
| |
|
#define | PI 3.14159265358f |
| |
|
#define | GYRO_MEAN_ERROR (PI * (5.0f / 180.0f)) |
| |
|
#define | BETA 0.8660254f * GYRO_MEAN_ERROR |
| |
|
#define | IMU_CAN_RX { .port = GPIO_PORT_B, .pin = 8 } |
| | IMU CAN RX Port.
|
| |
|
#define | IMU_CAN_TX { .port = GPIO_PORT_B, .pin = 9 } |
| | IMU CAN TX Port.
|
| |
|
#define | IMU_SPI_PORT SPI_PORT_2 |
| |
|
#define | IMU_SPI_PORT SPI_PORT_2 |
| |
|
#define | IMU_SPI_SDO { .port = GPIO_PORT_B, .pin = 15 } |
| |
|
#define | IMU_SPI_SDI { .port = GPIO_PORT_B, .pin = 14 } |
| |
|
#define | IMU_SPI_NSS { .port = GPIO_PORT_B, .pin = 12 } |
| |
|
#define | IMU_SPI_SCLK { .port = GPIO_PORT_B, .pin = 13 } |
| |
|
#define | IMU_SPI_INT1 { .port = GPIO_PORT_B, .pin = 0 } |
| |
|
#define | IMU_SPI_INT2 { .port = GPIO_PORT_B, .pin = 1 } |
| |
|
#define | IMU_SPI_BAUDRATE SPI_BAUDRATE_5MHZ |
| |
|
#define | IMU_SPI_MODE SPI_MODE_3 |
| |
|
#define | DELTA_T 0.1f |
| |
|
#define | PI 3.14159265358f |
| |
|
#define | GYRO_MEAN_ERROR (PI * (5.0f / 180.0f)) |
| |
|
#define | BETA 0.8660254f * GYRO_MEAN_ERROR |
| |
|
| enum | IMUAccelRange {
IMU_ACCEL_RANGE_2G
, IMU_ACCEL_RANGE_4G
, IMU_ACCEL_RANGE_8G
, IMU_ACCEL_RANGE_16G
,
NUM_IMU_ACCEL_RANGES
} |
| | IMU Accel range, in units of gravity acceleration (9.81m/s^2) More...
|
| |
| enum | IMUGyroRange {
IMU_GYRO_RANGE_125_DEG
, IMU_GYRO_RANGE_250_DEG
, IMU_GYRO_RANGE_500_DEG
, IMU_GYRO_RANGE_1000_DEG
,
IMU_GYRO_RANGE_2000_DEG
, NUM_IMU_GYRO_RANGES
} |
| | IMU Gyro range in units of degrees. More...
|
| |
| enum | Bmi323Registers {
BMI323_REG_BANK_SEL = 0x7F
, BMI323_REG_CHIP_ID = 0x00
, BMI323_REG_ERROR_STATUS = 0x02
, BMI323_REG_RESET = 0x63
,
BMI323_REG_ACCEL_REG_ADDR = 0x03
, BMI323_REG_ACCEL_X_L = 0x12
, BMI323_REG_ACCEL_X_H = 0x13
, BMI323_REG_ACCEL_Y_L = 0x14
,
BMI323_REG_ACCEL_Y_H = 0x15
, BMI323_REG_ACCEL_Z_L = 0x16
, BMI323_REG_ACCEL_Z_H = 0x17
, BMI323_REG_ACC_CONF = 0x20
,
BMI323_REG_GYRO_REG_ADDR = 0x06
, BMI323_REG_GYRO_X_L = 0x0C
, BMI323_REG_GYRO_X_H = 0x0D
, BMI323_REG_GYRO_Y_L = 0x0E
,
BMI323_REG_GYRO_Y_H = 0x0F
, BMI323_REG_GYRO_Z_L = 0x10
, BMI323_REG_GYRO_Z_H = 0x11
, BMI323_REG_GYRO_CONF = 0x21
,
BMI323_REG_CTRL_REG1 = 0x19
, BMI323_REG_CTRL_REG2 = 0x1A
, BMI323_REG_CTRL_REG3 = 0x1B
, BMI323_REG_CTRL_REG4 = 0x1C
,
BMI323_REG_CTRL_REG5 = 0x1D
, BMI323_REG_CTRL_REG6 = 0x1E
, BMI323_REG_PWR_CTRL = 0x6C
, BMI323_REG_PWR_CTRL2 = 0x6D
,
BMI323_REG_PWR_CTRL3 = 0x6E
, BMI323_REG_PWR_CTRL4 = 0x6F
, BMI323_REG_INT_CONFIG = 0x50
, BMI323_REG_INT_STATUS = 0x51
,
BMI323_REG_INT_EN_1 = 0x52
, BMI323_REG_INT_EN_2 = 0x53
, BMI323_REG_STATUS_REG = 0x1E
, BMI323_REG_FIFO_STATUS = 0x24
,
BMI323_REG_TEMP_SENSOR = 0x22
, BMI323_REG_CALIBRATION_REG = 0x24
, BMI323_REG_ERROR_REG = 0x2B
, BMI323_REG_CMD = 0x7E
,
ACC_DP_OFF_X = 0x60
, ACC_DP_DGAIN_X = 0x61
, ACC_DP_OFF_Y = 0x62
, ACC_DP_DGAIN_Y = 0x63
,
ACC_DP_OFF_Z = 0x64
, ACC_DP_DGAIN_Z = 0x65
, GYR_DP_OFF_X = 0x66
, GYR_DP_DGAIN_X = 0x67
,
GYR_DP_OFF_Y = 0x68
, GYR_DP_DGAIN_Y = 0x69
, GYR_DP_OFF_Z = 0x6A
, GYR_DP_DGAIN_Z = 0x6B
} |
| | BMI323 Registers. More...
|
| |
|
|
StatusCode | bmi323_init (Bmi323Storage *storage) |
| |
|
StatusCode | bmi323_update () |
| |
|
StatusCode | imu_init (Bmi323Storage *storage, Bmi323Settings *settings) |
| |
|
struct quaternion | quat_mult (struct quaternion q_L, struct quaternion q_R) |
| |
|
static void | quat_scalar (struct quaternion *q, float scalar) |
| |
|
static void | quat_add (struct quaternion *Sum, struct quaternion L, struct quaternion R) |
| |
|
static void | quat_sub (struct quaternion *Sum, struct quaternion L, struct quaternion R) |
| |
|
static struct quaternion | quat_conjugate (struct quaternion q) |
| |
|
static float | quat_Norm (struct quaternion q) |
| |
|
static void | quat_Normalization (struct quaternion *q) |
| |
|
void | imu_filter (float ax, float ay, float az, float gx, float gy, float gz) |
| |
|
void | eulerAngles (struct quaternion q, float *roll, float *pitch, float *yaw) |
| |
|
StatusCode | imu_run () |
| |