{
  "metadata": {
    "id": "bosch-bmi270",
    "name": "Bosch BMI270",
    "type": "sensor",
    "description": "Bosch Sensortec BMI270 is a 6-axis smart low-power inertial measurement unit with 16-bit triaxial accelerometer, 16-bit triaxial gyroscope, primary I2C/SPI host interface, optional secondary AUX/OIS interface, FIFO, and wearable motion and activity features.",
    "manufacturer": "Bosch Sensortec",
    "part_number": "BMI270",
    "datasheet_url": "https://www.bosch-sensortec.com/media/boschsensortec/downloads/datasheets/bst-bmi270-ds000.pdf",
    "tags": [
      "bmi270",
      "bosch",
      "bosch-sensortec",
      "imu",
      "accelerometer",
      "gyroscope",
      "6-axis",
      "i2c",
      "spi",
      "fifo",
      "interrupts",
      "wearable"
    ],
    "schema_version": "1.4.0",
    "version": "1.0",
    "taxonomy": [
      "sensor.motion"
    ],
    "thumbnail": "https://storage.googleapis.com/protoboard-delta.firebasestorage.app/protoparts/bosch-bmi270/thumbnail.png"
  },
  "domains": [
    {
      "domain": "electrical",
      "power_domains": [
        {
          "id": "vdd",
          "name": "VDD Core/Sensor Supply",
          "nominal_voltage_V": 1.8,
          "voltage_range_V": [
            1.71,
            3.6
          ],
          "max_current_mA": 1,
          "isolation_type": "non_isolated",
          "ground_reference": "common",
          "description": "Analog and digital core supply. Typical current is 685 uA in accelerometer plus gyroscope normal mode at max ODR and 970 uA in performance mode."
        },
        {
          "id": "vddio",
          "name": "VDDIO I/O Supply",
          "nominal_voltage_V": 1.8,
          "voltage_range_V": [
            1.2,
            3.6
          ],
          "max_current_mA": 1,
          "isolation_type": "non_isolated",
          "ground_reference": "common",
          "description": "Digital I/O supply for I2C, SPI, interrupt, AUX, and OIS pins."
        }
      ],
      "resources": [
        {
          "id": "pin1_sdo",
          "name": "SDO",
          "description": "Primary SPI serial data output in 4-wire SPI, or I2C address bit 0 select in I2C mode.",
          "functions": [
            {
              "name": "SPI_MISO",
              "direction": "source",
              "signal_class": "data"
            },
            {
              "name": "I2C_ADDR",
              "direction": "sink",
              "signal_class": "data"
            }
          ],
          "power_domain_id": "vddio",
          "connector_type": "surface_pad",
          "notes": "Pull to GND for 7-bit I2C address 0x68 or to VDDIO for 0x69. Do not connect in 3-wire SPI mode."
        },
        {
          "id": "pin2_asdx",
          "name": "ASDx",
          "description": "Secondary AUX or OIS data pin.",
          "functions": [
            {
              "name": "I2C_MSDA",
              "direction": "bidirectional",
              "signal_class": "data"
            },
            {
              "name": "SPI_MOSI",
              "direction": "sink",
              "signal_class": "data"
            }
          ],
          "power_domain_id": "vddio",
          "connector_type": "surface_pad",
          "notes": "If the secondary interface is unused, connect ASDx to VDDIO or leave unconnected. Do not connect to GND."
        },
        {
          "id": "pin3_ascx",
          "name": "ASCx",
          "description": "Secondary AUX or OIS clock pin.",
          "functions": [
            {
              "name": "I2C_MSCL",
              "direction": "source",
              "signal_class": "clock"
            },
            {
              "name": "SPI_SCLK",
              "direction": "sink",
              "signal_class": "clock"
            }
          ],
          "power_domain_id": "vddio",
          "connector_type": "surface_pad",
          "notes": "If the secondary interface is unused, connect ASCx to VDDIO or leave unconnected. Do not connect to GND."
        },
        {
          "id": "pin4_int1",
          "name": "INT1",
          "description": "Configurable interrupt pin 1. Can be output or input for FIFO external synchronization.",
          "functions": [
            {
              "name": "INT1",
              "direction": "source",
              "signal_class": "data"
            }
          ],
          "power_domain_id": "vddio",
          "connector_type": "surface_pad",
          "notes": "Interrupt output can be push-pull or open-drain, active-high or active-low."
        },
        {
          "id": "pin5_vddio",
          "name": "VDDIO",
          "description": "Digital I/O supply voltage input, 1.2 V to 3.6 V.",
          "functions": [
            {
              "name": "VDDIO_IN",
              "direction": "sink",
              "signal_class": "power"
            }
          ],
          "power_domain_id": "vddio",
          "connector_type": "surface_pad",
          "notes": "Place a 100 nF decoupling capacitor close to this pin."
        },
        {
          "id": "pin6_gndio",
          "name": "GNDIO",
          "description": "Ground for the I/O domain.",
          "functions": [
            {
              "name": "GND",
              "direction": "sink",
              "signal_class": "ground"
            }
          ],
          "power_domain_id": "vddio",
          "connector_type": "surface_pad"
        },
        {
          "id": "pin7_gnd",
          "name": "GND",
          "description": "Ground for digital and analog domains.",
          "functions": [
            {
              "name": "GND",
              "direction": "sink",
              "signal_class": "ground"
            }
          ],
          "power_domain_id": "vdd",
          "connector_type": "surface_pad"
        },
        {
          "id": "pin8_vdd",
          "name": "VDD",
          "description": "Analog and digital core supply input, 1.71 V to 3.6 V.",
          "functions": [
            {
              "name": "VDD_IN",
              "direction": "sink",
              "signal_class": "power"
            }
          ],
          "power_domain_id": "vdd",
          "connector_type": "surface_pad",
          "notes": "Place a 100 nF decoupling capacitor close to this pin."
        },
        {
          "id": "pin9_int2",
          "name": "INT2",
          "description": "Configurable interrupt pin 2. Can be output or input for FIFO external synchronization.",
          "functions": [
            {
              "name": "INT2",
              "direction": "source",
              "signal_class": "data"
            }
          ],
          "power_domain_id": "vddio",
          "connector_type": "surface_pad",
          "notes": "Interrupt output can be push-pull or open-drain, active-high or active-low."
        },
        {
          "id": "pin10_ocsb",
          "name": "OCSB",
          "description": "Secondary OIS chip-select input.",
          "functions": [
            {
              "name": "SPI_CS_N",
              "direction": "sink",
              "signal_class": "data"
            }
          ],
          "power_domain_id": "vddio",
          "connector_type": "surface_pad",
          "notes": "Can be DNC when the OIS interface is unused. Can be tied to GND only if IF_CONF.ois_en is 0."
        },
        {
          "id": "pin11_osdo",
          "name": "OSDO",
          "description": "Secondary OIS serial data output.",
          "functions": [
            {
              "name": "SPI_MISO",
              "direction": "source",
              "signal_class": "data"
            }
          ],
          "power_domain_id": "vddio",
          "connector_type": "surface_pad",
          "notes": "Can be DNC when the OIS interface is unused. Can be tied to GND only if IF_CONF.ois_en is 0."
        },
        {
          "id": "pin12_csb",
          "name": "CSB",
          "description": "Primary SPI chip-select input. Tie to VDDIO for I2C mode.",
          "functions": [
            {
              "name": "SPI_CS_N",
              "direction": "sink",
              "signal_class": "data"
            }
          ],
          "power_domain_id": "vddio",
          "connector_type": "surface_pad",
          "has_internal_pullup": true,
          "notes": "CSB has an internal pull-up. Bosch recommends hard-wiring CSB to VDDIO for I2C mode."
        },
        {
          "id": "pin13_scx",
          "name": "SCx",
          "description": "Primary SPI clock input or I2C SCL input.",
          "functions": [
            {
              "name": "SPI_SCLK",
              "direction": "sink",
              "signal_class": "clock"
            },
            {
              "name": "I2C_SCL",
              "direction": "sink",
              "signal_class": "clock"
            }
          ],
          "power_domain_id": "vddio",
          "connector_type": "surface_pad"
        },
        {
          "id": "pin14_sdx",
          "name": "SDx",
          "description": "Primary I2C SDA, SPI 4-wire SDI input, or SPI 3-wire bidirectional SDIO.",
          "functions": [
            {
              "name": "I2C_SDA",
              "direction": "bidirectional",
              "signal_class": "data"
            },
            {
              "name": "SPI_MOSI",
              "direction": "sink",
              "signal_class": "data"
            },
            {
              "name": "SPI_SDO_3WIRE",
              "direction": "bidirectional",
              "signal_class": "data"
            }
          ],
          "power_domain_id": "vddio",
          "connector_type": "surface_pad",
          "notes": "External pull-up resistor required when used as I2C SDA."
        }
      ],
      "interfaces": [
        {
          "id": "i2c_slave",
          "name": "Primary I2C Slave",
          "protocol": {
            "type": "i2c",
            "role": "slave"
          },
          "requires": [
            {
              "function": "I2C_SCL",
              "count": 1
            },
            {
              "function": "I2C_SDA",
              "count": 1
            },
            {
              "function": "I2C_ADDR",
              "count": 1
            }
          ],
          "constraints": {
            "max_connections": 1,
            "max_lane_rate_mbps": 1,
            "requires_matching_voltage_domain": true
          },
          "description": "I2C standard, fast, and fast-mode-plus target interface. Default 7-bit address is 0x68 when SDO is pulled low, or 0x69 when SDO is pulled high."
        },
        {
          "id": "spi_slave",
          "name": "Primary SPI Slave",
          "protocol": {
            "type": "spi",
            "role": "slave"
          },
          "requires": [
            {
              "function": "SPI_CS_N",
              "count": 1
            },
            {
              "function": "SPI_SCLK",
              "count": 1
            },
            {
              "function": "SPI_MOSI",
              "count": 1
            },
            {
              "function": "SPI_MISO",
              "count": 1
            }
          ],
          "constraints": {
            "max_connections": 1,
            "max_lane_rate_mbps": 10,
            "requires_matching_voltage_domain": true
          },
          "description": "Primary SPI slave interface. Supports 4-wire by default and 3-wire through IF_CONF.spi3. Maximum clock is 10 MHz for VDDIO >= 1.62 V, and 7 MHz below 1.62 V."
        },
        {
          "id": "int1_if",
          "name": "INT1 Output",
          "protocol": {
            "type": "digital",
            "role": "output"
          },
          "requires": [
            {
              "function": "INT1",
              "count": 1
            }
          ],
          "constraints": {
            "max_connections": 1
          },
          "description": "Programmable interrupt or synchronization pin. Output can be push-pull or open-drain."
        },
        {
          "id": "int2_if",
          "name": "INT2 Output",
          "protocol": {
            "type": "digital",
            "role": "output"
          },
          "requires": [
            {
              "function": "INT2",
              "count": 1
            }
          ],
          "constraints": {
            "max_connections": 1
          },
          "description": "Programmable interrupt or synchronization pin. Output can be push-pull or open-drain."
        },
        {
          "id": "vdd_power_in",
          "name": "VDD Power",
          "protocol": {
            "type": "power",
            "role": "input"
          },
          "requires": [
            {
              "function": "VDD_IN",
              "count": 1
            },
            {
              "function": "GND",
              "count": 1
            }
          ],
          "description": "1.71 V to 3.6 V core and sensor supply."
        },
        {
          "id": "vddio_power_in",
          "name": "VDDIO Power",
          "protocol": {
            "type": "power",
            "role": "input"
          },
          "requires": [
            {
              "function": "VDDIO_IN",
              "count": 1
            },
            {
              "function": "GND",
              "count": 1
            }
          ],
          "description": "1.2 V to 3.6 V digital I/O supply."
        },
        {
          "id": "aux_i2c_master",
          "name": "Secondary AUX I2C Master",
          "protocol": {
            "type": "i2c",
            "role": "master"
          },
          "requires": [
            {
              "function": "I2C_MSCL",
              "count": 1
            },
            {
              "function": "I2C_MSDA",
              "count": 1
            }
          ],
          "constraints": {
            "max_connections": 1,
            "requires_matching_voltage_domain": true
          },
          "description": "Optional secondary AUX I2C master for one external sensor such as a magnetometer."
        }
      ],
      "supply_voltage_V": [
        1.2,
        3.6
      ],
      "power_consumption_mW": 1.746,
      "pin_count": 14,
      "metadata": {
        "package_type": "LGA-14",
        "i2c_addresses_7bit": [
          "0x68",
          "0x69"
        ],
        "i2c_max_frequency_hz": 1000000,
        "spi_max_frequency_hz": 10000000,
        "spi_max_frequency_low_vddio_hz": 7000000,
        "accelerometer_ranges_g": [
          2,
          4,
          8,
          16
        ],
        "gyroscope_ranges_dps": [
          125,
          250,
          500,
          1000,
          2000
        ],
        "accelerometer_odr_hz": [
          0.78,
          1600
        ],
        "gyroscope_odr_hz": [
          25,
          6400
        ],
        "fifo_size_bytes": 2048,
        "logic_levels": {
          "vih_min": "0.7*VDDIO",
          "vil_max": "0.3*VDDIO",
          "voh_min": "0.8*VDDIO",
          "vol_max": "0.2*VDDIO"
        }
      }
    },
    {
      "domain": "mechanical",
      "resources": [
        {
          "id": "pkg",
          "name": "LGA-14 Package",
          "description": "Surface-mount 14-pin LGA package body.",
          "functions": [
            {
              "name": "MECHANICAL_MOUNT",
              "direction": "bidirectional",
              "signal_class": "mechanical_drive"
            }
          ],
          "connector_type": "surface_mount"
        }
      ],
      "interfaces": [
        {
          "id": "pcb_mount",
          "name": "PCB Surface Mount",
          "protocol": {
            "type": "mechanical_connection",
            "role": "mounting_point"
          },
          "requires": [
            {
              "function": "MECHANICAL_MOUNT",
              "count": 1
            }
          ],
          "description": "Surface-mount LGA solder attachment to PCB land pattern."
        }
      ],
      "package_type": "LGA-14",
      "dimensions_mm": {
        "length": 3,
        "width": 2.5,
        "height": 0.83
      },
      "metadata": {
        "mounting_method": "surface_mount",
        "requires_special_tools": false,
        "field_serviceable": false
      }
    },
    {
      "domain": "thermal",
      "resources": [],
      "interfaces": [],
      "operating_temperature_C": [
        -40,
        85
      ],
      "metadata": {
        "requires_thermal_management": false
      }
    }
  ],
  "design_rules": [
    "Tie CSB to VDDIO for I2C mode; BMI270 powers up in I2C mode when CSB remains high.",
    "For I2C mode, pull SDO to GND for address 0x68 or to VDDIO for address 0x69.",
    "I2C SDA and SCL require external pull-up resistors to VDDIO.",
    "Place 100 nF decoupling capacitors close to pin 5 VDDIO and pin 8 VDD.",
    "If secondary ASDx and ASCx are unused, connect them to VDDIO or leave unconnected; do not connect them to GND.",
    "If INT1 or INT2 are unused, leave them unconnected.",
    "OCSB and OSDO may be left unconnected when the OIS interface is unused; only tie them to GND if IF_CONF.ois_en is 0.",
    "Maximum primary SPI clock is 10 MHz for VDDIO >= 1.62 V and 7 MHz for VDDIO below 1.62 V."
  ],
  "usage_notes": "BMI270 is a bare LGA IC, not a ready-to-wire breakout. Use it when the PCB can support the Bosch LGA-14 footprint, local decoupling, and 1.2 V to 3.6 V logic-level compatibility. For simple microcontroller integration, I2C mode with CSB tied high and SDO strapped for address selection is usually the lowest-risk connection.",
  "application_examples": [
    "Wearable and hearable motion sensing.",
    "AR/VR controller or head-motion tracking.",
    "Robotics pose, vibration, gesture, and activity detection.",
    "Foam dart blaster motion and aim sensing in the Stinger electronics project."
  ],
  "compatibility_notes": "Logic thresholds scale with VDDIO. The primary I2C interface supports only 7-bit addresses 0x68 and 0x69. The primary interface pins are shared between I2C and SPI, so choose one host interface per design unless the PCB and firmware intentionally support protocol selection.",
  "warnings": [
    "This is a fine-pitch surface-mount LGA IC and is not suitable for solderless breadboard use without a breakout board.",
    "Do not ground ASDx or ASCx when the secondary interface is unused; Bosch recommends VDDIO or DNC.",
    "Current, noise, and timing specs depend on selected power mode, ODR, filters, and VDDIO level."
  ]
}