在通信设备中操作多个I2C从器件的装置及其方法.pdf

上传人:e1 文档编号:173406 上传时间:2018-01-31 格式:PDF 页数:19 大小:926.15KB
返回 下载 相关 举报
摘要
申请专利号:

CN200410009102.6

申请日:

2004.05.19

公开号:

CN1581026A

公开日:

2005.02.16

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效|||公开

IPC分类号:

G06F3/00; H04B10/02

主分类号:

G06F3/00; H04B10/02

申请人:

中兴通讯股份有限公司

发明人:

赵伟; 邵国

地址:

518057广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦A座6层

优先权:

专利代理机构:

北京律诚同业知识产权代理有限公司

代理人:

梁挥;徐金国

PDF下载: PDF下载
内容摘要

本发明涉及一种在通信设备中操作多个I2C从器件的装置及其方法,该装置包括有CPU、与CPU总线连接的逻辑器件,每个从器件的I2C接口的串行时钟线都与逻辑器件的同一个时钟线管脚连接,每个从器件的I2C接口的串行数据线分别与逻辑器件的对应的不同的数据线管脚连接;并且逻辑器件内包括有:一时钟寄存器,其输出端连接至所述逻辑器件的时钟线管脚;多个数据寄存器,每个数据寄存器的输出端与数据线管脚之间均设置一电子开关,其输出端连接至数据线管脚,分别与多个从器件的I2C接口的串行数据线对应,并通过一输入输出状态寄存器控制该电子开关的闭合和断开,CPU通过访问逻辑器件内部对应的寄存器来实现对一个或多个I2C从器件的操作。

权利要求书

1、  一种在通信设备中操作多个I2C从器件的装置,包括有一逻辑器件、多个I2C从器件、CPU,其特征在于,所述CPU与所述逻辑器件以总线方式相连,所述多个I2C从器件的每个I2C接口的串行时钟线都与所述逻辑器件的同一个时钟线管脚连接,每个I2C接口的串行数据线分别与所述逻辑器件的对应的不同的数据线管脚连接;并且,所述逻辑器件内部包括有:
一时钟寄存器,其输出端连接至所述逻辑器件的时钟线管脚,与所述多个从器件的串行时钟线对应;
多个数据寄存器,每个数据寄存器的输出端与所述数据线管脚之间均设置一电子开关,该电子开关的输出端连接所述逻辑器件的数据线管脚,分别与所述多个I2C从器件的I2C接口的串行数据线对应,每一电子开关通过一输入输出状态寄存器控制该电子开关的闭合和断开,以连通所述数据寄存器的输出端与所述逻辑器件的数据线管脚;
其中,所述时钟寄存器、数据寄存器、输入输出状态寄存器均可被所述CPU操作,所述数据线管脚的电平状态也可由CPU通过所述逻辑器件读取。

2、
  根据权利要求1所述的在通信设备中操作多个I2C从器件的装置,其特征在于,对于未设置有内部上拉电阻的接口线,所述多个I2C从器件的每个I2C接口的串行数据线还分别通过一上拉电阻与所述接口的供电电源连接。

3、
  一种在通信设备中操作多个I2C从器件的方法,其特征在于,该方法包括如下步骤:
步骤一,设置一CPU与一逻辑器件以总线方式连接,并将所述多个I2C从器件的每个I2C从器件的串行数据线分别与所述逻辑器件的对应的不同的数据线管脚连接,每个I2C从器件的串行时钟线都与所述逻辑器件的同一个时钟线管脚连接;
步骤二,在所述逻辑器件内用多个数据寄存器分别与所述逻辑器件的多个不同的数据线管脚对应,每个数据寄存器的输出与对应的数据线管脚之间设置一电子开关,由该电子开关状态决定是否连通所述数据寄存器的输出与对应的数据线管脚,另设置有一输入输出状态寄存器控制每一电子开关的状态;并用一个时钟寄存器与所述逻辑器件的对应的时钟线管脚对应;
步骤三,当CPU需要操作I2C从器件时,按I2C总线规范的时序,分别访问对应于所述逻辑器件的数据寄存器和时钟寄存器以及输入输出状态寄存器,以使需操作的I2C从器件的串行数据线和串行时钟线与标准的I2C总线主设备的串行数据线和串行时钟线的作用相同,从而实现CPU对I2C从器件的操作。

4、
  根据权利要求3所述的在通信设备中操作多个I2C从器件的方法,其特征在于,在步骤一中,对于未设置有内部上拉电阻的接口线,所述多个I2C从器件的每个I2C接口的串行数据线还分别通过一上拉电阻与所述接口的供电电源连接。

5、
  根据权利要求3或4所述的在通信设备中操作多个I2C从器件的方法,其特征在于,在步骤二中,相对所述逻辑器件来说,当需要所述数据线管脚作为输出时,所述电子开关闭合,数据线管脚输出内容来自对应的数据寄存器的输出;当不需要所述数据线管脚作为输出时,所述电子开关断开;当需要所述数据线管脚作为输入时,所述电子开关也断开,所述数据线管脚的电平状态,可由CPU通过所述逻辑器件读取;并且,当输入输出状态寄存器的输出为高电平时,所述电子开关闭合,当输入输出状态寄存器的输出为低电平时,所述电子开关断开。

6、
  根据权利要求5所述的在通信设备中操作多个I2C从器件的方法,其特征在于,在步骤三中,当CPU需往所述多个I2C从器件中任一从器件的寄存器中写入数据时,还包括如下步骤:
开始操作;
写入需写入数据的I2C从器件地址;
CPU读取该I2C从器件的应答信息,判断是否为表示收到数据的低电平,若是则写入需写入的寄存器地址,并进入下一步骤,否则发送出错报告并停止操作;
CPU读取该I2C从器件的应答信息,判断是否为表示收到数据的低电平,若是则向该I2C从器件写入所需写入的数据,并进入下一步骤,否则发送出错报告并停止操作;
CPU读取该I2C从器件的应答信息,判断是否为表示收到数据的低电平,若是则表示写入数据成功,停止操作,否则发送出错报告并停止操作。

7、
  根据权利要求5所述的在通信设备中操作多个I2C从器件的方法,其特征在于,在步骤三中,当CPU需读取所述多个I2C从器件中任一从器件的寄存器中的数据时,还包括如下步骤:
开始操作;
写入需读取的I2C从器件地址;
CPU读取该I2C从器件的应答信息,判断是否为表示收到数据的低电平,若是则写入需读取的寄存器地址,并进入下一步骤,否则发送出错报告并停止操作;
CPU读取该I2C从器件的应答信息,判断是否为表示收到数据的低电平,若是则再次开始操作,并进入下一步骤,否则发送出错报告并停止操作;
写入需读取的I2C从器件地址;
CPU读取该I2C从器件的应答信息,判断是否为表示收到数据的低电平,若是则开始读取数据,并在读取数据完毕后停止操作,否则发送出错报告并停止操作。

8、
  根据权利要求5所述的在通信设备中操作多个I2C从器件的方法,其特征在于,在步骤三中,当CPU需连续读取所述多个I2C从器件中任一从器件的寄存器中地址为0~N的N+1个字节的数据时,还包括如下步骤:
开始操作;
写入需读取的I2C从器件地址;
CPU读取该I2C从器件的应答信息,判断是否为表示收到数据的低电平,若是则写入需读取的寄存器地址的初始地址0,并进入下一步骤,否则发送出错报告并停止操作;
再次开始操作;
写入需读取的I2C从器件地址;
CPU读取该I2C从器件的应答信息,判断是否为表示收到数据的低电平,若是则赋值0给一变量L,并开始读取寄存器地址为0中的数据,并在读取完该寄存器地址为0的数据后将该变量L加1后重新赋值予该变量L,同时向该I2C从器件发送低电平的应答信息,并读取下一地址中的数据,如此循环直至该变量L的值等于N,此时向该I2C从器件发送高电平的非应答信息,并停止操作,结束操作。

9、
  根据权利要求5或6或7或8所述的在通信设备中操作多个I2C从器件的方法,其特征在于,在器件地址操作中,只操作对应所述逻辑器件中对应的数据寄存器,并配合操作所述逻辑器件中的时钟寄存器。

说明书

在通信设备中操作多个I2C从器件的装置及其方法
技术领域
本发明涉及计算机网络通信领域,特别是涉及一种在计算机网络通信设备中操作多个I2C从器件的方法。
背景技术
在计算机网络通信设备中,具有I2C总线(INTER-IC BUS或IC TO BUS)接口的器件应用越来越多,I2C总线接口具有信号线少、操作方便的优点。一般的对I2C操作方法是依靠不同的器件地址来区分器件,I2C总线上的每个器件都有唯一的器件地址。有的器件地址是靠本身外部硬件配置,而有的器件地址是制造商固化在芯片内部的,不可配置。在实际应用中,会用到多个同一器件地址且不可配置的I2C从器件。比如小封装可插拔光模块(SFP,SmallForm-Factor Pluggable)的I2C从器件地址已由制造商固定为“000”,无法由外部设定。这种情况下,如果按标准的I2C总线的结构连接,将无法区分每一个器件。
一种现有技术是给每个I2C从器件提供一个I2C接口,系统控制器或CPU对每个接口分别进行操作。这种方法的缺点是占用系统资源较多。当系统接有数十个具有相同器件地址的I2C从器件时,采用这种方式会占用大量的系统硬件资源。
另一种现有技术是用逻辑器件和模拟开关相结合,用逻辑器件做单刀多掷开关,控制CPUI2C总线接口的串行时钟线(SCL,Serial Clock Line)与I2C从器件的串行时钟线相连;模拟开关用来控制分组的I2C从器件的串行数据信号线(SDA,Serial DAta)与CPU的I2C接口的串行数据信号线相连。这样分别对每个I2C从器件操作。此方式的缺点是所增硬件设备多,若CPU无I2C总线接口,则无法实现对I2C从器件的操作。
发明内容
本发明所要解决的技术问题在于提供一种在通信设备中操作多个I2C从器件的设备及其方法,使得CPU在无I2C总线接口的情形下也能实现对I2C从器件的操作,并且实现高效低成本的目的。
为了实现上述目的,本发明提供了一种在通信设备中操作多个I2C从器件的装置,包括有一逻辑器件、多个I2C从器件、CPU,其特点在于,所述CPU与所述逻辑器件以总线方式相连,所述多个I2C从器件的每个I2C接口的串行时钟线都与所述逻辑器件的同一个时钟线管脚连接,每个I2C接口的串行数据线分别与所述逻辑器件的对应的不同的数据线管脚连接;并且,所述逻辑器件内部包括有:
一时钟寄存器,其输出端连接至所述逻辑器件的时钟线管脚,与所述多个从器件的串行时钟线对应;
多个数据寄存器,每个数据寄存器的输出端与所述数据线管脚之间均设置一电子开关,该电子开关的输出端连接所述逻辑器件的数据线管脚,分别与所述多个I2C从器件的I2C接口的串行数据线对应,每一电子开关通过一输入输出状态寄存器控制该电子开关的闭合和断开,以连通所述数据寄存器的输出端与所述逻辑器件的数据线管脚;
其中,所述时钟寄存器、数据寄存器、输入输出状态寄存器均可被所述CPU操作,所述数据线管脚的状态也可由CPU通过所述逻辑器件读取;所述CPU通过访问所述逻辑器件内部与所述I2C从器件的串行时钟线和串行数据线对应的寄存器来实现对一个或多个I2C从器件的操作。
上述的在通信设备中操作多个I2C从器件的装置,其特点在于,对于未设置有内部上拉电阻的接口线,所述多个I2C从器件的每个I2C接口的串行数据线还分别通过一上拉电阻与所述接口的供电电源连接。
本发明还提供了一种在通信设备中操作多个I2C从器件的方法,其特点在于,该方法包括如下步骤:
步骤一,设置一CPU与一逻辑器件以总线方式连接,并将所述多个I2C从器件的每个I2C从器件的串行数据线分别与所述逻辑器件的对应的不同的数据线管脚连接,每个I2C从器件的串行时钟线都与所述逻辑器件的同一个时钟线管脚连接;
步骤二,在所述逻辑器件内用多个数据寄存器分别与所述逻辑器件的多个不同的数据线管脚对应,每个数据寄存器的输出与对应的数据线管脚之间设置一电子开关,由该电子开关状态决定是否连通所述数据寄存器的输出与对应地数据线管脚,另设置有一输入输出状态寄存器控制每一电子开关的状态;并用一个时钟寄存器与所述逻辑器件的对应的时钟线管脚对应;
步骤三,当CPU需要操作I2C从器件时,按I2C总线规范的时序,分别访问对应于所述逻辑器件的数据寄存器和时钟寄存器以及输入输出状态寄存器,以使需操作的I2C从器件的串行数据线和串行时钟线与标准的I2C总线主设备的串行数据线和串行时钟线的作用相同,从而实现CPU对I2C从器件的操作。
上述的在通信设备中操作多个I2C从器件的方法,其特点在于,在步骤一中,对于未设置有内部上拉电阻的接口线,所述多个I2C从器件的每个I2C接口的串行数据线还分别通过一上拉电阻与所述接口的供电电源连接。
上述的在通信设备中操作多个I2C从器件的方法,其特点在于,在步骤二中,相对所述逻辑器件来说,当需要所述数据线管脚作为输出时,所述电子开关闭合,数据线管脚输出内容来自对应的数据寄存器的输出;当不需要所述数据线管脚作为输出时,所述电子开关断开;当需要所述数据线管脚作为输入时,所述电子开关也断开,所述数据线管脚的电平状态,可由CPU通过所述逻辑器件读取;并且,当输入输出状态寄存器的输出为高电平时,所述电子开关闭合,当输入输出状态寄存器的输出为低电平时,所述电子开关断开。
上述的在通信设备中操作多个I2C从器件的方法,其特点在于,在步骤三中,当CPU需往所述多个I2C从器件中任一从器件的寄存器中写入数据时,还包括如下步骤:
开始操作;
写入需写入数据的I2C从器件地址;
CPU读取该I2C从器件的应答信息,判断是否为表示收到数据的低电平,若是则写入需写入的寄存器地址,并进入下一步骤,否则发送出错报告并停止操作;
CPU读取该I2C从器件的应答信息,判断是否为表示收到数据的低电平,若是则向该I2C从器件写入所需写入的数据,并进入下一步骤,否则发送出错报告并停止操作;
CPU读取该I2C从器件的应答信息,判断是否为表示收到数据的低电平,若是则表示写入数据成功,停止操作,否则发送出错报告并停止操作。
上述的在通信设备中操作多个I2C从器件的方法,其特点在于,在步骤三中,当CPU需读取所述多个I2C从器件中任一从器件的寄存器中的数据时,还包括如下步骤:
开始操作;
写入需读取的I2C从器件地址;
CPU读取该I2C从器件的应答信息,判断是否为表示收到数据的低电平,若是则写入需读取的寄存器地址,并进入下一步骤,否则发送出错报告并停止操作;
CPU读取该I2C从器件的应答信息,判断是否为表示收到数据的低电平,若是则再次开始操作,并进入下一步骤,否则发送出错报告并停止操作;
写入需读取的I2C从器件地址;
CPU读取该I2C从器件的应答信息,判断是否为表示收到数据的低电平,若是则开始读取数据,并在读取数据完毕后停止操作,否则发送出错报告并停止操作。
上述的在通信设备中操作多个I2C从器件的方法,其特点在于,在步骤三中,当CPU需连续读取所述多个I2C从器件中任一从器件的寄存器中地址为0~N的N+1个字节的数据时,还包括如下步骤:
开始操作;
写入需读取的I2C从器件地址;
CPU读取该I2C从器件的应答信息,判断是否为表示收到数据的低电平,若是则写入需读取的寄存器地址的初始地址0,并进入下一步骤,否则发送出错报告并停止操作;
再次开始操作;
写入需读取的I2C从器件地址;
CPU读取该I2C从器件的应答信息,判断是否为表示收到数据的低电平,若是则赋值0给一变量L,并开始读取寄存器地址为0中的数据,并在读取完该寄存器地址为0的数据后将该变量L加1后重新赋值予该变量L,同时向该I2C从器件发送低电平的应答信息,并读取下一地址中的数据,如此循环直至该变量L的值等于N,此时向该I2C从器件发送高电平的非应答信息,并停止操作,结束操作。
上述的在通信设备中操作多个I2C从器件的方法,其特点在于,在器件地址操作中,只操作对应所述逻辑器件中对应的数据寄存器,并配合操作所述逻辑器件中的时钟寄存器。
与现有技术相比,本发明通过多个I2C从器件的I2C接口的SCL接到逻辑器件上,多个I2C从器件的每个I2C接口的SDA分别接到逻辑器件的IO上,CPU通过访问逻辑器件内部与SCL和SDA对应的寄存器来实现对一个或多个I2C从器件的操作。不论CPU有没有I2C总线接口,都可实现对多个I2C从器件的操作。方便灵活,速度快,硬件成本低。
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
附图说明
图1为本发明装置的硬件连接结构图;
图2为本发明的逻辑器件内部控制SDA、SCL线的寄存器示意图;
图3为本发明连续读I2C从器件方法的流程图;
图4为本发明写I2C从器件任一寄存器的方法的流程图;
图5为本发明读I2C从器件任一寄存器的方法的流程图。
具体实施方式
本发明的硬件连接方式见图1,包括有CPU10、逻辑器件20、多个I2C从器件30,其中所述多个I2C从器件都具有一个I2C接口,每个I2C接口包括有串行时钟线321和串行数据线323,用以与所述逻辑器件20连接。每个I2C从器件30的串行数据线323分别与逻辑器件20的不同IO管脚(以下标称为数据线管脚)相连,标称为SDA1,SDA2,……,SDAn。其中,SDA1,SDA2,……,SDAn分别用一上拉电阻R拉至接口信号的供电电源VDD上;若与接口线上带内部上拉电阻的接口连接,可以不外加上拉电阻。每个I2C从器件30的串行时钟线321都与逻辑器件的同一IO管脚(以下标称为时钟线管脚)相连,标称为SCL;逻辑器件20与CPU10通过接口以总线方式相连,以使CPU10能访问逻辑器件20的寄存器和管脚状态。
在逻辑器件20内部的与SCL线和SDAm(m=1,2,...,n)线相对应的寄存器和这些寄存器与SCL、SDAm(m=1,2,...,n)之间的逻辑关系如图2所示,该逻辑器件20内部包括有:
一时钟寄存器21,标称为Reg_SCL,其输出端连接至所述逻辑器件20的时钟线管脚,与所述多个I2C从器件30的串行时钟线321对应。
多个数据寄存器22,标称为Reg_SDAm(m=1,2,...,n),共n个,每个数据寄存器22的输出端与所述数据线管脚之间均设置一电子开关23,该电子开关23的输出端连接所述逻辑器件20的数据线管脚,分别与所述多个I2C从器件30的I2C接口的串行数据线323对应,每一电子开关23通过一输入输出状态寄存器(标称为Reg_inout)24控制该电子开关23的闭合和断开,以连通所述数据寄存器22的输出端与所述逻辑器件20的数据线管脚。
由于在I2C总线规范中,总线协议有严格的时序要求。总线工作时,由时钟控制线SCL传送时钟脉冲,由串行数据线SDA传送数据。总线传送的每帧数据均为一个字节(8bit),但启动I2C总线后,传送的字节个数没有限制,只要求每传送一个字节后,对方回应一个应答位(Acknowledge Bit)。发送数据时首先发送数据的最高位(MSB)。
I2C总线协议规定,启动总线后第一个字节的高7位是从器件的寻址地址,第8位为方向位(“0”表示主器件对从器件的写操作;“1”表示主器件对从器件的读操作),其余的字节为操作的数据。总线每次传送开始时有起始信号,结束时有停止信号。在总线传送完一个或几个字节后,可以使SCL线的电平变低,从而使传送暂停。
依据I2C总线的传输协议,总线工作时的具体时序如下:
起始信号(S):在时钟线SCL为高电平期间,数据线SDA出现由高电平向低电平的变化,用于启动I2C总线,准备开始传送数据;
停止信号(P):在时钟线SCL为高电平期间,数据线SDA出现由低电平向高电平的变化,用于停止I2C总线上的数据传送;
应答信号(A):I2C总线的第9个脉冲对应应答位,若SDA线上显示低电平则为总线“应答”(A),若SDA线上显示高电平则为“非应答”(/A);
数据位传送:I2C总线起始信号或应答信号之后的第1~8个时钟脉冲对应一个字节的8位数据传送。在脉冲高电平期间,数据串行传送;在脉冲低电平期间,数据准备,允许总线上数据电平变化。
因此,本发明中当CPU需要操作I2C从器件时,按I2C总线规范的时序,由CPU分别访问逻辑器件中数据寄存器Reg_SDAm、时钟寄存器Reg_SCL和输入输出状态寄存器Reg_inout,以使数据线SDAm和时钟线SCL产生与标准的I2C总线主设备的SDA、SCL相同的作用,如产生起始、停止条件,应答,数据传送等作用。
在本发明的逻辑器件20中,I2C从器件30的SCL线由时钟寄存器Reg_SCL控制,Reg_SCL输出为‘1’时,SCL为高电平,Reg_SCL输出为‘0’时,SCL为低电平,Reg_SCL输出从‘0’变为‘1’时,SCL为正跳沿,Reg_SCL输出从‘1’变为‘0’时,SCL为负跳沿。
相对逻辑器件20来说,当需要数据线SDAm作为输出时,电子开关闭合,数据线SDAm输出内容来自对应的数据寄存器Reg_SDAm的输出,当数据线SDAm不作为输出时,电子开关断开,当需要数据线SDAm作为输入时,电子开关也断开,此时数据线SDAm的状态(是‘1’还是‘0’)可由CPU通过逻辑器件读取;输入输出状态寄存器Reg_inout的输出为‘1’时,电子开关闭合,输入输出状态寄存器Reg_inout的输出为‘0’时,电子开关断开;相对逻辑器件来说,SDAm线作为输出,I2C从器件作为输入时,该线状态由寄存器Reg_SDAm的输出控制,Reg_SDAm输出为‘1’,则SDAm线为高电平,Reg_SDAm输出为‘0’,则SDAm线为低电平,Reg_SDAm输出从‘0’变为‘1’时,SDAm线为正跳沿,Reg_SDAm输出从‘1’变为‘0’时,SDAm线为负跳沿。
因此,本发明中,在通信设备中操作多个I2C从器件的方法,包括如下步骤:
步骤一,设置一CPU与一逻辑器件以总线方式连接,并将所述多个I2C从器件的每个I2C从器件的串行数据线分别与所述逻辑器件的对应的不同的数据线管脚连接,每个I2C从器件的串行时钟线都与所述逻辑器件的同一个时钟线管脚连接;
步骤二,在所述逻辑器件内用多个数据寄存器分别与所述逻辑器件的多个不同的数据线管脚对应,每个数据寄存器的输出与对应的数据线管脚之间设置一电子开关,由该电子开关状态决定是否连通所述数据寄存器的输出与对应的数据线管脚,另设置有一输入输出状态寄存器控制每一电子开关的状态;并用一个时钟寄存器与所述逻辑器件的对应的时钟线管脚对应;
步骤三,当CPU需要操作I2C从器件时,按I2C总线规范的时序,分别访问对应于所述逻辑器件的数据寄存器和时钟寄存器以及输入输出状态寄存器,以使需操作的I2C从器件的串行数据线和串行时钟线与标准的I2C总线主设备的串行数据线和串行时钟线的作用相同,从而实现CPU对I2C从器件的操作。
下面以某产品中的具有24个SFP光接口业务板为例,SFP光模块具有I2C接口,系统可通过I2C接口读取SFP光模块信息。每个SFP光模块I2C器件地址都为10100000。单板上24个SFP光模块的I2C接口的串行时钟(SCL,Serial Clock)信号连接到逻辑芯片上,24个SFP光模块的I2C接口中的串行数据(SDA,Serial Data)信号分别与逻辑芯片的不同管脚连接,CPU通过CPU总线与逻辑器件连接。当CPU需要读取SFP光模块内部信息时,按I2C总线规范,分别操作逻辑器件内部的数据寄存器Reg_SDAm和时钟寄存器Reg_SCL以及SDA输入输出转换控制寄存器Reg_inout,使SDAm(m=1,...,24)、SCL产生与标准I2C总线的数据线、时钟线相同的作用,从而将SFP的信息被读入CPU中。
具体举例连续读取SFP中的寄存器地址从‘0’到‘N’的N+1个字节的内容至CPU中,其操作流程图如图3所示:
步骤301,开始操作;
步骤302,向SFP写器件地址‘10100000’;
步骤303,读取从器件SFP的应答信息ACK,若ACK=0,即为低电平,则进入步骤304,否则进入步骤315和316;
步骤304,向SFP写寄存器地址‘0’;
步骤305,重新开始操作;
步骤306,写器件地址‘10100000’;
步骤307,读取从器件SFP的应答信息ACK,若ACK=0,即为低电平,则继续下一步骤308,否则进入步骤315和316;
步骤308,赋值0给一变量L;
步骤309,读取寄存器M的值至CPU(M=0,1,2……N);
步骤310,判断L=N?若否,则说明连续读取数据过程未结束,进入步骤311,否则说明连续读取数据过程已结束,进入步骤313;
步骤311,赋值L=L+1;
步骤312,向从器件发送应答消息ACK为“0”,并回到步骤309,继续读取寄存器M的值至CPU;
步骤313,向从器件发送应答消息ACK为“1”,即非应答,并进入步骤314;
步骤314,停止操作;
步骤315,发送出错报告;
步骤316,停止操作。
如图3的流程图所示,为读一个SFP内容,实际操作中可同时读取24个SFP的内容。在操作中,也可以只操作要读取的SFP内容,在器件地址操作中,只操作对应逻辑器件中对应的数据寄存器(而使其它数据寄存器保持为值“1”不变),并配合操作逻辑器件中的时钟寄存器。这样就可以读取24个SFP中的某一个或某几个的信息。
再以某产品中的一个电路板使用一片CY22393FC、两片CY22150FC为例,CY22393FC、CY22150FC的I2C器件地址都为‘1101001’,以上两芯片为锁相环时钟芯片,需要对其内部寄存器写入配置数据才能得到需要的时钟信号。硬件也如图1方式。
如图4所示,为写CY22393FC、CY22150FC某一个寄存器的操作流程,其步骤如下:
步骤401,开始操作;
步骤402,写器件地址;
步骤403,读取从器件SFP的应答信息ACK,若ACK=0,即为低电平,则进入步骤404,否则进入步骤409和410;
步骤404,再写所需要写入的寄存器地址;
步骤405,读取从器件SFP的应答信息ACK,若ACK=0,即为低电平,则进入步骤406,否则进入步骤409和410;
步骤406,再写入需要配置的数据;
步骤407,读取从器件SFP的应答信息ACK,若ACK=0,即为低电平,则说明写入数据成功,进入步骤408,否则进入步骤409和410;
步骤408,停止操作;
步骤409,发送出错报告;
步骤410,停止操作。
上述为写操作过程,对于读CY22393FC、CY22150FC某一个寄存器的操作流程请参见图5,其包括如下步骤:
步骤501,开始操作;
步骤502,写从器件的器件地址;
步骤503,读取从器件的应答信息ACK,若ACK=0,即为低电平,则进入步骤504,否则进入步骤511和512;
步骤504,再写入所要读的寄存器地址;
步骤505,读取从器件的应答信息ACK,若ACK=0,即为低电平,则进入步骤506,否则进入步骤511和512;
步骤506,重新再做开始操作;
步骤507,写从器件的器件地址;
步骤508,读取从器件的应答信息ACK,若ACK=0,即为低电平,则进入步骤509,否则进入步骤511和512;
步骤509,进行读操作;
步骤510,在读操作进行完毕后停止操作;
步骤511,发送出错报告;
步骤512,停止操作。
本发明提供的方法在对多个I2C从器件操作时方便灵活,速度快,硬件成本低。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

在通信设备中操作多个I2C从器件的装置及其方法.pdf_第1页
第1页 / 共19页
在通信设备中操作多个I2C从器件的装置及其方法.pdf_第2页
第2页 / 共19页
在通信设备中操作多个I2C从器件的装置及其方法.pdf_第3页
第3页 / 共19页
点击查看更多>>
资源描述

《在通信设备中操作多个I2C从器件的装置及其方法.pdf》由会员分享,可在线阅读,更多相关《在通信设备中操作多个I2C从器件的装置及其方法.pdf(19页珍藏版)》请在专利查询网上搜索。

本发明涉及一种在通信设备中操作多个I2C从器件的装置及其方法,该装置包括有CPU、与CPU总线连接的逻辑器件,每个从器件的I2C接口的串行时钟线都与逻辑器件的同一个时钟线管脚连接,每个从器件的I2C接口的串行数据线分别与逻辑器件的对应的不同的数据线管脚连接;并且逻辑器件内包括有:一时钟寄存器,其输出端连接至所述逻辑器件的时钟线管脚;多个数据寄存器,每个数据寄存器的输出端与数据线管脚之间均设置一电子。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1