raw_data

Example of the component espressif/bmi270_sensor v0.4.0
# BMI270 六轴原始数据示例

[English](README.md)

本示例演示如何通过 `bmi270_sensor_create_from_master_bus()` 将 BMI270(Base 固件)接入原生 I2C master 总线,采集加速度计与陀螺仪数据,并以 CSV 格式输出原始 ADC 计数值及换算后的物理量(m/s² 与 °/s)。

## 硬件连接

- 支持任意连接 BMI270 的 ESP32 系列开发板(I2C 模式)。
- 确保电源、公共地连接正确,并接入合适的 SDA/SCL 上拉电阻(组件默认使用 400 kHz 通信)。
- SDO 引脚默认接地(对应从机地址 **0x68**)。若 SDO 连接到 MCU GPIO,可在配置中指定。

| 信号 | 默认 GPIO(ESP32-S3) | 说明 |
| --- | --- | --- |
| SDA | GPIO2 | 主 I2C 数据线 |
| SCL | GPIO1 | 主 I2C 时钟线 |
| SDO | 可选(默认外部拉低) | 可选引脚,由程序输出低电平选择 0x68 地址 |

## 构建与运行

1. 设置目标芯片并构建工程:
   ```sh
   idf.py set-target esp32s3
   idf.py menuconfig
   idf.py build
   ```
2. 烧录固件并打开串口监视器:
   ```sh
   ESPBAUD=921600 idf.py -p PORT flash monitor
   ```

在 `menuconfig` 的 **Raw Data Example Configuration** 中可配置以下参数:
* **SDA / SCL GPIO**:根据实际硬件连接修改。
* **ODR(输出采样率)**:支持 25 Hz、50 Hz、100 Hz、200 Hz(默认 100 Hz)。
* **加速度计量程**:支持 ±2 g、±4 g、±8 g、±16 g(默认 ±2 g)。
* **陀螺仪量程**:支持 ±125、±250、±500、±1000、±2000 °/s(默认 ±2000 °/s)。
* **轮询间隔**:数据读取周期(默认 100 ms)。
* **输出条数**:默认设为 `0` 表示持续输出;若设为大于 0 的整数,则输出指定条数后安全释放资源并退出。

## 输出格式与换算

启动后输出 CSV 表头及实时采样数据:

```text
timestamp_us,acc_x_raw,acc_y_raw,acc_z_raw,gyr_x_raw,gyr_y_raw,gyr_z_raw,acc_x_m_s2,acc_y_m_s2,acc_z_m_s2,gyr_x_dps,gyr_y_dps,gyr_z_dps
```

| CSV 字段 | 含义 |
| --- | --- |
| `timestamp_us` | ESP32 读取该帧数据的主机微秒时间戳 |
| `acc_x_raw`, `acc_y_raw`, `acc_z_raw` | 加速度计 16 位有符号原始 ADC 读数 |
| `gyr_x_raw`, `gyr_y_raw`, `gyr_z_raw` | 陀螺仪 16 位有符号原始 ADC 读数 |
| `acc_x_m_s2`, `acc_y_m_s2`, `acc_z_m_s2` | 换算后的加速度物理量(单位:m/s²) |
| `gyr_x_dps`, `gyr_y_dps`, `gyr_z_dps` | 换算后的角速度物理量(单位:°/s) |

### 物理量换算公式

* **加速度 (m/s²)** = `原始值 × 加速度量程 (g) × 9.80665 ÷ 32768`
* **角速度 (°/s)** = `原始值 × 陀螺仪量程 (°/s) ÷ 32768`

> 静止放置时,加速度各轴矢量和约为 9.8 m/s²(受地球重力影响),陀螺仪输出接近 0。若需高精度姿态测量,需在应用层补充静态零偏校准与传感器融合算法。

To create a project from this example, run:

idf.py create-project-from-example "espressif/bmi270_sensor=0.4.0:raw_data"

or download archive (~8.00 KB)