# esp-idf-lib/mpu6050 architecture

> Architecture diagram of the GitHub repository esp-idf-lib/mpu6050, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/esp-idf-lib/mpu6050
- Repository: https://github.com/esp-idf-lib/mpu6050

## Overview

This repository is an ESP-IDF driver for MPU6000/MPU6050 six-axis motion sensors. An embedded application configures and initializes the driver, then reads acceleration, rotation, temperature, or buffered samples; it can also configure motion detection, interrupts, power, and the sensor’s auxiliary I²C master. The sampled implementation shows register-level access through i2cdev and conversions for measurement reads. The source excerpts are incomplete, so detailed wiring for unsampled feature routines is not inferred.

Main entry points: [`mpu6050.h`](https://github.com/esp-idf-lib/mpu6050/blob/main/mpu6050.h) (MPU6050 API), [`mpu6050_regs.h`](https://github.com/esp-idf-lib/mpu6050/blob/main/mpu6050_regs.h) (Register definitions), [`mpu6050.c`](https://github.com/esp-idf-lib/mpu6050/blob/main/mpu6050.c) (Sensor configuration)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["Driver API"]
  node_public_api["MPU6050 API<br/>[mpu6050.h]"]
end

subgraph group_features["Sensor Features"]
  node_init["Initialization<br/>[mpu6050.c]"]
  node_configuration["Sensor configuration<br/>[mpu6050.c]"]
  node_measurements["Measurement reads<br/>[mpu6050.c]"]
  node_fifo["FIFO sampling<br/>[mpu6050.c]"]
  node_motion["Motion detection<br/>[mpu6050.c]"]
  node_auxiliary["Auxiliary I2C<br/>[mpu6050.c]"]
  node_interrupts["Interrupt controls<br/>[mpu6050.c]"]
  node_power["Power controls<br/>[mpu6050.c]"]
end

subgraph group_hardware["Hardware Access"]
  node_registers["Register definitions<br/>[mpu6050_regs.h]"]
  node_i2cdev["i2cdev access"]
  node_sensor["MPU6000/MPU6050"]
end

node_application(("Embedded application"))

node_application -->|"calls"| node_public_api
node_public_api -->|"implements"| node_init
node_public_api -->|"implements"| node_configuration
node_public_api -->|"implements"| node_measurements
node_public_api -->|"implements"| node_fifo
node_public_api -->|"implements"| node_motion
node_public_api -->|"implements"| node_auxiliary
node_public_api -->|"implements"| node_interrupts
node_public_api -->|"implements"| node_power
node_init -->|"sets defaults"| node_configuration
node_configuration -->|"uses definitions"| node_registers
node_measurements -->|"uses definitions"| node_registers
node_fifo -->|"uses definitions"| node_registers
node_motion -->|"uses definitions"| node_registers
node_auxiliary -->|"uses definitions"| node_registers
node_interrupts -->|"uses definitions"| node_registers
node_power -->|"uses definitions"| node_registers
node_init -->|"creates bus mutex"| node_i2cdev
node_configuration -->|"accesses registers"| node_i2cdev
node_measurements -->|"reads registers"| node_i2cdev
node_fifo -->|"accesses registers"| node_i2cdev
node_motion -->|"accesses registers"| node_i2cdev
node_auxiliary -->|"accesses registers"| node_i2cdev
node_interrupts -->|"accesses registers"| node_i2cdev
node_power -->|"accesses registers"| node_i2cdev
node_i2cdev -->|"transfers data"| node_sensor

click node_public_api "https://github.com/esp-idf-lib/mpu6050/blob/main/mpu6050.h"
click node_init "https://github.com/esp-idf-lib/mpu6050/blob/main/mpu6050.c"
click node_configuration "https://github.com/esp-idf-lib/mpu6050/blob/main/mpu6050.c"
click node_measurements "https://github.com/esp-idf-lib/mpu6050/blob/main/mpu6050.c"
click node_fifo "https://github.com/esp-idf-lib/mpu6050/blob/main/mpu6050.c"
click node_motion "https://github.com/esp-idf-lib/mpu6050/blob/main/mpu6050.c"
click node_auxiliary "https://github.com/esp-idf-lib/mpu6050/blob/main/mpu6050.c"
click node_interrupts "https://github.com/esp-idf-lib/mpu6050/blob/main/mpu6050.c"
click node_power "https://github.com/esp-idf-lib/mpu6050/blob/main/mpu6050.c"
click node_registers "https://github.com/esp-idf-lib/mpu6050/blob/main/mpu6050_regs.h"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_public_api toneBlue
class node_init,node_configuration,node_measurements,node_fifo,node_motion,node_auxiliary,node_interrupts,node_power toneAmber
class node_registers,node_i2cdev,node_sensor toneMint
class node_application toneIndigo
```

## Components

### Driver API

- [MPU6050 API](https://github.com/esp-idf-lib/mpu6050/blob/main/mpu6050.h): `mpu6050.h`

### Sensor Features

- [Initialization](https://github.com/esp-idf-lib/mpu6050/blob/main/mpu6050.c): `mpu6050.c`
- [Sensor configuration](https://github.com/esp-idf-lib/mpu6050/blob/main/mpu6050.c): `mpu6050.c`
- [Measurement reads](https://github.com/esp-idf-lib/mpu6050/blob/main/mpu6050.c): `mpu6050.c`
- [FIFO sampling](https://github.com/esp-idf-lib/mpu6050/blob/main/mpu6050.c): `mpu6050.c`
- [Motion detection](https://github.com/esp-idf-lib/mpu6050/blob/main/mpu6050.c): `mpu6050.c`
- [Auxiliary I2C](https://github.com/esp-idf-lib/mpu6050/blob/main/mpu6050.c): `mpu6050.c`
- [Interrupt controls](https://github.com/esp-idf-lib/mpu6050/blob/main/mpu6050.c): `mpu6050.c`
- [Power controls](https://github.com/esp-idf-lib/mpu6050/blob/main/mpu6050.c): `mpu6050.c`

### Hardware Access

- [Register definitions](https://github.com/esp-idf-lib/mpu6050/blob/main/mpu6050_regs.h): `mpu6050_regs.h`
- **i2cdev access**
- **MPU6000/MPU6050**

### Other components

- **Embedded application**

## Connections

- Embedded application → MPU6050 API: calls
- MPU6050 API → Initialization: implements
- MPU6050 API → Sensor configuration: implements
- MPU6050 API → Measurement reads: implements
- MPU6050 API → FIFO sampling: implements
- MPU6050 API → Motion detection: implements
- MPU6050 API → Auxiliary I2C: implements
- MPU6050 API → Interrupt controls: implements
- MPU6050 API → Power controls: implements
- Initialization → Sensor configuration: sets defaults
- Sensor configuration → Register definitions: uses definitions
- Measurement reads → Register definitions: uses definitions
- FIFO sampling → Register definitions: uses definitions
- Motion detection → Register definitions: uses definitions
- Auxiliary I2C → Register definitions: uses definitions
- Interrupt controls → Register definitions: uses definitions
- Power controls → Register definitions: uses definitions
- Initialization → i2cdev access: creates bus mutex
- Sensor configuration → i2cdev access: accesses registers
- Measurement reads → i2cdev access: reads registers
- FIFO sampling → i2cdev access: accesses registers
- Motion detection → i2cdev access: accesses registers
- Auxiliary I2C → i2cdev access: accesses registers
- Interrupt controls → i2cdev access: accesses registers
- Power controls → i2cdev access: accesses registers
- i2cdev access → MPU6000/MPU6050: transfers data
