This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English version of the page.

Note: This page has been translated by MathWorks. Click here to see
To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

i2cdev

Connection to device on Raspberry Pi hardware

Description

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

Creation

Syntax

myi2cdevice = i2cdev(mypi,bus,i2cAddress)

Description

example

myi2cdevice = i2cdev(mypi,bus,i2cAddress) creates an object that represents a connection to the device connected to the I2C bus on the specified Raspberry Pi hardware myi2cdevice.

Input Arguments

expand all

Connection to a specific Raspberry Pi hardware board, specified as a raspi object.

Properties

expand all

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

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 a 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 a pair of I2C devices.

Create a connection from the MATLAB software to the Raspberry Pi board.

mypi = raspi
mypi = 

  Raspi with Properties:

           DeviceAddress: 'raspberrypi-hysdu8X38o'
                    Port: 18725
               BoardName: 'Raspberry
        Pi Model B Rev 2'
           AvailableLEDs: {'led0'}
    AvailableDigitalPins: [4 7 8 9 10 11 14 15 17 18 22 23 24 25 27 30 31]
    AvailableSPIChannels: {}
      AvailableI2CBuses: {'i2c-0'  'i2c-1'}
             I2CBusSpeed: 100000

  Supported peripherals

Redisplay AvailableI2CBuses and I2CBusSpeed.

mypi.AvailableI2CBuses
mypi.I2CBusSpeed      
ans =

  1×2 cell array 

    {'i2c-0'}    {'i2c-1'}

ans =

      100000

Show the location of the I2C pins.

showPins(mypi)

The pin map shows that, for this model and revision of the board, the i2c-1 bus is available on the GPIO header pins I2C1_SDA (GPIO 2) and I2C1_SCL (GPIO 3).

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

scanI2CBus(mypi,'i2c-1')
ans = 

     {'0x55','0x20'}

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

i2csensor = i2cdev(mypi,'i2c-1','0x20')
i2csensor = 

I2C with Properties:
     Bus: i2c-1
    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 the I2C LED display at '0x55'.

i2cdisplay = i2cdev(mypi,'i2c-1','0x55')
i2cdisplay = 

I2C with Properties:
     Bus: i2c-1
    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.

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

If you are not using I2C, disable I2C to free additional GPIO pins.

disableI2C(mypi)

Before using I2C again, enable I2C.

enableI2C(mypi)

When you enable I2C, you can change the mypi.I2CBusSpeed property.

disableI2C(mypi)
enableI2C(mypi,400000)
mypi.I2CBusSpeed
ans =

       40000

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.