exponenta event banner

Передача данных через интерфейс I2C

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

Пример Аардварка

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

Для связи с микросхемой EEPROM:

  1. Убедитесь, что адаптер Aardvark установлен для использования 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 и что 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

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

  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 на NI USB-845x адаптере. В этом случае плата адаптера NI USB-845x подключается к компьютеру (через порт USB), а монтажная плата, содержащая микросхему датчика, подключается к плате адаптера хоста по проводам. Обратите внимание, что цепь имеет внешние пульпы, так как адаптер NI USB-8451, используемый в этом примере, не имеет внутренних пульп.

Для связи с микросхемой датчика:

  1. Убедитесь, что адаптер NI USB-845x установлен, чтобы можно было использовать 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. Просмотрите свойства адаптера NI USB-845x.

    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.

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

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

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

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

  4. Подключитесь к микросхеме.

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

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

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

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

    fclose(i2cobj)
    clear i2cobj

См. также

| | | |

Связанные темы