Midnight Sun Firmware
Loading...
Searching...
No Matches
Imu

imu Firmware More...

Classes

struct  AccelGainOffsetValues
 
struct  GyroGainOffsetValues
 
struct  Axes
 
struct  Bmi323Settings
 
struct  Bmi323Storage
 

Macros

#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 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
 

Enumerations

enum  IMUAccelRange {
  IMU_ACCEL_RANGE_2G , IMU_ACCEL_RANGE_4G , IMU_ACCEL_RANGE_8G , IMU_ACCEL_RANGE_16G ,
  NUM_IMU_ACCEL_RANGE
}
 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...
 

Functions

StatusCode bmi323_init (Bmi323Storage *storage)
 
StatusCode bmi323_update ()
 
StatusCode imu_init (Bmi323Storage *storage, Bmi323Settings *settings)
 

Detailed Description

imu Firmware

Enumeration Type Documentation

◆ Bmi323Registers

BMI323 Registers.

Enumerator
BMI323_REG_BANK_SEL 

Register Bank Select

BMI323_REG_CHIP_ID 

Chip ID Register

BMI323_REG_ERROR_STATUS 

Error Status Register

BMI323_REG_RESET 

Soft Reset Command Register

BMI323_REG_ACCEL_REG_ADDR 

Accelerometer Data Start Address

BMI323_REG_ACCEL_X_L 

Accelerometer X-axis Low Byte

BMI323_REG_ACCEL_X_H 

Accelerometer X-axis High Byte

BMI323_REG_ACCEL_Y_L 

Accelerometer Y-axis Low Byte

BMI323_REG_ACCEL_Y_H 

Accelerometer Y-axis High Byte

BMI323_REG_ACCEL_Z_L 

Accelerometer Z-axis Low Byte

BMI323_REG_ACCEL_Z_H 

Accelerometer Z-axis High Byte

BMI323_REG_ACC_CONF 

Accelerometer configuration values

BMI323_REG_GYRO_REG_ADDR 

Gyroscope Data Start Address

BMI323_REG_GYRO_X_L 

Gyroscope X-axis Low Byte

BMI323_REG_GYRO_X_H 

Gyroscope X-axis High Byte

BMI323_REG_GYRO_Y_L 

Gyroscope Y-axis Low Byte

BMI323_REG_GYRO_Y_H 

Gyroscope Y-axis High Byte

BMI323_REG_GYRO_Z_L 

Gyroscope Z-axis Low Byte

BMI323_REG_GYRO_Z_H 

Gyroscope Z-axis High Byte

BMI323_REG_GYRO_CONF 

Gyroscope configuration values

BMI323_REG_CTRL_REG1 

Control Register 1

BMI323_REG_CTRL_REG2 

Control Register 2

BMI323_REG_CTRL_REG3 

Control Register 3

BMI323_REG_CTRL_REG4 

Control Register 4

BMI323_REG_CTRL_REG5 

Control Register 5

BMI323_REG_CTRL_REG6 

Control Register 6

BMI323_REG_PWR_CTRL 

Power Control Register

BMI323_REG_PWR_CTRL2 

Power Control 2 Register

BMI323_REG_PWR_CTRL3 

Power Control 3 Register

BMI323_REG_PWR_CTRL4 

Power Control 4 Register

BMI323_REG_INT_CONFIG 

Interrupt Configuration Register

BMI323_REG_INT_STATUS 

Interrupt Status Register

BMI323_REG_INT_EN_1 

Interrupt Enable 1 Register

BMI323_REG_INT_EN_2 

Interrupt Enable 2 Register

BMI323_REG_STATUS_REG 

Status Register

BMI323_REG_FIFO_STATUS 

FIFO Status Register

BMI323_REG_TEMP_SENSOR 

Temperature Data Register

BMI323_REG_CALIBRATION_REG 

Calibration Register

BMI323_REG_ERROR_REG 

Error Register

BMI323_REG_CMD 

Command Register (often used for resets and other operations)

◆ IMUAccelRange

IMU Accel range, in units of gravity acceleration (9.81m/s^2)

Enumerator
IMU_ACCEL_RANGE_2G 

+- 2Gs

IMU_ACCEL_RANGE_4G 

+- 4Gs

IMU_ACCEL_RANGE_8G 

+- 8Gs

IMU_ACCEL_RANGE_16G 

+- 16Gs

NUM_IMU_ACCEL_RANGE 

Number of IMU Accelerometer ranges

◆ IMUGyroRange

IMU Gyro range in units of degrees.

Enumerator
IMU_GYRO_RANGE_125_DEG 

+- 125deg

IMU_GYRO_RANGE_250_DEG 

+- 250deg

IMU_GYRO_RANGE_500_DEG 

+- 500deg

IMU_GYRO_RANGE_1000_DEG 

+- 1000deg

IMU_GYRO_RANGE_2000_DEG 

+- 2000deg