Main Content

read

Read data from I2C device

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

Description

data = read(i2c,count,dataPrecision) returns data from the I2C device as a row vector.

When the read function finishes reading the specified data from the device, or when the timeout period elapses, the function stops.

example

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'))

Input Arguments

collapse all

Connection to I2C device, specified as a i2cdev object.

Example: i2c

Size of I2C data, specified as a scalar. This value is the number of data elements that you expect.

Example: 2

Data Types: int8 | int16 | uint8 | uint16

Data precision, specified as a character vector. Match the data precision to the size of the register on the device. Optional.

Example: 'int16'

Data Types: char

Output Arguments

collapse all

Data from the I2C device, returned as a row vector. The count argument specifies the number of elements in the row vector.

Version History

Introduced in R2015a