Files
2026-05-08 23:46:39 +02:00

90 lines
2.0 KiB
C

#pragma once
// --- Core IDs ---
#include <stdint.h>
#define BMI270_CHIP_ID 0x00
#define BMI270_ERR_REG 0x02
#define BMI270_STATUS 0x03
// --- Power / system ---
#define BMI270_PWR_CONF 0x7C
#define BMI270_PWR_CTRL 0x7D
#define BMI270_CMD 0x7E
#define BMI270_INIT_CTRL 0x59
#define BMI270_INIT_ADDR_0 0x5B
#define BMI270_INIT_ADDR_1 0x5C
#define BMI270_INIT_DATA 0x5E
#define BMI270_INTERNAL_STAT 0x21
// --- Accel config ---
#define BMI270_ACC_CONF 0x40
#define BMI270_ACC_RANGE 0x41
// --- Gyro config ---
#define BMI270_GYR_CONF 0x42
#define BMI270_GYR_RANGE 0x43
// --- Data registers ---
#define BMI270_ACC_DATA_X_LSB 0x0C
#define BMI270_ACC_DATA_X_HSB 0x0D
#define BMI270_ACC_DATA_Y_LSB 0x0E
#define BMI270_ACC_DATA_Y_HSB 0x0F
#define BMI270_ACC_DATA_Z_LSB 0x10
#define BMI270_ACC_DATA_Z_HSB 0x11
#define BMI270_GYR_DATA_X_LSB 0x12
#define BMI270_GYR_DATA_X_HSB 0x13
#define BMI270_GYR_DATA_Y_LSB 0x14
#define BMI270_GYR_DATA_Y_HSB 0x15
#define BMI270_GYR_DATA_Z_LSB 0x16
#define BMI270_GYR_DATA_Z_HSB 0x17
#define BMI270_FIFO_LENGTH_0 0x24
#define BMI270_FIFO_DATA 0x26
#define BMI270_FIFO_CONFIG_0 0x48
#define BMI270_FIFO_CONFIG_1 0x49
// --- Commands ---
#define BMI270_CMD_SOFTRESET 0xB6
#define BMI270_CMD_FIFO_FLUSH 0xB0
// --- Power bits ---
#define BMI270_PWR_TEMP_EN (1 << 3) // 0x08
#define BMI270_PWR_ACCEL_EN (1 << 2) // 0x04
#define BMI270_PWR_GYRO_EN (1 << 1) // 0x02
#define BMI270_PWR_AUX_EN (1 << 0) // 0x01
// --- Config presets (minimal usable defaults) ---
#define BMI270_ACC_CONF_100HZ 0xA8
#define BMI270_GYR_CONF_100HZ 0xA9
#define ACC_SCALE (4.0f / 32768.0f)
#define G_TO_MS2 9.80665f
#define GYR_SCALE (2000.0f / 32768.0f)
#define DEG_TO_RAD 0.01745329251f
typedef struct {
int16_t ax_raw;
int16_t ay_raw;
int16_t az_raw;
int16_t gx_raw;
int16_t gy_raw;
int16_t gz_raw;
float ax;
float ay;
float az;
float gx;
float gy;
float gz;
uint32_t timestamp_ms;
} bmi270_data_t;
bool bmi270_init(void);
bool bmi270_read(bmi270_data_t *d);
extern const uint8_t bmi270_config_file[8192];