Only this pageAll pages
Powered by GitBook
1 of 3

I2C - Guide

Guide

Loading...

Loading...

How to use I2C

This page shows the basic usage of the I2C bus.

the following examples are using an external GPIO expander.

List i2c devices on a specific bus

i2cdetect is used to identify available I2C devices on a given I2C bus. An overview of the available I2C busses can be achieved by using i2cdetect -l

test@test-desktop:~$ i2cdetect -l
i2c-3	i2c       	3190000.i2c                     	I2C adapter
i2c-1	i2c       	c240000.i2c                     	I2C adapter
i2c-101	i2c       	15210000.nvdisplay              	I2C adapter
i2c-8	i2c       	31e0000.i2c                     	I2C adapter
i2c-6	i2c       	31c0000.i2c                     	I2C adapter
i2c-4	i2c       	Tegra BPMP I2C adapter          	I2C adapter
i2c-2	i2c       	3180000.i2c                     	I2C adapter
i2c-0	i2c       	3160000.i2c                     	I2C adapter
i2c-9	i2c       	i2c-2-mux (chan_id 0)           	I2C adapter
i2c-10	i2c       	i2c-2-mux (chan_id 1)           	I2C adapter
i2c-7	i2c       	c250000.i2c                     	I2C adapter
i2c-5	i2c       	31b0000.i2c                     	I2C adapter

Symols:

  1. --: No device found

  2. 21: There is a device on address 0x21

  3. UU: A Linux driver is currently using this device

Syntax: i2cdetect [options] <busNr>

i2cdetect example
test@test-desktop:~$ i2cdetect -y -r 2
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: 20 21 -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --                         
test@test-desktop:~$ 

Dump i2c device registers

The ì2cdump operation is good tool to see the content of a given I2C device to get a better overview of the stored data in its registers.

Syntax: i2cdump [options] <busNr> <deviceAddress>

i2cdump example
test@test-desktop:~$ i2cdump -y -f 2 0x21
No size specified (using byte-data access)
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: 2c ff 00 ff XX XX XX XX XX XX XX XX XX XX XX XX    ,...XXXXXXXXXXXX
10: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
20: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
30: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
40: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
50: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
60: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
70: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
80: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
90: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
a0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
b0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
c0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
d0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
e0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
f0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX

Read register value:

i2cget is used for reading a byte value from a given device I2C register address.

Syntax: i2cget [options] <busNr> <deviceAddress> <register> <address>

Read register value with i2cget
test@test-desktop:~$ sudo i2cget -y -f 2 0x21 0x03 0x00
0x00
test@test-desktop:~$

Set register value:

i2cset is used for writing a byte value to a given device I2C register address.

Syntax: i2cset [options] <busNr> <deviceAddress> <register> <address> <value>

Set register value using i2cset
test@test-desktop:~$ sudo i2cset -y -f 2 0x21 0x03 0xff
test@test-desktop:~$ sudo i2cget -y -f 2 0x21 0x03 0x00
0xff

Overview

This guide provides the basic usage of I2C devices that are often used on our Carrierboards.

Document revisions and changes

Version
Changes

1.0

Internal release

1.1

Publication

Disclaimer PDF export Auvidea can take no responsibility for the accuracy or completeness of any information presented in an exported PDF document as the export feature is developed, managed and maintained by GitBook. Those export mechanisms are subject to change without interaction by Auvidea. Please note that Auvidea includes this version table to identify the document and reference changes.

What is I2C?

I2C (Inter-Integrated Circuit) is a two wire communication protocol that is used to read and write data to peripherals devices form one master system (In our case the Jetson Module). It is commonly used in embedded hardware due to its simplicity & low power communication between components.

This protocol is used on our hardware for several devices such as:

  • Camera sensors

  • Temperature sensors

  • IMU's

  • GPIO Port extender

  • and so on...