i2c

Описание

I2C или Межинтегральная схема, является протоколом от чипа к чипу, поддерживающим двухпроводную коммуникацию. i2c объект представляет связь между MATLAB® и платой адаптера I2C. Поддерживаемые адаптеры являются Общим Муравьедом Фазы Хост-адаптер I2C/SPI и Национальная плата адаптера USB-845x Instruments™. Адаптер имеет одни или несколько микросхем датчика, соединенных с ним. MATLAB отправляет команды в плату адаптера, которая является ведущим устройством I2C, для того, чтобы связаться с чипом, который является ведомым устройством I2C. i2c объект в MATLAB всегда имеет роль ведущего устройства I2C и не может использоваться в ведомой роли. Используйте fread и fwrite на i2c объект связаться с чипом.

Создание

Описание

пример

i2cobj = i2c(vendor,boardIndex,remoteAddress) создает i2c объект сопоставлен с vendor, boardIndex, и remoteAddress.

  • vendor должен быть любой 'Aardvark', для использования с Общим адаптером Муравьеда Фазы или 'NI845x', для использования с платой адаптера USB-845x NI. Этот вход устанавливает Vendor свойство.

  • boardIndex задает параметр плат платы адаптера и 0 если у вас есть только один адаптер, включил ваш компьютер. Этот вход устанавливает BoardIndex свойство.

  • remoteAddress задает адрес шестнадцатеричного числа ведомого устройства I2C, с которым можно передать и можно быть найден в документации или таблице данных чипа. Этот вход устанавливает RemoteAddress свойство.

Можно связаться с несколькими ведомыми устройствами I2C на том же адаптере с помощью одного i2c объект. Чтобы связаться с различным ведомым устройством I2C, сначала создайте объект и используйте fopen открыть связь с адаптером. Затем измените RemoteAddress свойство к адресу соответствующего ведомого устройства. Можно теперь использовать fwrite и fread связываться с заданным ведомым устройством. Для примера этого рабочего процесса смотрите, Связываются с Несколькими Ведомыми устройствами от Адаптера USB-845x NI.

Свойства

развернуть все

Параметр плат платы адаптера в виде целого числа. Если у вас есть только один адаптер, включил ваш компьютер, номером параметра плат является 0. Если у вас есть несколько включенных адаптеров, каждой плате присваивают различный номер параметра плат. Определите параметр плат с помощью instrhwinfo('i2c','Aardvark') или instrhwinfo('i2c','NI845x'). Это свойство может быть установлено только при создании объекта.

Пример: i2cobj = i2c('Aardvark',1,'50h') подключения к адаптеру Муравьеда со значением индекса 1.

Типы данных: double | int8 | int16 | int32 | uint8 | uint16 | uint32

Это свойство доступно только для чтения.

Уникальный идентификатор ведущего коммуникационного устройства I2C в виде вектора символов.

Пример: i2cobj.BoardSerial возвращает уникальный идентификатор Общего адаптера Муравьеда Фазы или адаптера USB-845x NI.

Типы данных: char

Битрейт оборудования адаптера в виде положительного целого числа в kHz. Используйте немного уровня, который поддерживается адаптером и микросхемами. Значение по умолчанию составляет 100 кГц и для Муравьеда и для адаптеров USB-845x.

Пример: i2cobj.BitRate = 50 устанавливает битрейт на 50 кГц.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Ведомое устройство I2C обращается в виде номера между 0 и 127 (содержащими), шестнадцатеричными числами, вектором символов или строковым скаляром. Чтобы идентифицировать адрес чипа, консультируйтесь с его документацией или таблицей данных. Можно также найти адрес путем сканирования для инструментов в инструменте Test & Measurement. В инструменте щелкните правой кнопкой по узлу I2C и выберите Scan for I2C adaptors. Любые микросхемы, найденные сканом, перечислены в аппаратном дереве. Листинг включает удаленный адрес чипа.

Необходимо задать это свойство во время создания объекта, и можно изменить его после создания объекта при помощи записи через точку. Задайте ведомый адрес как шестнадцатеричное значение одним из следующих способов.

  • Добавьте h в конец шестнадцатеричного числа как вектор символов или строковый скаляр.

  • Используйте префиксный 0x в начале шестнадцатеричного числа.

  • Используйте hex2dec с шестнадцатеричным числом как входной параметр.

Связываться с несколькими ведомыми устройствами I2C от одного i2c объект, набор RemoteAddress к соответствующему адресу ведомого устройства. Для примера этого рабочего процесса смотрите, Связываются с Несколькими Ведомыми устройствами от Адаптера USB-845x NI.

Примечание

При чтении этого свойства с помощью записи через точку это возвращено в виде числа, представляющего шестнадцатеричное число. Чтобы преобразовать назад в шестнадцатеричное число, используйте dec2hex. Например, dec2hex(i2cObj.RemoteAddress) возвращает ведомый адрес I2C как шестнадцатеричное число для i2c объект i2cObj.

Пример: i2cobj = i2c('Aardvark',0,'50h') и i2cobj.RemoteAddress = '50h' задайте адрес 50 шестнадцатеричных чисел.

Пример: i2cobj = i2c('Aardvark',0,0x50) и i2cobj.RemoteAddress = 0x50 задайте адрес 50 шестнадцатеричных чисел.

Пример: i2cobj = i2c('Aardvark',0,hex2dec('50')) и i2cobj.RemoteAddress = hex2dec('50') задайте адрес 50 шестнадцатеричных чисел.

Типы данных: double | int8 | int16 | int32 | uint8 | uint16 | uint32 | char | string

Поставщик адаптера I2C в виде 'Aardvark' или 'NI845x'. Поставщиком является 'Aardvark' если вы используете Общий адаптер Муравьеда Фазы и 'NI845x' если вы используете адаптер USB-845x NI. Это свойство может быть установлено только при создании объекта.

Пример: i2cobj = i2c('Aardvark',0,'50h') подключения к Общему адаптеру Муравьеда Фазы.

Пример: i2cobj = i2c('NI845x',0,'50h') подключения к адаптеру USB-845x NI.

Типы данных: char | string

Степень к адаптеру Муравьеда в виде 'none' или 'both'. Можно установить это свойство для адаптеров Муравьеда только. Значение 'both' средняя степень к обеим линиям, если поддержано. Значение 'none' средняя степень ни к каким линиям.

Примечание

Если Целевая Степень выключена в Total Phase Control Center Serial Software, вы можете получить ошибку, когда вы пытаетесь связать с адаптером Муравьеда с помощью fopen. Чтобы вручную установить опцию, откройте программное обеспечение и установите флажок Target Power.

Пример: i2cobj.TargetPower = 'both' предоставляет степень обеим линиям на адаптере Муравьеда.

Типы данных: char | string

Enabled нагрузочные резисторы в виде 'both' или 'none'. Значение 'both' позволяет 2k нагрузочным резисторам защитить оборудование в устройстве I2C, если поддержано.

Устройства отличаются по своему использованию усилий. Муравьед и USB NI 8 452 адаптера имеют внутренние нагрузочные резисторы к линиям прямой связи обе линии шины к VDD и могут быть установлены программно. Адаптер NI USB-8451 не имеет этого типа внутреннего нагрузочного резистора и, поэтому, требует внешних усилий. Консультируйтесь со своей документацией устройства, чтобы гарантировать, что вы используете правильные усилия.

Пример: i2cobj.PullupResistors = 'none' отключает нагрузочные резисторы.

Типы данных: char | string

Функции объекта

fopenОбъект интерфейса Connect оснастить
freadСчитайте двоичные данные из инструмента
fwriteЗапишите двоичные данные в инструмент
fcloseОтключите интерфейсный объект от инструмента
recordДанные записи и информация о событии к файлу

Примеры

свернуть все

Свяжитесь с чипом AT24C02 EEPROM на печатной плате, с адресом 50 шестнадцатеричных чисел и параметром плат 0, с помощью адаптера Муравьеда.

Убедитесь, что адаптер Муравьеда установлен так, чтобы можно было использовать i2c интерфейс, и затем просматривает свойства адаптера.

instrhwinfo('i2c')
instrhwinfo('i2c','Aardvark')
ans = 

  HardwareInfo with properties:

    InstalledAdaptors: {'Aardvark'  'NI845x'}
       JarFileVersion: 'Version 4.1'

Access to your hardware may be provided by a support package. Go to the Support Package Installer to learn more.



ans = 

  HardwareInfo with properties:

             AdaptorDllName: 'C:\Program Files\MATLAB\R2019b\toolbox\instrument\instrumentadaptors\win64\mwaardvarki2c.dll'
          AdaptorDllVersion: 'Version 4.1'
                AdaptorName: 'Aardvark'
              BoardIdsInUse: [1×0 double]
          InstalledBoardIDs: 0
       DetectedBoardSerials: {'2237482577 (BoardIndex: 0)'}
      ObjectConstructorName: 'i2c('Aardvark', BoardIndex, RemoteAddress);'
              VendorDllName: 'aardvark.dll'
    VendorDriverDescription: 'Total Phase I2C Driver'

Access to your hardware may be provided by a support package. Go to the Support Package Installer to learn more.

Создайте i2c возразите названному i2cobj с Vendor 'Aardvark', BoardIndex из 0, и RemoteAddress из 50h.

i2cobj = i2c('Aardvark',0,'50h')
   I2C Object : I2C-0-50h

   Communication Settings 
      BoardIndex          0
      BoardSerial         0
      BitRate:            100 kHz
      RemoteAddress:      50h
      Vendor:             aardvark


   Communication State 
      Status:             closed
      RecordStatus:       off

   Read/Write State  
      TransferStatus:     idle

Свяжите с чипом.

fopen(i2cobj)

Примечание

Если Целевая Степень выключена в Total Phase Control Center Serial Software, вы можете получить ошибку, когда вы пытаетесь связать с адаптером Муравьеда с помощью fopen. Чтобы вручную установить опцию, откройте программное обеспечение и установите флажок Target Power.

Запишите 'Hello World!' к чипу EEPROM. Данные записаны постранично в I2C. Каждая страница содержит восемь байтов. Адрес страницы должен быть упомянут перед каждым байтом записанных данных.

Первый байт строки 'Hello World!' 'Hello Wo'. Его адрес страницы 0.

fwrite(i2cobj,[0 'Hello Wo'])

Второй байт строки 'Hello World!' 'rld!'. Его адрес страницы равняется 8.

fwrite(i2cobj,[8 'rld!'])

Чтобы начать читать из первого байта первой страницы, запишите нуль в i2c объект.

fwrite(i2cobj,0)

Считайте данные назад из чипа с помощью fread функция. Чип возвращает символы, отправленные в него.

char(fread(i2cobj,12))'
ans =

    'Hello World!'

Отключите устройство I2C.

fclose(i2cobj)

Очистите объект от рабочей области.

clear i2cobj

Свяжитесь с несколькими ведомыми устройствами I2C от того же адаптера USB-845x NI. Можно читать из нескольких ведомых устройств с помощью адаптера Муравьеда также. В этом примере эти два ведомых устройства являются двумя микросхемами датчика на печатной плате с адресами 62 шестнадцатеричных чисел и 53 шестнадцатеричных чисел. Параметр плат 0. Плата адаптера USB-845x NI включается в компьютер (через USB-порт), и печатная плата, содержащая микросхемы датчика, соединяется с платой хост-адаптера по проводам.

Убедитесь, что адаптер USB-845x NI установлен так, чтобы можно было использовать i2c интерфейс, и затем просматривает свойства адаптера.

instrhwinfo('i2c')
instrhwinfo('i2c','NI845x')
ans = 

  HardwareInfo with properties:

    InstalledAdaptors: {'Aardvark'  'NI845x'}
       JarFileVersion: 'Version 4.1'

Access to your hardware may be provided by a support package. Go to the Support Package Installer to learn more.



ans = 

  HardwareInfo with properties:

             AdaptorDllName: 'C:\Program Files\MATLAB\R2019b\toolbox\instrument\instrumentadaptors\win64\mwni845xi2c.dll'
          AdaptorDllVersion: 'Version 4.1'
                AdaptorName: 'NI845x'
              BoardIdsInUse: [1×0 double]
          InstalledBoardIDs: [1×0 double]
       DetectedBoardSerials: {0×1 cell}
      ObjectConstructorName: 'i2c('NI845x', BoardIndex, RemoteAddress);'
              VendorDllName: 'Ni845x.dll'
    VendorDriverDescription: 'National Instruments NI USB 845x Driver'

Access to your hardware may be provided by a support package. Go to the Support Package Installer to learn more.

Создайте i2c возразите названному i2cobj с Vendor 'NI845x', BoardIndex из 0, и RemoteAddress из 62h. Этот адрес является удаленным адресом первого ведомого устройства I2C, с которым вы соединяетесь.

i2cobj = i2c('NI845x',0,'62h')
   I2C Object : I2C-0-62h

   Communication Settings 
      BoardIndex          0
      BoardSerial         0
      BitRate:            100 kHz
      RemoteAddress:      62h
      Vendor:             NI845x


   Communication State 
      Status:             closed
      RecordStatus:       off

   Read/Write State  
      TransferStatus:     idle

Откройте связь с адаптером USB-845x NI. Эта связь к чипу датчика с RemoteAddress заданный во время создания объекта.

fopen(i2cobj)

Запишите в чип датчика. Необходимо считать документацию или таблицу данных чипа, чтобы найти удаленный адрес и другую информацию о чипе. В этом случае откройте реестр чипа путем отправки ему 0.

fwrite(i2cobj,0)

Считайте данные назад из чипа с помощью fread функция. Путем отправки одного байта можно считать назад реестр ID устройства. Для этого чипа реестр ID устройства только для чтения 229.

fread(i2cobj,1)
ans = 

   229

Переключитесь на второй чип датчика путем установки RemoteAddress к 53h. Этот адрес является удаленным адресом второго ведомого устройства I2C, с которым вы соединяетесь. Вы не должны вновь открыть связь с адаптером.

i2cobj.RemoteAddress = '53h';

Запишите в и читайте из чипа датчика. Поскольку этот чип идентичен первому чипу, его реестр ID устройства также 229.

fwrite(i2cobj,0)
fread(i2cobj,1)
ans = 

   229

Отключите устройство I2C.

fclose(i2cobj)

Очистите объект от рабочей области.

clear i2cobj
Представленный в R2012a