Типичный рабочий процесс включает обнаружение адаптера, подключение, связь и очистку. Обнаружение можно выполнить только на уровне адаптера. Для использования платы адаптера NI USB-845x необходимо установить либо хост-адаптер Total Phase Aardvark, либо плату адаптера NI i2c интерфейс.
В этом примере показано взаимодействие с микросхемой EEPROM на печатной плате с адресом 50 шестнадцатеричных и индексом платы 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Для создания объекта необходимо предоставить эти три входных значения. Для определения адреса микросхемы обратитесь к ее документации или листу технических данных. Адрес можно также найти, просканировав приборы в средстве тестирования и измерения. В инструменте щелкните правой кнопкой мыши узел I2C и выберите Сканировать адаптеры I2C. Все чипы, обнаруженные при сканировании, перечислены в дереве оборудования. Список включает удаленный адрес микросхемы.
Подключитесь к микросхеме.
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В этом примере показано, как взаимодействовать с чипом датчика Analog Devices ® ADXL345 на печатной плате, используя адрес 53 шестнадцатеричных и индекс платы 0 на NI USB-845x адаптере. В этом случае плата адаптера NI USB-845x подключается к компьютеру (через порт USB), а монтажная плата, содержащая микросхему датчика, подключается к плате адаптера хоста по проводам. Обратите внимание, что цепь имеет внешние пульпы, так как адаптер NI USB-8451, используемый в этом примере, не имеет внутренних пульп.
Для связи с микросхемой датчика:
Убедитесь, что адаптер 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.Просмотрите свойства адаптера 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.
Создать объект I2C с именем i2cobj, используя следующие свойства:
% Vendor = NI845x % BoardIndex = 0 % RemoteAddress = 53h i2cobj = i2c('NI845x',0,'53h');
Для создания объекта необходимо предоставить эти три входных значения. Для определения адреса микросхемы обратитесь к ее документации или листу технических данных. Адрес можно также найти, просканировав приборы в средстве тестирования и измерения. В инструменте щелкните правой кнопкой мыши узел I2C и выберите Сканировать адаптеры I2C. Все чипы, обнаруженные при сканировании, перечислены в дереве оборудования. Список включает удаленный адрес микросхемы.
Подключитесь к микросхеме.
fopen(i2cobj)
Запишите данные в микросхему датчика. Прочтите документацию или лист технических данных микросхемы, чтобы узнать, что такое удаленный адрес и другая информация о микросхеме. Обычно производители чипов предоставляют отдельные адреса для чтения и записи. Платы адаптеров принимают только один адрес (адрес чтения) и обрабатывают преобразования в адреса чтения и записи.
В этом случае регистр идентификатора устройства микросхемы находится по адресу 0Поэтому вам нужно записать 0 на микросхему, указывая, что вы хотите прочитать или записать в регистр.
fwrite(i2cobj,0)
Считывание данных из микросхемы с помощью fread функция. Отправив один байт, можно прочитать реестр идентификаторов устройств. Для этого чипа реестр идентификаторов устройств только для чтения равен 229.
fread(i2cobj,1)
ans = 229
Отсоедините устройство I2C и очистите объект от рабочей области.
fclose(i2cobj)
clear i2cobjfclose | fopen | fread | fwrite | i2c