CN106713521B - 一种基于广播方式来查找i2c设备地址的方法 - Google Patents
一种基于广播方式来查找i2c设备地址的方法 Download PDFInfo
- Publication number
- CN106713521B CN106713521B CN201611085556.0A CN201611085556A CN106713521B CN 106713521 B CN106713521 B CN 106713521B CN 201611085556 A CN201611085556 A CN 201611085556A CN 106713521 B CN106713521 B CN 106713521B
- Authority
- CN
- China
- Prior art keywords
- address
- slave
- register
- master
- broadcast
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/50—Address allocation
- H04L61/5069—Address allocation for group communication, multicast communication or broadcast communication
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/30—Managing network names, e.g. use of aliases or nicknames
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2101/00—Indexing scheme associated with group H04L61/00
- H04L2101/60—Types of network addresses
- H04L2101/618—Details of network addresses
Abstract
本发明涉及一种基于广播方式来查找I2C设备地址的方法,主I2C设备通过向从I2C设备发送包含待设置给从I2C设备的临时地址的广播命令来设置从I2C设备的地址,然后通过该临时地址与从I2C设备通信来读取从I2C设备原来所使用的真实地址。通过本方法,可以找回丢失的从I2C设备的地址。本发明无需添加任何外部辅助设备,能够简单快速地获取从机地址,成本低廉,易于操作,适于广泛推广。
Description
技术领域
本发明涉及I2C通信领域,具体说是一种基于广播方式来查找I2C设备地址的方法。
背景技术
I2C(Inter-Integrated Circuit)总线是一种由PHLIPS公司开发的两线式总线,用于连接微控制器及其外围设备。I2C总线产生于80年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信,其主要优点是简单性和有效性。由于接口直接设置在组件之上,因此I2C总线占用的空间非常小,能够有效减少电路板空间和芯片管脚数量,降低了设备之间的互联成本。其另一个优点是支持多主控,其中任何能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率。如今,I2C通讯方式在嵌入式系统技术领域应用越来越多,越来越广。
I2C总线支持任何IC生产过程(NMOS、CMOS、双极性),两线(即串行数据SDA和串行时钟SCL线)在连接到总线的器件间传递信息。每个器件都有一个唯一的地址识别,而且都可以作为一个发送器或接收器。器件在执行数据传输时也可以被看作是主机(Master,即主I2C设备)或从机(Slave,即从I2C设备),主机是初始化总线的数据传输并产生允许传输的时钟信号的器件,此时,任何被寻址的器件都被认为是从机。
I2C总线数据传输时,SCL线为高电平时,SDA线若保持稳定,那么SDA上是在传输数据bit;若SDA发生跳变,则用来表示一个会话的开始(SDA由高电平向低电平跳变)或结束(SDA由低电平向高电平跳变);SCL线为低电平时,SDA线才能改变传输的数据bit。主机每发送完8bit数据后等待从机的应答(ACK),即在第9个时钟clock,若从机发送应答(ACK),SDA线会被拉低,若从机没有响应应答(ACK),则SDA线会被置高,将引起主机发生RESTART或STOP流程。
I2C总线的数据传输过程基本过程为:主机发出开始信号;主机接着送出1字节的从机地址信息,其中最低位为读写控制码(1为读、0为写),高7位为从机器件地址代码;从机发出认可信号(ACK);主机开始发送信息,每发完一字节后,从机发出认可信号给主机;主机发出停止信号,结束输出传输过程。
I2C总线上主机写从机寄存器的标准流程为:
1.主机发起START
2.主机发送I2C addr(7bit)和W操作0(1bit),等待从机ACK
3.从机发送ACK
4.主机发送reg addr(8bit),等待从机ACK
5.从机发送ACK
6.主机发送data(8bit),即要写入寄存器中的数据,等待从机ACK
7.从机发送ACK
8.第6步和第7步可以重复多次,即写多个寄存器
9.主机发起STOP
I2C总线上主机读从机寄存器的标准流程为:
1.主机发送I2C addr(7bit)和W操作1(1bit),等待从机ACK
2.从机发送ACK
3.主机Master发送reg addr(8bit),等待从机ACK
4.从机发送ACK
5.主机发起START
6.主机发送I2C addr(7bit)和R操作1(1bit),等待从机ACK
7.从机发送ACK
8.从机发送data(8bit),即寄存器里的值
9.主机发送ACK
10.第8步和第9步可以重复多次,即顺序读多个寄存器
因此大多数基于I2C通信协议进行通信的设备都包括主机和从机,如果主机不知道其从机的地址,则无法完成主机与指定从机的通信。在I2C通信过程中,由于从I2C的地址可变,在没有保存的情况下,就会发生I2C地址丢失,导致难以再建立通信连接,因此目前急需一种主机查找从机I2C地址的方法。
发明内容
针对丢失从I2C地址的问题,本发明的目的在于提供一种基于广播的方式来查找I2C地址的方法,通过广播的方式设置一个临时的地址给从I2C,然后通过该地址跟从I2C通信,从而得到真正的从I2C地址,进而可以进行正常的通信。
本发明提供了一种基于广播方式来查找I2C设备地址的方法,包括以下步骤:
步骤1,将需要查找地址的I2C设备作为从I2C设备,主I2C设备通过广播命令方式将临时虚拟地址发送给所述从I2C设备;
步骤2,该从I2C设备启用通过广播命令获得的所述临时虚拟地址;
步骤3,所述主I2C设备使用所述临时虚拟地址读取所述从I2C设备原来所使用的真实地址;
步骤4,所述主I2C设备使用所述临时虚拟地址将从I2C设备的地址设置为原来所使用的真实地址。
在上述技术方案中,在所述步骤1之前将所述从I2C设备与所述主I2C设备单独组网。
在上述技术方案中,所述步骤1中所述主I2C设备向从I2C设备发送的广播命令中包括有待设置给从I2C设备的临时虚拟地址。
在上述技术方案中,所述步骤1中的广播命令的格式为:
起始位+广播地址(W)+寄存器地址(2bytes)+寄存器内容(2bytes)+结束位
其中,寄存器地址为对应存放临时虚拟地址的寄存器序号;寄存器内容为给所述从I2C设备分配的临时虚拟地址。
在上述技术方案中,所述步骤3中,所述主I2C设备向所述从I2C设备发出的读取命令的格式为:
起始位+设备地址1(W)+寄存器地址(2bytes)+起始位+设备地址2(R)+寄存器内容(2bytes)+结束位
其中,设备地址1和设备地址2为临时虚拟地址;寄存器地址为所述从I2C设备中存放有原来所使用的真实地址的寄存器序号;寄存器内容为等待从I2C设备应答的寄存器内容。
在上述技术方案中,所述步骤4中,所述主I2C设备通过设置命令将从I2C设备的地址设置为从I2C设备原来所使用的真实地址。
在上述技术方案中,所述设置命令的格式为:
起始位+设备地址(W)+寄存器地址(2bytes)+寄存器内容(2bytes)+结束位
其中,设备地址为临时虚拟地址;寄存器地址为复位寄存器的寄存器序号;寄存器内容为从I2C设备原来所使用的真实地址。
本发明取得了以下技术效果:本发明能够通过发广播的方式虚拟一个地址给从I2C,并且通过该虚拟地址来找到真正的从I2C地址,方法简单有效;本发明还可以提供一种基于上述方法的I2C通信系统,该系统结构简单,没有添加任何外部辅助设备,能够简单快速的获取从机地址,成本低廉,易于操作,适于广泛推广。
附图说明
图1为本发明的方法执行流程图。
具体实施方式
为了便于本领域普通技术人员理解和实施本发明,下面结合附图及具体实施方式对本发明作进一步的详细描述。
由此,本发明提供的一种基于广播的方式来查找I2C地址的方法,包含以下几个步骤:
0.将需要查找地址/确认地址的I2C设备作为从I2C设备与主I2C设备单独组网,使该I2C总线上仅有主I2C设备和需要查找地址/确认地址的I2C设备。
1.主I2C设备通过广播方式将临时虚拟地址发送给从I2C设备。
主I2C设备向I2C总线上的从I2C设备发送广播命令,广播命令中包含主I2C设备发给从I2C设备的虚拟地址A,格式如下:
起始位+广播地址(W)+寄存器地址(2byte)+寄存器内容(2byte)+结束位
其中,寄存器地址对应存放虚拟的I2C地址寄存器序号,例如0x28;寄存器内容存放临时给从I2C设备分配的虚拟地址A。
从I2C设备寄存器地址分配规划举例如下:
2.从I2C设备启用通过广播命令获得的临时虚拟地址,即从I2C设备接收到该广播命令后就自动将寄存器内容中的虚拟地址A作为从I2C设备的地址(即,从I2C设备根据接收到的广播命令将寄存器地址(如步骤1中的举例,此处为0x28)的内容修改为由广播命令发送来的虚拟I2C地址,并将其作为自己的I2C地址);
3.主I2C设备发送普通读取命令给从I2C设备,格式如下:
起始位+设备地址1(W)+寄存器地址(2)+起始位+设备地址2(R)+寄存器内容(2)+结束位
此时的设备地址1和设备地址2就是在步骤2中刚刚设置的虚拟地址A;寄存器地址是从I2C设备上存放原来真实I2C地址的寄存器地址(如步骤1中的举例,此处为0x29);该寄存器内容就是从I2C设备返回给主I2C设备的其原来真实I2C地址B。通过该读取命令,主I2C设备利用虚拟地址A读取从I2C设备之前所使用的真实I2C地址(即真实地址B)。
4.主I2C设备发送设置命令给从I2C设备,将其地址设置为真实I2C地址,格式如下:
起始位+设备地址(W)+寄存器地址(2)+寄存器内容(2)+结束位
在发送此命令时,使用的设备地址为虚拟I2C地址(即虚拟地址A),写入的寄存器地址为复位寄存器(如步骤1中的举例,此处为0x30),寄存器内容为真实I2C地址B。
5.此时主I2C设备可以使用从I2C设备原有地址与从I2C设备进行正常通信。
由于此时已经正确获得从I2C设备原来所使用的地址(真实地址B),可将将可将从I2C设备接入原来的/或其他新的I2C总线上正常使用。
在此过程中省略了通信过程中从I2C设备接收到主I2C设备命令后,对主I2C设备命令的正常ACK响应。
以上实施例仅为本发明的一种实施方式,其描述较为具体和详细,但不能因此而理解为对本发明专利范围的限制。其具体地址/内容分配和命令应答可根据实际需要进行相应的调整。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。
Claims (6)
1.一种基于广播方式来查找I2C设备地址的方法,其特征在于包括以下步骤:
将从I2C设备与主I2C设备单独组网,使I2C总线上仅有主I2C设备和从I2C设备;
步骤1,将需要查找地址的I2C设备作为从I2C设备,主I2C设备通过广播命令方式将临时虚拟地址发送给所述从I2C设备;
步骤2,该从I2C设备启用通过广播命令获得的所述临时虚拟地址;
步骤3,所述主I2C设备使用所述临时虚拟地址读取所述从I2C设备原来所使用的真实地址;
步骤4,所述主I2C设备使用所述临时虚拟地址将从I2C设备的地址设置为原来所使用的真实地址。
2.如权利要求1所述的一种基于广播方式来查找I2C设备地址的方法,其特征在于:所述步骤1中所述主I2C设备向从I2C设备发送的广播命令中包括有待设置给从I2C设备的临时虚拟地址。
3.如权利要求2所述的一种基于广播方式来查找I2C设备地址的方法,其特征在于:所述步骤1中的广播命令的格式为:
起始位+广播地址+寄存器地址+寄存器内容+结束位
其中,寄存器地址为对应存放临时虚拟地址的寄存器序号;寄存器内容为给所述从I2C设备分配的临时虚拟地址;广播地址的读写标志为W,寄存器地址为2bytes,寄存器内容为2bytes。
4.如权利要求1所述的一种基于广播方式来查找I2C设备地址的方法,其特征在于:所述步骤3中,所述主I2C设备向所述从I2C设备发出的读取命令的格式为:
起始位+设备地址1+寄存器地址+起始位+设备地址2+寄存器内容+结束位
其中,设备地址1和设备地址2为临时虚拟地址;寄存器地址为所述从I2C设备中存放有原来所使用的真实地址的寄存器序号;寄存器内容为等待从I2C设备应答的寄存器内容;设备地址1的读写标志为W,设备地址2的读写标志为R,寄存器地址为2bytes,寄存器内容为2bytes。
5.如权利要求4所述的一种基于广播方式来查找I2C设备地址的方法,其特征在于:所述步骤4中,所述主I2C设备通过设置命令将从I2C设备的地址设置为从I2C设备原来所使用的真实地址。
6.如权利要求5所述的一种基于广播方式来查找I2C设备地址的方法,其特征在于:所述设置命令的格式为:
起始位+设备地址+寄存器地址+寄存器内容+结束位
其中,设备地址为临时虚拟地址;寄存器地址为复位寄存器的寄存器序号;寄存器内容为从I2C设备原来所使用的真实地址;设备地址的读写标志为W,寄存器地址为2bytes,寄存器内容为2bytes。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611085556.0A CN106713521B (zh) | 2016-11-30 | 2016-11-30 | 一种基于广播方式来查找i2c设备地址的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611085556.0A CN106713521B (zh) | 2016-11-30 | 2016-11-30 | 一种基于广播方式来查找i2c设备地址的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106713521A CN106713521A (zh) | 2017-05-24 |
CN106713521B true CN106713521B (zh) | 2019-12-10 |
Family
ID=58935300
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611085556.0A Active CN106713521B (zh) | 2016-11-30 | 2016-11-30 | 一种基于广播方式来查找i2c设备地址的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106713521B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101355482A (zh) * | 2008-09-04 | 2009-01-28 | 中兴通讯股份有限公司 | 实现嵌入式设备地址顺序识别的设备、方法和系统 |
CN105183685A (zh) * | 2015-06-24 | 2015-12-23 | 深圳市振邦智能科技有限公司 | 一种基于i2c通信协议的获取从机地址的方法及i2c通信系统 |
CN105589825A (zh) * | 2015-07-17 | 2016-05-18 | 贵州全安密灵科技有限公司 | 主从式串行通信网络中的电子雷管状态快速查询方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106155964B (zh) * | 2015-03-31 | 2019-05-21 | 恩智浦有限公司 | 使用串行数据传输总线的系统中的地址解码方法与系统 |
-
2016
- 2016-11-30 CN CN201611085556.0A patent/CN106713521B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101355482A (zh) * | 2008-09-04 | 2009-01-28 | 中兴通讯股份有限公司 | 实现嵌入式设备地址顺序识别的设备、方法和系统 |
CN105183685A (zh) * | 2015-06-24 | 2015-12-23 | 深圳市振邦智能科技有限公司 | 一种基于i2c通信协议的获取从机地址的方法及i2c通信系统 |
CN105589825A (zh) * | 2015-07-17 | 2016-05-18 | 贵州全安密灵科技有限公司 | 主从式串行通信网络中的电子雷管状态快速查询方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106713521A (zh) | 2017-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5974475A (en) | Method for flexible multiple access on a serial bus by a plurality of boards | |
US7603501B2 (en) | Communication circuit of serial peripheral interface devices | |
US7249209B2 (en) | System and method for dynamically allocating inter integrated circuits addresses to multiple slaves | |
CN103095855B (zh) | I2c通信接口装置 | |
JP2008539497A (ja) | 集積回路間におけるスレーブ装置の装置識別コーディング | |
US20060123168A1 (en) | System and method for dynamically allocating addresses to devices coupled to an integrated circuit bus | |
CN107025203B (zh) | 第一板卡、第二板卡及一种设备 | |
TW201321983A (zh) | 隨插即用式模組、電子系統以及相應的判斷方法與查詢方法 | |
JP2007251947A (ja) | マルチマスタのチェーン接続された二線シリアルバス | |
US7739435B2 (en) | System and method for enhancing I2C bus data rate | |
CN108694140B (zh) | 用于寻址i2c总线上的非易失性存储器的方法和对应的存储器设备 | |
CN110223643B (zh) | 数据传输方法、组件及系统、显示装置 | |
US11144305B2 (en) | Method for updating IC firmware | |
US20100036990A1 (en) | Network device | |
US7822040B2 (en) | Method for increasing network transmission efficiency by increasing a data updating rate of a memory | |
CN106713521B (zh) | 一种基于广播方式来查找i2c设备地址的方法 | |
CN112148629A (zh) | 用于在总线上寻址集成电路的方法和对应设备 | |
CN108228520B (zh) | 一种面向bmc的i2c控制器的快速传输方法 | |
CN108681517B (zh) | 变换i2c器件地址的方法及系统 | |
CN100504712C (zh) | 版本可编程电路模块 | |
US8194480B2 (en) | Method for initializing memory device | |
EP2725499A1 (en) | Method for assigning dynamically an identifier to a slave device in I2C data bus | |
US20160291987A1 (en) | Programmable cable and programming method thereof | |
CN107957969B (zh) | 判定设备连接状态及设备类型的方法 | |
WO2010000678A1 (en) | Method for transferring or erasing data in a master-slave environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |