I2C

创建I2C对象

描述

I2C,或内部集成电路,是一个芯片到芯片的协议支持两线通信。万博1manbetx一个I2C对象表示MATLAB之间的连接®和I2C适配板。万博1manbetx支持的适配器是总相土豚I2C / SPI主机适配器和美国国家仪器公司®USB-845X适配器板。适配器具有连接到它的一个或多个传感器芯片。MATLAB将命令发送到适配器板,其是I2C主设备,以便与芯片,这是I2C从设备进行通信。该I2C在MATLAB对象总是具有I2C主机的作用,并不能在从角色中。用FREAD写入文件I2C目的是与芯片通信。

创建

描述

i2cobj = I2C(供应商boardIndexremoteAddress创建I2C对象与供应商boardIndex,remoteAddress

  • 供应商必须是“豚”,对于总相土豚适配器使用,或“NI845x”,用于与NI USB-845X适配器板使用。该输入设置供应商属性。

  • boardIndex指定适配器板的板指数和是0如果你只有一个适配器插入到您的计算机。该输入设置BoardIndex属性。

  • remoteAddress指定的I2C从设备的十六进制数地址与之通信和在文档或芯片的数据表中找到。该输入设置RemoteAddress属性。

您可以与多个I2C从设备相同的适配器上使用单一的通信I2C对象。要与不同的I2C从设备通信,首先创建对象并使用FOPEN打开到适配器的连接。然后,改变RemoteAddress属性设置为适当的从设备的地址。现在可以使用写入文件FREAD具有指定从设备进行通信。对于这个工作流程的一个例子,见从NI USB-845x适配器与多个从属设备通信

属性

展开全部

适配器板的板指数,指定为整数。如果你只有一个适配器插入到你的电脑,主板指数是0。如果您有多个适配器插入,每个板分配一个不同的板索引号。确定董事会指数使用instrhwinfo( 'I2C', '土豚')instrhwinfo( 'I2C', 'NI845x')。此属性只能在创建对象进行设置。

例:i2cobj = I2C( '土豚',1 '50H')连接到土豚适配器为1的索引值。

数据类型:|INT8|int16|int32|UINT8|UINT16|UINT32

此属性是只读的。

I2C主通信设备的唯一标识符,指定为字符向量。

例:i2cobj.BoardSerial返回总的相位Aardvark适配器或NI USB-845x适配器的唯一标识符。

数据类型:字符

适配器硬件的比特率,指定为以kHz正整数。使用由适配器和芯片所支持的比特率。万博1manbetx默认值是100千赫两个土豚和USB-845X适配器。

例:i2cobj.BitRate = 50设置比特率到50千赫。

数据类型:||INT8|int16|int32|Int64的|UINT8|UINT16|UINT32|UINT64|合乎逻辑

I2C从设备地址,指定为0到127(包括)之间的数字,十六进制数字,字符向量,或字符串标量。识别芯片的地址,查阅其文件或数据表。您也可以通过扫描测试和测量工具中的仪器找到地址。在工具中,右键单击I2C节点,然后选择扫描I2C适配器。通过扫描发现任何芯片被列在硬件树。的列表包括芯片的远程地址。

您必须指定对象创建过程中这个属性,你可以使用点符号对象创建后改变它。指定从地址在下列方式之一十六进制值。

  • 附加H于十六进制数为字符向量或标量的字符串的末尾。

  • 使用前缀0X在十六进制数的开头。

  • HEX2DEC以十六进制数作为输入参数。

从一个设备与多个I2C从设备通信I2C对象,集RemoteAddress到适当的从属设备地址。对于这个工作流程的一个例子,见从NI USB-845x适配器与多个从属设备通信

注意

当使用点符号阅读了此属性,返回为代表的十六进制数的数值标量。若要重新转换为十六进制数,使用dec2hex。例如,dec2hex (i2cObj.RemoteAddress)返回I2C从地址作为一个十六进制数字I2C目的i2cObj

例:i2cobj = I2C( '土豚',0, '50H')i2cobj.RemoteAddress = '50H'指定50进制的地址。

例:i2cobj = I2C( '土豚',0,0x50)i2cobj.RemoteAddress =为0x50指定50进制的地址。

例:i2cobj = I2C( '土豚',0,HEX2DEC('50' ))i2cobj.RemoteAddress = HEX2DEC('50' )指定50进制的地址。

数据类型:|INT8|int16|int32|UINT8|UINT16|UINT32|字符|

I2C适配器供应商,指定为“豚”“NI845x”。供应商是“豚”如果您使用的是总相土豚适配器“NI845x”如果您使用的是NI USB-845X适配器。此属性只能在创建对象进行设置。

例:i2cobj = I2C( '土豚',0, '50H')连接到一个总相位Aardvark适配器。

例:i2cobj = I2C( 'NI845x',0, '50H')连接到NI USB-845X适配器。

数据类型:字符|

电源到Aardvark适配器,指定为'没有''都'。您可以设置该属性为土豚只适配器。价值'都'意味着电源都行,如果支持的话。万博1manbetx价值'没有'意味着功率没有线。

注意

如果目标电源关闭的总相位控制中心系列软件,则可能会在尝试使用连接到土豚适配器收到一个错误FOPEN。要手动设置该选项,打开软件,选择目标电源复选框。

例:i2cobj.TargetPower = '两者'为Aardvark适配器上的两行提供电源。

数据类型:字符|

启用上拉电阻,指定为'都''没有'。价值'都'使2k拉升电阻保护硬件在I2C设备,如果支持。万博1manbetx

设备在其使用上拉电阻的不同。土豚和NI USB-8452适配器具有内部上拉电阻,以两根线连接到VDD,并且可以通过编程来设置。该NI USB-8451适配器没有这种类型的内部上拉电阻的,因此,需要外部上拉。请咨询您的设备文件,以确保您使用的是正确的上拉。

例:i2cobj。PullupResistors = '没有'禁用拔起电阻。

数据类型:字符|

对象函数

FOPEN 连接接口对象到仪器
FREAD 读取仪器二进制数据
写入文件 写二进制数据的仪器
FCLOSE 从仪器上断开接口对象
记录 记录数据和事件信息的文件

例子

全部收缩

在电路板上与AT24C02 EEPROM芯片通信,与50十六进制的地址和一个板索引0,使用Aardvark适配器。

确保土豚适配器安装,这样就可以使用I2C接口,然后查看适配器属性。

instrhwinfo ('I2C')instrhwinfo('I2C'“豚”
an= HardwareInfo与属性:InstalledAdaptors: {'Aardvark' 'NI845x'} JarFileVersion: 'Version 4.1'访问您的硬件可能提供了一个支持包。万博1manbetx进入支持包安装程序以万博1manbetx了解更多信息。C:\程序文件\MATLAB\R2019b\toolbox\instrument\instrumentadaptors\win64\mwaardvarki2c。AdaptorDllVersion: 'Version 4.1' AdaptorName: 'Aardvark' BoardIdsInUse:[1×0双]InstalledBoardIDs: 0 DetectedBoardSerials: {'2237482577 (BoardIndex: 0)'} ObjectConstructorName: 'i2c('Aardvark', BoardIndex, RemoteAddress);dll' VendorDriverDescription: '总阶段I2C驱动程序'访问您的硬件可能由一个支持包提供。万博1manbetx转到支持包安装程序,万博1manbetx以了解更多。

创建I2C对象命名i2cobj供应商“豚”BoardIndex0,RemoteAddress50H

i2cobj = I2C(“豚”,0,“50 h”
I2C对象:I2C-0-50h通讯设置BoardIndex 0 BoardSerial 0比特率:100千赫RemoteAddress:50H供应商:土豚通讯状态状态:关闭RECORDSTATUS:关闭读/写状态TransferStatus:闲置

连接到芯片。

fopen (i2cobj)

注意

如果目标电源关闭的总相位控制中心系列软件,则可能会在尝试使用连接到土豚适配器收到一个错误FOPEN。要手动设置该选项,打开软件,选择目标电源复选框。

'你好,世界!'到EEPROM芯片。数据在I2C写页逐页。每个页面都包含八个字节。页面地址需要写入的数据的每个字节之前被提及。

字符串的第一个字节'你好,世界!'“您好禾”。它的页面地址为0。

的fwrite(i2cobj,[0“您好禾”])

字符串的第二个字节'你好,世界!''RLD!'。它的页面地址是8。

的fwrite(i2cobj,[8'RLD!'])

从第一页的第一个字节开始读取,向I2C对象。

的fwrite(i2cobj,0)

从芯片使用读回数据FREAD功能。该芯片将返回发送给它的字符。

炭(的fread(i2cobj,12))”
“你好,世界!”

断开I2C设备。

FCLOSE(i2cobj)

从工作区中清除该对象。

清晰的i2cobj

与同一NI USB-845X适配器多个I2C从设备进行通信。您可以使用土豚适配器以及多个从设备读取。在这个例子中,两个从装置是在电路板上的两个传感器芯片,具有62进制和53进制的地址。主板指数是0。NI USB-845X适配器板被插入到计算机(通过USB端口),以及含有该传感器芯片的电路板是通过导线连接到主机适配器板。

确保NI USB-845x适配器已安装,以便您可以使用I2C接口,然后查看适配器属性。

instrhwinfo ('I2C')instrhwinfo('I2C'“NI845x”
an= HardwareInfo与属性:InstalledAdaptors: {'Aardvark' 'NI845x'} JarFileVersion: 'Version 4.1'访问您的硬件可能提供了一个支持包。万博1manbetx进入支持包安装程序以万博1manbetx了解更多信息。ANS = HardwareInfo与属性:AdaptorDllName: 'C:\ Program Files文件\ MATLAB \ R2019b \工具箱\仪器\ instrumentadaptors \ Win64的\ mwni845xi2c.dll' AdaptorDllVersion: '版本4.1' AdaptorName: 'NI845x' BoardIdsInUse:[1×0双]InstalledBoardIDs:[1×0双] DetectedBoardSerials:{0×1细胞} ObjectConstructorName: 'I2C(' NI845x 'BoardIndex,RemoteAddress);'VendorDllName:“Ni845x.dll” VendorDriverDescription:“美国国家仪器NI USB 845X驱动”到你的硬件访问可以通过支持包来提供。万博1manbetx转到支持包安装程序,万博1manbetx以了解更多。

创建I2C对象命名i2cobj供应商“NI845x”BoardIndex0,RemoteAddress62H。该地址是所要连接的第一I2C从设备的远程地址。

i2cobj = I2C(“NI845x”,0,'62H'
I2C对象:I2C-0-62h通讯设置BoardIndex 0 BoardSerial 0比特率:100千赫RemoteAddress:62H供应商:NI845x通讯状态状态:关闭RECORDSTATUS:关闭读/写状态TransferStatus:闲置

开到NI USB-845X适配器的连接。该连接是将传感器芯片与所述RemoteAddress对象创建过程中指定。

fopen (i2cobj)

写传感器芯片。你需要读取芯片的资料或数据表来查找有关该芯片的远程地址和其他信息。在这种情况下,通过发送打开注册表芯片它0

的fwrite(i2cobj,0)

从芯片使用读回数据FREAD功能。通过发送一个字节,你可以回读设备ID的注册表。对于这种芯片,只读设备ID注册为229。

从文件中读(i2cobj, 1)
ANS = 229

切换到第二个传感器芯片通过设置RemoteAddress53小时。该地址是所要连接的第二I2C从设备的远程地址。你不需要重新与适配器的连接。

i2cobj.RemoteAddress ='53H';

读写传感器芯片。因为这个芯片是相同的第一个芯片,它的设备ID注册表也是229。

的fwrite(i2cobj,0)
从文件中读(i2cobj, 1)
ANS = 229

断开I2C设备。

FCLOSE(i2cobj)

从工作区中清除该对象。

清晰的i2cobj

介绍了R2012a