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