Main Content

i2cdev

Connection to device on BeagleBone Black I2C bus

Description

Add-On Required: This feature requires the MATLAB Support Package for BeagleBone Black Hardware add-on.

This object represents a connection from the MATLAB® software to the device on BeagleBone® Black hardware I2C bus. Attach an I2C device to the appropriate pins on the BeagleBone hardware. To interact with the I2C device, use this object with the functions listed in Object Functions.

Creation

Description

example

i2c = i2cdev(bbb,bus,i2cAddress) creates an object that represents a connection to the device connected to the I2C bus on the specified BeagleBone Black hardware bbb.

Input Arguments

expand all

BeagleBone Black connection created using beaglebone, specified as an object.

Properties

expand all

This property is read-only.

The identifier of the I2C bus connected to the hardware, specified as a character vector. This property is set by the bus input argument, and it cannot be changed after object creation.

Example: 'i2c-1'

Data Types: char

This property is read-only.

The hexadecimal address of the I2C bus connected to the hardware, specified as a character vector. This property is set by the i2caddress input argument, and it cannot be changed after object creation. Use the scanI2CBus function to get the list of addresses.

Example: '0x20'

Data Types: char

The waiting time in seconds to complete the object creation, specified as a positive value of type double.

Example: 10

Data Types: double

Object Functions

readRead data from I2C device
writeWrite data to I2C device
readRegisterRead from register on I2C device
writeRegisterWrite to register on I2C device

Examples

collapse all

You can connect and exchange data with an I2C device on I2C bus 1.

Create a connection from the MATLAB software to the BeagleBone Black hardware.

bbb = beaglebone
bbb = 

  beaglebone with properties:

           DeviceAddress: '192.168.7.2'
               BoardName: 'BeagleBone Black Rev 00C0'
           AvailableLEDs: {'USR0'  'USR1'  'USR2'  'USR3'}
    AvailableDigitalPins: {1x29 cell}
     AvailableAnalogPins: {'AIN0'  'AIN1'  'AIN2'  'AIN3'  'AIN4'  'AIN5'  'AIN6'}
        AvailablePWMPins: {}
    AvailableSPIChannels: {}
       AvailableI2CBuses: {'i2c-1'}
    AvailableSerialPorts: {}
        AvailableWebcams: {} 

Enable I2C bus 1.

enableI2C(bbb,1)

Display AvailableI2CBuses.

bbb.AvailableI2CBuses
ans = 

    'i2c-1'    'i2c-2'

AvailableI2CBuses displays default bus 2 as i2c-1. The 1 is an internal index number. When you enable bus 1, AvailableI2CBuses displays it as i2c-2.

After physically connecting your I2C device to the I2C bus 1 pins, get the addresses of two I2C devices attached to I2C bus 1.

scanI2CBus(bbb,'i2c-2')
ans = 

     {'0x55','0x20'}

Create a connection, i2csensor, from the MATLAB software to the I2C sensor at '0x20'.

i2csensor = i2cdev(bbb,'i2c-2','0x20')
i2csensor = 

I2C with Properties:
     Bus: i2c-2
    I2CAddress: 0x20
       TimeOut: 10

Read two uint8 numbers from the sensor.

output1 = read(i2csensor,2);

Read the value of register 14 from the sensor.

output2 = readRegister(i2csensor,14);

Create a connection, i2cdisplay, from the MATLAB software to an I2C LED display at '0x55'.

i2cdisplay = i2cdev(bbb,'i2c-2','0x55')
i2cdisplay = 

I2C with Properties:
     Bus: i2c-2
    I2CAddress: 0x55
       TimeOut: 10

Write characters to the display.

write(i2cdisplay,[hex2dec('20') hex2dec('51')])

Write a scalar hexadecimal value, hex2dec('08'), to register 3 on an I2C device. uint8 is the default data type.

writeRegister(i2cdisplay,3,hex2dec('08'))

Version History

Introduced in R2015a