awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
jrowberg avatar

jrowberg/i2cdevlib

0
View on GitHub↗
4,251 stars·7,433 forks·C++·21 viewswww.i2cdevlib.com↗

I2cdevlib

i2cdevlib is a collection of peripheral drivers and hardware abstraction layers designed for I2C devices. It provides a sensor driver collection, a register map database, and a peripheral manager to coordinate communication between microcontrollers and hardware components.

The project utilizes a hardware abstraction layer to decouple device logic from specific microcontroller hardware and wire libraries. This transport-layer abstraction allows the same device drivers to remain portable across different hardware architectures.

The library covers a broad range of hardware integration, including motion and inertial sensors, environmental monitors, real-time clocks, and capacitive touch sensing. It also includes support for GPIO expansion, analog-to-digital conversion, and the driving of OLED displays and digital meters.

The system includes tools for I2C protocol debugging and traffic analysis, enabling the correlation of raw logic analyzer data with human-readable register map definitions.

Features

  • I2C Bus Interfaces - Provides standardized software interfaces for connecting microcontrollers to peripherals via the I2C protocol.
  • Hardware Porting - Adapts the codebase to run across different microprocessor systems by abstracting transport operations.
  • Bus Transport Interfaces - Implements a generic transport interface for bus operations, enabling driver portability across different hardware architectures.
  • Hardware Abstraction Layers - Implements hardware abstraction layers to decouple device driver logic from specific microcontroller hardware.
  • Peripheral Abstractions - Wraps I2C peripheral behaviors into standardized C++ classes to simplify interaction with diverse hardware.
  • Hardware Peripheral Drivers - Provides a collection of specialized driver layers for various I2C sensors and peripherals.
  • I2C Register Maps - Maintains a repository of bitfield definitions and register maps used to generate drivers and analyze bus traffic.
  • Sensor Drivers - Provides a comprehensive set of drivers for reading data from accelerometers, gyroscopes, and pressure sensors.
  • Transport Abstraction Layers - Decouples high-level device logic from low-level hardware communication libraries to ensure portability.
  • Hardware Register Databases - Maintains a comprehensive database of register maps and bitfield definitions for a wide variety of I2C hardware.
  • I2C I/O Expansion - Increases the number of available general-purpose input and output pins via an external 24-bit I2C expander.
  • I2C Port Expanders - Increases available digital input and output pins using external I2C port expanders.
  • Gyroscope Data Capture - Retrieves angular velocity measurements across three axes from a gyroscope sensor via the I2C protocol.
  • Multi-Bus Management - Coordinates multiple communication objects to enable simultaneous interaction with several hardware buses.
  • I2C Traffic Analysis - Analyzes I2C bus traffic and correlates raw data packets with register maps to troubleshoot communication.
  • Inertial Measurement Unit Interfaces - Collects combined acceleration and rotation measurements from 6-axis or 9-axis inertial measurement units.
  • Magnetometer Interfaces - Measures terrestrial magnetism and magnetic flux density across three axes to determine heading and 3D orientation.
  • Real-Time Clock Management - Implements a standardized I2C interface to read and write time and date information to hardware real-time clocks.
  • Register-Map Driver Generation - Automatically produces functional driver code and bitfield access patterns based on predefined hardware register specifications.
  • Register-to-Human Mappings - Provides tools to correlate raw I2C bus traffic with human-readable register map definitions for easier debugging.
  • Triaxial Acceleration Measurement - Provides drivers to retrieve high-resolution 3-axis acceleration and gravity measurements for detecting motion, shock, or tilt.
  • Driver Code Generators - Automatically creates functional management code and bitfield access patterns using defined register map specifications.
  • Bus Traffic Correlation - Correlates raw logic analyzer data with register maps to display human-readable names instead of hexadecimal values.
  • Capacitive Touch Sensing - Provides the ability to read touch and proximity data from capacitive sensors via I2C to detect user interaction.

Star history

Star history chart for jrowberg/i2cdevlibStar history chart for jrowberg/i2cdevlib

How this analysis was created: This summary and feature list are AI-generated from collected project material and can contain mistakes. Stars, license and language are imported from GitHub. Inclusion does not mean that we have tested or audited this project. Check the source documentation for any feature you depend on. Learn more on our About page.

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Projects sharing features with I2cdevlib

These projects share indexed features with I2cdevlib. Shared tags can include platform or build tooling; verify the primary use case before treating a result as a replacement.
  • raspberrypi/pico-examplesraspberrypi avatar

    raspberrypi/pico-examples

    3,835View on GitHub↗

    This project is a reference library of firmware examples and a development framework for creating embedded C applications on the RP2040 microcontroller. It provides a collection of hardware peripheral drivers and foundational patterns for managing system resources in resource-constrained environments. The library features reference implementations for programmable I/O state machines, allowing for the creation of custom hardware-level protocols. It also provides a multicore embedded framework to distribute computational workloads across multiple processor cores using symmetric processing. The

    C
    View on GitHub↗3,835
  • rwaldron/johnny-fiverwaldron avatar

    rwaldron/johnny-five

    13,401View on GitHub↗

    Johnny-Five is a JavaScript robotics framework and microcontroller hardware interface designed for programming robots and IoT devices. It provides a standardized library for managing pins, motors, and displays across various microcontroller platforms, allowing developers to control sensors and actuators using a consistent JavaScript API. The framework is distinguished by its use of a plugin-based hardware abstraction system, which enables communication with diverse hardware platforms and protocols. It supports real-time hardware manipulation and debugging through a read-eval-print loop that a

    JavaScript1-wireadcarduino
    View on GitHub↗13,401
  • hybridgroup/gobothybridgroup avatar

    hybridgroup/gobot

    9,425View on GitHub↗

    Gobot is a robotics framework for the Go programming language designed for developing robotics, drones, and IoT applications. It provides a hardware abstraction layer with standardized drivers to interact with GPIO, I2C, SPI, and PWM interfaces across various single-board computers and microcontrollers. The framework functions as an IoT device orchestrator and BLE device manager, enabling the coordination of multiple sensors, actuators, and Bluetooth Low Energy peripherals. It includes specialized interfaces for drone control, allowing for the management of flight maneuvers and video streams

    Goarduinobeaglebonebeaglebone-black
    View on GitHub↗9,425
  • petoicamp/opencat-quadruped-robotPetoiCamp avatar

    PetoiCamp/OpenCat-Quadruped-Robot

    4,891View on GitHub↗

    OpenCat-Quadruped-Robot is a development framework and motion control API for building four-legged robots. It provides a comprehensive environment for quadruped robot development, featuring tools for locomotion gait design, inverse kinematics, and a layered control architecture that separates high-level intelligence from low-level motion. The project distinguishes itself as an embedded AI deployment tool, allowing users to train, quantize, and deploy machine learning models to vision modules for tasks such as object detection and visual target tracking. It further supports complex human-robot

    C++aiarduinoblock-coding
    View on GitHub↗4,891
Compare all 30 related projects→

Frequently asked questions

What does jrowberg/i2cdevlib do?

i2cdevlib is a collection of peripheral drivers and hardware abstraction layers designed for I2C devices. It provides a sensor driver collection, a register map database, and a peripheral manager to coordinate communication between microcontrollers and hardware components.

What are the main features of jrowberg/i2cdevlib?

The main features of jrowberg/i2cdevlib are: I2C Bus Interfaces, Hardware Porting, Bus Transport Interfaces, Hardware Abstraction Layers, Peripheral Abstractions, Hardware Peripheral Drivers, I2C Register Maps, Sensor Drivers.

Which projects share features with jrowberg/i2cdevlib?

Projects with overlapping indexed features include: raspberrypi/pico-examples — This project is a reference library of firmware examples and a development framework for creating embedded C… rwaldron/johnny-five — Johnny-Five is a JavaScript robotics framework and microcontroller hardware interface designed for programming robots… hybridgroup/gobot — Gobot is a robotics framework for the Go programming language designed for developing robotics, drones, and IoT… petoicamp/opencat-quadruped-robot — OpenCat-Quadruped-Robot is a development framework and motion control API for building four-legged robots. It provides… embassy-rs/embassy — Embassy is an asynchronous framework for microcontrollers that provides a runtime for cooperative multitasking. It… riot-os/riot — RIOT is a real-time operating system designed for resource-constrained microcontrollers. It provides a kernel for…