Передача данных по интерфейсу I2C

Типичный рабочий процесс включает открытие адаптера, связь, коммуникацию и очистку. Открытие может быть сделано только на уровне адаптера. У вас должны быть или Общий хост-адаптер Муравьеда Фазы или плата адаптера USB-845x NI, установленная, чтобы использовать i2c интерфейс.

Пример муравьеда

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

Связываться с чипом EEPROM:

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

    instrhwinfo('i2c')
    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.
  2. Посмотрите на свойства адаптера.

    instrhwinfo('i2c','Aardvark')
    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.

    Убедитесь, что вам установили программный драйвер Муравьеда и что aardvark.dll находится на вашем пути MATLAB. Для получения дополнительной информации смотрите Требования Использования Интерфейса I2C и Инструкции.

  3. Создайте объект I2C под названием eeprom, использование следующих свойств.

    % Vendor = aardvark
    % BoardIndex = 0
    % RemoteAddress = 50h
    
    eeprom = i2c('aardvark',0,'50h')
       I2C Object : I2C-0-50h
    
       Communication Settings 
          BoardIndex          0
          BoardSerial         2237482577
          BitRate:            100 kHz
          RemoteAddress:      50h
          Vendor:             aardvark
    
    
       Communication State 
          Status:             closed
          RecordStatus:       off
    
       Read/Write State  
          TransferStatus:     idle

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

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

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

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

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

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

    fwrite(eeprom,[8 'rld!'])
  6. Считайте данные назад из чипа с помощью fread функция. Чип возвращает символы, отправленные в него.

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

    fwrite(eeprom,0)
    char(fread(eeprom,12))'
    ans =
    
        'Hello World!'
  7. Отключите устройство I2C и очистите объект от рабочей области.

    fclose(eeprom)
    clear eeprom

Пример USB-845x NI

В этом примере показано, как связаться с чипом датчика Analog Devices® ADXL345 на печатной плате, с помощью адреса 53 шестнадцатеричных чисел и параметра плат 0 на адаптере USB-845x NI. В этом случае плата адаптера USB-845x NI включается в компьютер (через USB-порт), и печатная плата, содержащая чип датчика, соединяется с платой хост-адаптера по проводам. Обратите внимание на то, что схема имеет внешние усилия, когда адаптер NI USB-8451, используемый в этом примере, не имеет внутренних усилий.

Связываться с чипом датчика:

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

    instrhwinfo('i2c')
    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.
  2. Посмотрите на свойства адаптера USB-845x NI.

    instrhwinfo('i2c','NI845x')
    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.

    Убедитесь, что у вас есть установленный программный драйвер USB-845x NI. Для получения дополнительной информации смотрите Требования Использования Интерфейса I2C и Инструкции.

  3. Создайте объект I2C под названием i2cobj, использование этих свойств:

    % Vendor = NI845x
    % BoardIndex = 0
    % RemoteAddress = 53h
    
    i2cobj = i2c('NI845x',0,'53h');

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

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

    fopen(i2cobj)
  5. Запишите в чип датчика. Считайте документацию или таблицу данных чипа для того, чтобы знать то, что удаленный адрес и другая информация о чипе. Обычно производители чипа обеспечивают отдельное чтение и адреса записи. Платы адаптера только берут один адрес (адрес чтения) и обрабатывают преобразования в адреса записи и чтение.

    В этом случае регистром ID устройства чипа является в адресе 0, таким образом, необходимо записать, что 0 к чипу, указывающему на вас, хотел бы читать или записать в регистр.

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

    fread(i2cobj,1)
    ans = 
    
       229
  7. Отключите устройство I2C и очистите объект от рабочей области.

    fclose(i2cobj)
    clear i2cobj

Смотрите также

| | | |

Похожие темы