Типичный рабочий процесс включает обнаружение адаптера, подключение, коммуникацию и очистку. Обнаружение можно выполнить только на уровне адаптера. Для использования USB-845x необходимо установить хост-адаптер Total Phase Aardvark или плату i2c
NI интерфейс.
В этом примере показано взаимодействие с микросхемой EEPROM на печатной плате с адресом 50 hex и индексом платы 0 с помощью адаптера Aardvark.
Для связи с чипом EEPROM:
Убедитесь, что адаптер 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.
Проверьте свойства адаптера.
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 по использованию интерфейсов и инструкции.
Создайте объект 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. Все чипы, найденные при скане, перечислены в дереве оборудования. Список включает удаленный адрес чипа.
Подключитесь к чипу.
fopen(eeprom)
Запись 'Hello World!'
на микросхему EEPROM. Данные записываются по страницам в I2C. Каждая страница содержит восемь байтов. Адрес страницы должен быть указан перед каждым байтом записанных данных.
Первый байт строки 'Hello World!'
является 'Hello Wo'
. Адрес страницы 0.
fwrite(eeprom,[0 'Hello Wo'])
Второй байт строки 'Hello World!'
является 'rld!'
. Адрес его страницы 8.
fwrite(eeprom,[8 'rld!'])
Считывайте данные с чипа, используя fread
функция. Чип возвращает отправленные ему символы.
Чтобы начать чтение с первого байта первой страницы, запишите нуль в i2c
объект.
fwrite(eeprom,0)
char(fread(eeprom,12))'
ans = 'Hello World!'
Отсоедините I2C устройство и очистите объект от рабочей области.
fclose(eeprom)
clear eeprom
В этом примере показано, как связаться с аналоговыми устройствами® ADXL345 микросхему датчика на печатной плате, используя адрес 53 hex и индекс платы 0 на NI USB-845x адаптере. В этом случае плата USB-845x адаптера NI подключается к компьютеру (через порт USB), а плата, содержащая микросхему датчика, соединяется с платой адаптера хоста через провода. Обратите внимание, что схема имеет внешние пульпы, так как адаптер USB-8451 NI, используемый в этом примере, не имеет внутренних пульпов.
Для связи с чипом датчика:
Убедитесь, что адаптер 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.
Проверьте свойства адаптера 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 по использованию интерфейсов и инструкции.
Создайте объект I2C под названием i2cobj
, используя следующие свойства:
% Vendor = NI845x % BoardIndex = 0 % RemoteAddress = 53h i2cobj = i2c('NI845x',0,'53h');
Вы должны предоставить эти три входов, чтобы создать объект. Чтобы идентифицировать адрес чипа, смотрите его документацию или лист данных. Вы также можете найти адрес, сканируя для инструментов в инструмент Test & Measurement. В инструменте щелкните правой кнопкой мыши узел I2C и выберите Scan for I2C adaptors. Все чипы, найденные при скане, перечислены в дереве оборудования. Список включает удаленный адрес чипа.
Подключитесь к чипу.
fopen(i2cobj)
Напишите на чип датчика. Ознакомьтесь с документацией или таблицей данных чипа, порядка узнать, что такое удаленный адрес и другая информация о чипе. Обычно производители чипов предоставляют отдельные адреса для чтения и записи. Платы адаптеров берут только один адрес (адрес чтения) и обрабатывают преобразования в адреса чтения и записи.
В этом случае регистр идентификаторов устройств чипа находится по адресу 0
, поэтому вам нужно записать 0 в чип, указывающий, что вы хотели бы читать или записать в реестр.
fwrite(i2cobj,0)
Считывайте данные с чипа, используя fread
функция. Отправив один байт, можно считать обратно реестр идентификаторов устройств. Для этого чипа реестр идентификаторов устройств только для чтения составляет 229.
fread(i2cobj,1)
ans = 229
Отсоедините I2C устройство и очистите объект от рабочей области.
fclose(i2cobj)
clear i2cobj
fclose
| fopen
| fread
| fwrite
| i2c