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

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

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

В этом примере показано взаимодействие с микросхемой EEPROM на печатной плате с адресом 50 hex и индексом платы 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

    Вы должны предоставить эти три входов, чтобы создать объект. Чтобы идентифицировать адрес чипа, смотрите его документацию или лист данных. Вы также можете найти адрес, сканируя для инструментов в инструмент 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

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

Для связи с чипом датчика:

  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.

    Убедитесь, что установлен драйвер ПО NI USB-845x. Для получения дополнительной информации см. 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. Напишите на чип датчика. Ознакомьтесь с документацией или таблицей данных чипа, порядка узнать, что такое удаленный адрес и другая информация о чипе. Обычно производители чипов предоставляют отдельные адреса для чтения и записи. Платы адаптеров берут только один адрес (адрес чтения) и обрабатывают преобразования в адреса чтения и записи.

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

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

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

    fclose(i2cobj)
    clear i2cobj

См. также

| | | |

Похожие темы