.. _module-pw_i2c: ====== pw_i2c ====== .. pigweed-module:: :name: pw_i2c .. tab-set:: .. tab-item:: app.cpp .. include:: ../pw_i2c_rp2040/docs.rst :start-after: .. pw_i2c_rp2040-example-start :end-before: .. pw_i2c_rp2040-example-end .. tab-item:: BUILD.bazel .. code-block:: py cc_library( # ... deps = [ # ... "@pigweed//pw_i2c:address", "@pigweed//pw_i2c:device", # ... ] + select({ "@platforms//os:freertos": [ "@pigweed//pw_i2c_rp2040:initiator", ], "//conditions:default": [ # Fake example of a custom implementation. "//lib/pw_i2c_my_device:initiator", ], }), ) ``pw_i2c`` provides C++ libraries and helpers for interacting with I2C devices. .. grid:: 2 .. grid-item-card:: :octicon:`rocket` Quickstart :link: module-pw_i2c-quickstart :link-type: ref :class-item: sales-pitch-cta-primary How to set up ``pw_i2c`` in your build system and interact with an I2C device via the C++ API. .. grid-item-card:: :octicon:`list-unordered` Guides :link: module-pw_i2c-guides :link-type: ref :class-item: sales-pitch-cta-secondary How to mock up I2C transactions, configure and read from a device's register, communicate with an I2C device over RPC, and more. .. grid:: 2 .. grid-item-card:: :octicon:`code-square` Reference :link: module-pw_i2c-reference :link-type: ref :class-item: sales-pitch-cta-secondary API references for ``pw::i2c::Initiator``, ``pw::i2c::Address``, ``pw::i2c::Device``, and more. .. grid-item-card:: :octicon:`stack` Implementations :link: module-pw_i2c-impl :link-type: ref :class-item: sales-pitch-cta-secondary A summary of the existing ``pw_i2c`` implementations and a guide on how to create your own. .. toctree:: :hidden: :maxdepth: 1 guides reference backends