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