CN101324875A - 一种扩展i2c总线的方法及i2c总线扩展装置 - Google Patents
一种扩展i2c总线的方法及i2c总线扩展装置 Download PDFInfo
- Publication number
- CN101324875A CN101324875A CNA200710118808XA CN200710118808A CN101324875A CN 101324875 A CN101324875 A CN 101324875A CN A200710118808X A CNA200710118808X A CN A200710118808XA CN 200710118808 A CN200710118808 A CN 200710118808A CN 101324875 A CN101324875 A CN 101324875A
- Authority
- CN
- China
- Prior art keywords
- bus
- signal
- sda
- scl
- current
- 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.)
- Granted
Links
Images
Landscapes
- Bus Control (AREA)
Abstract
本发明提供一种扩展I2C总线的方法及I2C总线扩展装置,将主设备处的一级I2C总线扩展为多条二级I2C总线,该装置包括:时钟扩展模块,用于将一级I2C总线中的串行时钟线SCL信号扩展成多个SCL信号后,分发至各二级I2C总线的SCL上;数据控制模块,用于根据主设备发出的选择信号,选通一级I2C总线的串行数据线SDA与其中一条二级I2C总线的SDA的连接,并根据方向控制模块确定的SDA信号方向设置SDA信号的方向;方向控制模块,用于根据被选通的一、二级I2C总线上的当前操作状态,确定SDA信号的方向。本发明提供的扩展I2C总线的方法及I2C总线扩展装置,实现了I2C总线的扩展。
Description
技术领域
本发明涉及一种I2C(Inter-Integrated Circuit)总线技术,具体涉及一种扩展I2C总线的方法及I2C总线扩展装置。
背景技术
I2C总线是飞利浦(Philips)公司定义的同步串行数据传输总线,是一种2线串行接口总线,其中包括2路信号线,分别为串行数据线(SDA)和串行时钟线(SCL)。I2C总线上只有一个主设备,但可挂接多个从设备。同一I2C总线上挂接的多个设备,通过各自的设备地址来区分。在一条总线中,同类设备的地址是不能相同的,否则将导致总线冲突,读写异常,无法完成对应的功能。
在现有的硬件系统中,I2C常被用于设备配置,例如采用一个处理控制芯片通过I2C总线去配置其下挂接的设备。以常用的媒体处理设计来说,多数媒体处理采用一片数字信号处理芯片完成媒体数据的处理,同时通过I2C总线配置音、视频的编解码芯片。在此类设计中往往需要使用较多的音、视频编解码芯片,而多数音、视频编解码芯片的I2C设备地址只有两种配置,因此,当一条I2C总线所带的从设备较多,或者从设备的设备地址可配置性较差(有的I2C设备的设备地址只有两种设置),如果不做任何措施,从设备的设备地址就会发生冲突,比如一条I2C总线上需要挂接3个某芯片,而该芯片的I2C设备地址只有两种配置,这种情况下便会由于设备地址冲突而造成设计无法实现的后果。
为解决上述问题,可以通过将设备地址冲突的I2C器件划分到不同的I2C总线,即通过扩展I2C总线来解决I2C设备地址冲突问题。现有技术中,常用的扩展I2C总线的方法是,采用额外的I2C总线驱动器件(如buffer或HUB),将一条I2C总线扩展成若干条I2C总线,从而将器件地址冲突的I2C器件划分到不同的I2C总线。
现有技术扩展I2C总线的方法的缺点在于,在该方法中,首先必须采用额外的I2C总线驱动器件。并且,由于I2C总线信号SDA是双向信号,为了确定信号的方向,还需要采用复杂的模拟检测电路,用于检测驱动器件两侧的SDA信号管脚中哪一侧信号被驱动为低(I2C信号是低有效信号),从而将另一侧SDA信号设置为低。这种模拟检测电路使得器件成本较大,并且采用额外的器件将增加PCB布局、布线的面积,这对成本和PCB面积敏感的设备设计来说具有明显的缺陷。
发明内容
本发明所要解决的技术问题是提供一种扩展I2C总线的方法及I2C总线扩展装置,用以将一级I2C总线扩展为多条I2C总线。
为解决上述技术问题,本发明提供方案如下:
一种I2C总线扩展装置,将主设备处的一级I2C总线扩展为多条二级I2C总线,该装置包括:
时钟扩展模块,用于将一级I2C总线中的串行时钟线SCL信号扩展成多个SCL信号后,分发至各二级I2C总线的SCL上;
方向控制模块,用于根据被选通的一、二级I2C总线上的当前操作状态,确定SDA信号的方向;
数据控制模块,用于根据主设备发出的选择信号,选通一级I2C总线的串行数据线SDA与其中一条二级I2C总线的SDA的连接,还用于根据方向控制模块确定的SDA信号方向设置SDA信号的方向。
本发明所述的装置,其中,
所述方向控制模块,进一步用于将所述确定的SDA信号方向携带在方向控制信号中发送给所述数据控制模块;
所述数据控制模块,进一步用于根据所述方向控制模块发送的方向控制信号设置SDA信号的方向。
本发明所述的装置,其中,所述方向控制模块,具体根据已选通的一、二级I2C总线的开始、停止、设备地址、字地址、读操作、写操作、数据读写以及响应状态,确定SDA信号方向。
本发明所述的装置,其中,所述方向控制模块,在写操作过程的响应时刻,确定SDA信号方向为从设备到主设备方向,在写操作过程的其他状态中确定SDA信号方向为主设备到从设备方向;在读操作过程中的响应时刻和读数据期间,确定SDA信号方向为从设备到主设备方向,在写操作过程的其他状态确定SDA信号为主设备到从设备方向。
本发明所述的装置,其中,所述方向控制模块具体包括:
开始判断模块,用于判断被选通的一、二级I2C总线的当前状态是否为开始状态,并向读写判断模块和响应判断模块输出开始状态信号,并在当前状态为开始状态时,在开始状态信号上输出一个负脉冲;
结束判断模块,用于判断被选通的一、二级I2C总线的当前状态是否为结束状态,并向方向判断模块输出停止状态信号,并在当前状态为结束状态时,在停止状态信号上输出一个负脉冲;
读写判断模块,用于根据开始状态后SDA信号第8比特的值,判断被选通的一、二级I2C总线的当前操作是写操作还是读操作,并向方向控制模块发送读写信号,并在当前操作为写操作时,将所述读写信号置0,在当前操作为读操作时,将所述读写信号置1,并在保持一个SCL信号周期后重新置0;
响应判断模块,用于根据接收到的开始状态信号、SCL信号和SDA信号,判断主设备是否收到有效的响应信号,并向所述方向控制模块发送响应状态信号,并在主设备收到无效的响应信号时,将所述响应状态信号置1,并在保持一个SCL信号周期后重新置0;
方向判断模块,用于根据接收到的停止状态信号、读写信号、响应状态信号和SCL信号,判断被选通的一、二级I2C总线的当前操作状态,输出用于控制被选通的一、二级I2C总线之间的SDA信号方向的方向控制信号。
本发明所述的装置,其中,所述方向判断模块,进一步用于设置方向控制信号初始值为0;
设置一第三计数器,从开始状态开始对SCL信号下降沿触发计数,如果读写信号一直为0,当第三计数器计到9时,将方向控制信号置1,并在保持一个SCL时间周期后重新置0,并在下一个计数触发时将第二计数器复位为1后继续计数并重复上述操作,直到出现停止状态;如果在第三计数器计数期间读写信号变为1,则将所述方向控制信号置为1,直到检测到无效的响应信号时,将所述方向控制信号置0。
本发明所述的装置,其中,所述时钟扩展模块、方向控制模块和数据控制模块通过复杂可编程逻辑器件CPLD或现场可编程逻辑器件FPGA实现。
一种扩展I2C总线的方法,将主设备的一级I2C总线扩展为多条二级I2C总线,包括:
步骤A,将主设备的一级I2C总线中的SCL信号发送至各二级I2C总线的SCL上;
步骤B,主设备确定当前需要选通的二级I2C总线,选通一级I2C总线的SDA与所述需要连通的二级I2C总线的SDA的连接;
步骤C,根据被选通的一、二级I2C总线上的当前操作状态,设置SDA信号方向,进行I2C总线的读写操作。
本发明所述的方法,其中,所述步骤C具体包括:
步骤C1,设置一第一计数器,从所述被选通的一、二级I2C总线的开始状态开始对SCL信号上升沿触发计数,在计数到8时,如果当前SDA信号的值为0,则判断I2C总线处于写操作过程中,如果当前SDA信号的值为1,则判断I2C总线处于读操作过程中;
步骤C2,设置一第二计数器,从所述被选通的一、二级I2C总线的开始状态开始对SCL信号上升沿触发计数,当计数到9后在下一个计数触发时将第二计数器复位为1并继续计数;同时,在计数到9时,如果当前SDA信号的值为0,则判断当前响应信号有效,否则,判断当前响应信号无效;
步骤C3,设置SDA信号的初始方向为主设备到从设备;并设置一第三计数器,从所述被选通的一、二级I2C总线的开始状态开始对SCL信号下降沿触发计数,如果所述被选通的一、二级I2C总线当前处于写操作过程中,则在第三计数器计到9时,将SDA信号方向设置为从设备到主设备,并在保持一个SCL周期后将SDA信号方向恢复为初始方向,并在下一个计数触发时将第三计数器复位为1后继续计数,直到出现停止状态;如果所述被选通的一、二级I2C总线当前处于读操作过程中,则设置SDA信号方向为从设备到主设备,直到出现当前响应信号无效后,将SDA信号方向恢复为初始方向。
从以上所述可以看出,本发明提供的扩展I2C总线的方法及I2C总线扩展装置,将一级I2C总线扩展为多条二级I2C总线,并根据I2C总线的当前操作状态设置已选通的一、二级I2C总线之间的SDA信号方向,从而实现了I2C总线的扩展。本发明无需使用模拟检测电路,并且,本发明所需硬件资源较少,可以利用大多数设备中已有的可编程器件资源实现本发明,从而能降低设备成本,节约了PCB布局、布线的空间,这对于成本和PCB面积敏感的设备设计尤其有利。
附图说明
图1为本发明实施例所述I2C总线扩展装置应用示意图;
图2为I2C总线开始、停止状态的示意图;
图3为I2C总线写操作过程中的SDA的时序图;
图4为I2C总线读操作过程中的SDA的时序图;
图5为本发明实施例中方向控制模块的原理框图;
图6为本发明实施例中写操作过程中方向控制模块中的信号关系图;
图7为本发明实施例中读操作过程中方向控制模块中的信号关系图。
具体实施方式
本发明提供了一种扩展I2C总线的方法和I2C总线扩展装置,通过可编程器件扩展I2C总线,以下结合附图通过具体实施例对本发明做详细的说明。
请参照图1所示,为本发明实施例所述I2C总线扩展装置应用示意图,其中主设备到I2C总线扩展装置的I2C总线称为一级I2C总线,I2C总线扩展装置到从设备的I2C总线称为二级I2C总线。图1中通过I2C总线扩展装置将主设备的一条I2C总线(一级I2C总线)扩展为两条I2C总线(二级I2C总线1和2),在二级I2C总线上挂接多个从设备,以实现I2C总线的扩展。这里,可以根据实际需要,选择合适的二级I2C总线的数量。
图1中,所述I2C总线扩展装置具体包括时钟扩展模块、数据扩展模块和方向控制模块,以下分别说明各模块的具体功能。
时钟扩展模块,用于将一级I2C总线中的SCL信号扩展成多个SCL信号后,分发至各二级I2C总线的SCL上。由于SCL信号是由主设备发送至从设备的单向信号,因此,这里只需将主设备发出的SCL信号扩展成多路后再分发至各从设备。
数据控制模块,用于根据主设备发出的选择信号,选通一级I2C总线的SDA(主设备的SDA)与其中一条二级I2C总线的SDA的连接,并根据方向控制模块发送的方向控制信号,设置所述选通的一、二级I2C总线之间的SDA信号方向。例如,在图1中,由于二级I2C总线只有2条,因此,只需要1条选择信号。例如,当选择信号为0时,选通其中一条二级I2C总线的SDA与主设备的SDA连通,而当选择信号为1时,则选择另外一条二级I2C总线的SDA。相应的,当二级I2C总线的数量增加时,可以通过增加选择信号的数量,使得各条二级I2C总线能分别对应选择信号不同的值,以实现通过选择信号能够分别选择所有的二级I2C总线的SDA。
方向控制模块,用于根据被选通的一、二级I2C总线上的当前操作状态,确定方向控制信号并发送至数据控制模块,用于控制上述已连通的一、二级I2C总线之间的SDA信号方向。这里,所述操作状态包括开始(start)、停止(stop)、设备地址(device address)、字地址(word address)、读操作(READ)、写操作(WRITE)、数据读写(DATA)和响应(ACK)等状态。由于SDA信号是双向信号,其方向与当前操作状态相关,因此,本发明根据总线上的当前操作状态,控制被选通的一级I2C总线与二级I2C总线之间的SDA信号方向。
以下说明所述方法控制模块的具体实现:
为了更好的理解本发明,首先介绍I2C总线标准读、写操作的时序。请参照图2,为I2C总线开始(start)、停止(stop)状态的示意图,由图2可以看出,当SCL信号为高电平,并且SDA信号出现下降沿时,I2C总线当前状态为开始状态;当SCL信号为高电平,并且SDA信号出现上升沿时,I2C总线当前状态为结束状态。请再参照图3和图4,分别为I2C总线写操作和读操作过程中的SDA的时序图。其中,在开始(start)、停止(stop)、设备地址(deviceaddress)、字地址(word address)和读/写(R/W)状态,SDA上均为主设备向从设备发送数据,而在响应(ACK)状态为从设备向主设备发送响应数据。并且,在写操作过程中,SDA上的数据(DATA)方向为主设备到从设备,读操作过程中,SDA上的数据(DATA)方向为从设备到主设备。由此可知,在写操作过程中只有ACK时刻,SDA的方向为从设备到主设备方向,其他时候都是主设备到从设备方向;在读操作过程中,ACK时刻和读数据期间,SDA的方向为从设备到主设备方向,其他时候都是主设备到从设备方向。
请参照图5所示,为本发明实施例中方向控制模块的原理框图,图6和图7分别为本发明实施例中写操作和读操作过程中方向控制模块中的信号关系图。图5中,所述方向控制模块具体包括开始判断模块、结束判断模块、读写判断模块、响应判断模块和方向判断模块,其中,
所述开始判断模块,用于判断被选通的一、二级I2C总线的当前状态是否为开始状态,并向读写判断模块和响应判断模块输出开始状态信号(S_START),并在当前状态为开始状态时,在开始状态信号上输出一个负脉冲(持续时间可为1us)。这里,开始判断模块具体是根据I2C总线的SCL和SDA信号,在SCL信号为高电平,并且SDA信号出现下降沿时,判断I2C总线当前状态为开始状态。
所述结束判断模块,用于判断被选通的一、二级I2C总线的当前状态是否为结束状态,并向方向判断模块输出停止状态信号(S_STOP),并在当前状态为结束状态时,在停止状态信号上输出一个负脉冲(持续时间可为1us)的停止状态信号(S_STOP)。这里,结束判断模块具体是根据I2C总线的SCL和SDA信号,在SCL信号为高电平,并且SDA信号出现上升沿时,判断I2C总线当前状态为结束状态。
所述读写判断模块,用于根据开始状态后SDA的第8比特的值,判断被选通的一、二级I2C总线的当前操作是写操作(WRITE)还是读操作(READ),并向方向控制模块发送读写信号(R/W),并在当前操作为写操作时,将读写信号(R/W)置0,在当前操作为读操作时,将读写信号置1,并在保持一个SCL信号周期后重新置0。这里,读写判断模块具体是根据SCL、SDA信号和开始状态信号,判断当前操作状态:由于读写状态是由SDA信号在开始状态之后第8位的值决定,当为1表示读操作,0表示写操作,因此,设置读写信号初始值为0,设置一第一计数器(CNT1),从开始状态开始对SCL信号上升沿触发计数(START状态时第一计数器计数值为0),当第一计数器计到8时,判断当前SDA信号的值,从而确定读写信号的值。当CNT1计到8时,若SDA信号为0,则R/W为0不变,若SDA信号为1,则将R/W置为1,并保持一个SCL周期的时间。请参照图6和图7中R/W信号的时序图(图6中s1标注处、图7中s1、s2标注处,其中,s1处R/W为0,s2处将R/W置1并保持一个SCL周期)。
所述响应判断模块,用于根据接收到的开始状态信号、SCL信号和SDA信号,判断主设备是否收到有效的响应(ACK)信号,并向所述方向控制模块发送响应状态信号(ACK_ACT),并在主设备收到无效的响应信号时,将响应状态信号置1,在保持一个SCL信号周期后重新置0。这里,响应判断模块具体是根据SCL、SDA信号和开始状态信号,判断主设备是否收到有效的响应信号:设置响应状态信号初始值为0,同时设置一第二计数器(CNT2),用于从START状态开始对SCL信号上升沿触发计数(START状态时第二计数器计数值为0),当第二计数器计到9时,判断当前SDA信号的值(如果SDA为低电平,则响应信号有效,否则无效,),从而确定ACK信号是否有效,并在下一个计数触发时将第二计数器复位为1后继续计数。(图6中s3标注处为第二计数器CNT2计到9时,判断ACK信号无效,从而将ACK_ACT信号置1并保持一个SCL周期)。
所述方向判断模块,用于根据接收到的停止状态信号、读写信号、响应状态信号和SCL信号,判断被选通的一、二级I2C总线的当前操作状态,输出用于控制被选通的一、二级I2C总线之间的SDA信号方向的方向控制信号(DIR)。当DIR信号为低电平(0)时,SDA信号方向为主设备到从设备,否则,SDA信号方向为从设备到主设备。这里,具体是根据读写信号R/W信号、SCL信号、响应状态信号ACK_ACT和停止状态信号S_STOP,判断I2C总线的当前操作状态:设置方向控制信号初始值为0,设置一第三计数器,从START状态开始对SCL信号下降沿触发计数(START状态时第三计数器计数值为0),如果读写信号R/W信号一直为0,当第三计数器计到9时,将DIR信号置1,并在保持一个SCL时间周期后重新置0,并在下一个计数触发时将第三计数器复位为1后继续计数(计到9便执行相应操作),直到出现停止状态(S_STOP上出现负脉冲信号);如果在第三计数器计数期间R/W信号变为1,则将DIR置为1,直到检测到无效的响应信号(响应状态信号ACK_ACT为1)时,将DIR置0。并且。在第三计数器计数过程中,一旦出现响应状态信号ACK_ACT为1,便将DIR信号置0。(请参见图5、图6中DIR信号时序图,其中,s3处为无效响应信号,ACK_ACT信号置1。)
以上说明了本发明是如何扩展I2C总线的,并详细说明了SDA信号方向判断的实现。本发明将主设备的一条I2C总线扩展成多条二级I2C总线用来挂接I2C从设备,主设备通过选择信号选择所需连通的二级I2C总线,解决了I2C从设备地址冲突的问题。需要指出的是,在现有的大多数系统中都具有可编程的逻辑器件,如复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD)、现场可编程逻辑器件(Field Programmable Gate Array,FPGA)等,因此可以通过利用设备系统中已有的可编程器件资源,实现所述I2C总线扩展装置,以减少硬件器件,降低设备成本,节约PCB布局、布线空间。
基于上述I2C总线扩展装置,本发明还提供了一种扩展I2C总线的方法,用于将主设备的一级I2C总线扩展为多条二级I2C总线,该方法包括以下步骤:
步骤11,将主设备的一级I2C总线中的SCL信号发送至各二级I2C总线的SCL上;
步骤12,主设备确定当前需要选通的二级I2C总线,选通一级I2C总线的SDA与所述需要连通的二级I2C总线的SDA的连接;
步骤13,根据被选通通的一、二级I2C总线上的当前操作状态,设置SDA信号方向,进行I2C总线的读写操作。这里,所述操作状态包括开始(start)、停止(stop)、设备地址(device address)、字地址(word address)、读操作(READ)、写操作(WRITE)和响应(ACK)等状态。所述根据当前操作状态设置SDA信号方向是,在写操作过程中只有ACK时刻,SDA的方向为从设备到主设备方向,其他时候都是主设备到从设备方向;在读操作过程中,ACK时刻和读数据期间,SDA的方向为从设备到主设备方向,其他时候都是主设备到从设备方向。
上述步骤13又具体包括以下步骤:
步骤131,设置一第一计数器,从所述被选通的一、二级I2C总线的开始状态开始对SCL信号上升沿触发计数,在计数到8时,如果当前SDA信号的值为0,则判断I2C总线处于写操作过程中,如果当前SDA信号的值为1,则判断I2C总线处于读操作过程中;
步骤132,设置一第二计数器,从所述被选通的一、二级I2C总线的开始状态开始对SCL信号上升沿触发计数;当计数到9后,在下一个计数触发时将第二计数器复位为1并继续计数;同时,在计数到9时,如果当前SDA信号的值为0,则判断当前响应信号有效,否则,判断当前响应信号无效;
步骤133,设置SDA信号的初始方向为主设备到从设备;并设置一第三计数器,从所述被选通的一、二级I2C总线的开始状态开始对SCL信号下降沿触发计数,如果所述被选通的一、二级I2C总线当前处于写操作过程中,则在第三计数器计到9时,将SDA信号方向设置为从设备到主设备,并在保持一个SCL周期后将SDA信号方向恢复为初始方向,并在下一个计数触发时将第三计数器复位为1后继续计数,直到出现停止状态;如果所述被选通的一、二级I2C总线当前处于读操作过程中,则设置SDA信号方向为从设备到主设备,直到出现当前响应信号无效后,将SDA信号方向恢复为初始方向。
综上所述,本发明实施例所述扩展I2C总线的方法及I2C总线扩展装置,将一级I2C总线扩展为多条二级I2C总线,并根据I2C总线的当前操作状态设置已选通的一、二级I2C总线之间的SDA信号方向,从而实现了I2C总线的扩展。
本发明所述的扩展I2C总线的方法及I2C总线扩展装置,并不仅仅限于说明书和实施方式中所列运用,它完全可以被适用于各种适合本发明之领域,对于熟悉本领域的人员而言可容易地实现另外的优点和进行修改,因此在不背离权利要求及等同范围所限定的一般概念的精神和范围的情况下,本发明并不限于特定的细节、代表性的设备和这里示出与描述的图示示例。
Claims (9)
1.一种I2C总线扩展装置,将主设备处的一级I2C总线扩展为多条二级I2C总线,其特征在于,该装置包括:
时钟扩展模块,用于将一级I2C总线中的串行时钟线SCL信号扩展成多个SCL信号后,分发至各二级I2C总线的SCL上;
方向控制模块,用于根据被选通的一、二级I2C总线上的当前操作状态,确定SDA信号的方向;
数据控制模块,用于根据主设备发出的选择信号,选通一级I2C总线的串行数据线SDA与其中一条二级I2C总线的SDA的连接,还用于根据方向控制模块确定的SDA信号方向设置SDA信号的方向。
2.如权利要求1所述的装置,其特征在于,
所述方向控制模块,进一步用于将所述确定的SDA信号方向携带在方向控制信号中发送给所述数据控制模块;
所述数据控制模块,进一步用于根据所述方向控制模块发送的方向控制信号设置SDA信号的方向。
3.如权利要求1所述的装置,其特征在于,所述方向控制模块,具体根据已选通的一、二级I2C总线的开始、停止、设备地址、字地址、读操作、写操作、数据读写以及响应状态,确定SDA信号方向。
4.如权利要求3所述的装置,其特征在于,所述方向控制模块,在写操作过程的响应时刻,确定SDA信号方向为从设备到主设备方向,在写操作过程的其他状态中确定SDA信号方向为主设备到从设备方向;在读操作过程中的响应时刻和读数据期间,确定SDA信号方向为从设备到主设备方向,在写操作过程的其他状态确定SDA信号为主设备到从设备方向。
5.如权利要求4所述的装置,其特征在于,所述方向控制模块具体包括:
开始判断模块,用于判断被选通的一、二级I2C总线的当前状态是否为开始状态,并向读写判断模块和响应判断模块输出开始状态信号,并在当前状态为开始状态时,在开始状态信号上输出一个负脉冲;
结束判断模块,用于判断被选通的一、二级I2C总线的当前状态是否为结束状态,并向方向判断模块输出停止状态信号,并在当前状态为结束状态时,在停止状态信号上输出一个负脉冲;
读写判断模块,用于根据开始状态后SDA信号第8比特的值,判断被选通的一、二级I2C总线的当前操作是写操作还是读操作,并向方向控制模块发送读写信号,并在当前操作为写操作时,将所述读写信号置0,在当前操作为读操作时,将所述读写信号置1,并在保持一个SCL信号周期后重新置0;
响应判断模块,用于根据接收到的开始状态信号、SCL信号和SDA信号,判断主设备是否收到有效的响应信号,并向所述方向控制模块发送响应状态信号,并在主设备收到无效的响应信号时,将所述响应状态信号置1,并在保持一个SCL信号周期后重新置0;
方向判断模块,用于根据接收到的停止状态信号、读写信号、响应状态信号和SCL信号,判断被选通的一、二级I2C总线的当前操作状态,输出用于控制被选通的一、二级I2C总线之间的SDA信号方向的方向控制信号。
6.如权利要求5所述的装置,其特征在于,所述方向判断模块,进一步用于设置方向控制信号初始值为0;
设置一第三计数器,从开始状态开始对SCL信号下降沿触发计数,如果读写信号一直为0,当第三计数器计到9时,将方向控制信号置1,并在保持一个SCL时间周期后重新置0,并在下一个计数触发时将第二计数器复位为1后继续计数并重复上述操作,直到出现停止状态;如果在第三计数器计数期间读写信号变为1,则将所述方向控制信号置为1,直到检测到无效的响应信号时,将所述方向控制信号置0。
7.如权利要求1所述的装置,其特征在于,所述时钟扩展模块、方向控制模块和数据控制模块通过复杂可编程逻辑器件CPLD或现场可编程逻辑器件FPGA实现。
8.一种扩展I2C总线的方法,将主设备的一级I2C总线扩展为多条二级I2C总线,其特征在于包括:
步骤A,将主设备的一级I2C总线中的SCL信号发送至各二级I2C总线的SCL上;
步骤B,主设备确定当前需要选通的二级I2C总线,选通一级I2C总线的SDA与所述需要连通的二级I2C总线的SDA的连接;
步骤C,根据被选通的一、二级I2C总线上的当前操作状态,设置SDA信号方向,进行I2C总线的读写操作。
9.如权利要求8所述的方法,其特征在于,所述步骤C具体包括:
步骤C1,设置一第一计数器,从所述被选通的一、二级I2C总线的开始状态开始对SCL信号上升沿触发计数,在计数到8时,如果当前SDA信号的值为0,则判断I2C总线处于写操作过程中,如果当前SDA信号的值为1,则判断I2C总线处于读操作过程中;
步骤C2,设置一第二计数器,从所述被选通的一、二级I2C总线的开始状态开始对SCL信号上升沿触发计数,当计数到9后在下一个计数触发时将第二计数器复位为1并继续计数;同时,在计数到9时,如果当前SDA信号的值为0,则判断当前响应信号有效,否则,判断当前响应信号无效;
步骤C3,设置SDA信号的初始方向为主设备到从设备;并设置一第三计数器,从所述被选通的一、二级I2C总线的开始状态开始对SCL信号下降沿触发计数,如果所述被选通的一、二级I2C总线当前处于写操作过程中,则在第三计数器计到9时,将SDA信号方向设置为从设备到主设备,并在保持一个SCL周期后将SDA信号方向恢复为初始方向,并在下一个计数触发时将第三计数器复位为1后继续计数,直到出现停止状态;如果所述被选通的一、二级I2C总线当前处于读操作过程中,则设置SDA信号方向为从设备到主设备,直到出现当前响应信号无效后,将SDA信号方向恢复为初始方向。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200710118808XA CN101324875B (zh) | 2007-06-11 | 2007-06-11 | 一种扩展i2c总线的方法及i2c总线扩展装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200710118808XA CN101324875B (zh) | 2007-06-11 | 2007-06-11 | 一种扩展i2c总线的方法及i2c总线扩展装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101324875A true CN101324875A (zh) | 2008-12-17 |
CN101324875B CN101324875B (zh) | 2011-06-01 |
Family
ID=40188419
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200710118808XA Active CN101324875B (zh) | 2007-06-11 | 2007-06-11 | 一种扩展i2c总线的方法及i2c总线扩展装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101324875B (zh) |
Cited By (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101763331A (zh) * | 2010-01-18 | 2010-06-30 | 中兴通讯股份有限公司 | 一种实现i2c总线控制的系统及方法 |
CN102012879A (zh) * | 2010-12-10 | 2011-04-13 | 上海申瑞电力科技股份有限公司 | 大容量数据采集装置及其数据传输方法 |
CN102073611A (zh) * | 2011-02-16 | 2011-05-25 | 东莞市泰斗微电子科技有限公司 | 一种i2c总线控制系统及方法 |
CN102081586A (zh) * | 2011-01-25 | 2011-06-01 | 鸿富锦精密工业(深圳)有限公司 | 多i2c插槽电路系统及传送i2c信号的方法 |
CN102163184A (zh) * | 2011-03-22 | 2011-08-24 | 中兴通讯股份有限公司 | 一种基于专用多芯片串行互连接口的主从传输系统及方法 |
CN102243619A (zh) * | 2011-06-23 | 2011-11-16 | 天津光电通信技术有限公司 | 一种基于fpga实现多路i2c总线端口扩展的方法 |
CN102023945B (zh) * | 2009-09-22 | 2012-03-28 | 鸿富锦精密工业(深圳)有限公司 | 基于串行外围设备接口总线的设备及其数据传输方法 |
CN101770443B (zh) * | 2009-01-07 | 2012-05-23 | 成都市华为赛门铁克科技有限公司 | 一种内部集成电路总线时序调节方法、相应装置及系统 |
CN102567267A (zh) * | 2010-12-31 | 2012-07-11 | 北京大唐高鸿数据网络技术有限公司 | Tdm总线扩展方法 |
CN103095855A (zh) * | 2011-10-27 | 2013-05-08 | 无锡力芯微电子股份有限公司 | I2c通信接口装置 |
CN103353854A (zh) * | 2013-06-26 | 2013-10-16 | 华为数字技术(苏州)有限公司 | 一种增加数据保持时间的方法和设备 |
CN103530249A (zh) * | 2012-07-06 | 2014-01-22 | 鸿富锦精密工业(深圳)有限公司 | 内部整合电路总线传输系统及其传输方法 |
CN104199796A (zh) * | 2014-09-18 | 2014-12-10 | 歌尔声学股份有限公司 | Iic通信方法以及实现iic通信的嵌入式系统 |
CN104809087A (zh) * | 2014-01-25 | 2015-07-29 | 鸿富锦精密工业(深圳)有限公司 | 电子装置系统的数据传输方法及电子装置系统 |
CN104820653A (zh) * | 2015-04-27 | 2015-08-05 | 无锡必创传感科技有限公司 | 一种数字总线系统及其从设备物理位置自动识别方法 |
CN104881382A (zh) * | 2015-06-15 | 2015-09-02 | 刘晓辉 | 一种主从设备连接装置及其地址识别方法 |
CN105095139A (zh) * | 2014-05-08 | 2015-11-25 | 中兴通讯股份有限公司 | 集成电路总线系统及其数据操作和传输方法 |
CN105279130A (zh) * | 2015-10-22 | 2016-01-27 | 北方工业大学 | 一种对同地址的多个i2c器件进行操作的方法 |
CN105957491A (zh) * | 2016-07-14 | 2016-09-21 | 深圳市华星光电技术有限公司 | I2c传输电路及显示装置 |
CN106020375A (zh) * | 2016-05-11 | 2016-10-12 | 浪潮电子信息产业股份有限公司 | 一种可扩展的连接器 |
CN106250336A (zh) * | 2016-07-19 | 2016-12-21 | 青岛海信电器股份有限公司 | 一种fpga及进行总线切换的方法和系统 |
CN107622032A (zh) * | 2017-08-18 | 2018-01-23 | 郑州云海信息技术有限公司 | 一种i2c总线的三线扩展方法及电路 |
CN109099959A (zh) * | 2018-06-20 | 2018-12-28 | 中国科学院电工研究所 | 一种数字传感器阵列的连接和数据读出方法 |
CN109446145A (zh) * | 2018-10-30 | 2019-03-08 | 郑州云海信息技术有限公司 | 一种服务器主板i2c通道扩展芯片、电路及控制方法 |
CN110659238A (zh) * | 2018-06-28 | 2020-01-07 | 鸿富锦精密电子(天津)有限公司 | 数据通信系统 |
CN110781119A (zh) * | 2019-10-22 | 2020-02-11 | 广东高云半导体科技股份有限公司 | 一种i2c总线扩展接口及其控制方法、片上系统 |
CN111339019A (zh) * | 2020-02-23 | 2020-06-26 | 苏州浪潮智能科技有限公司 | 一种通过cpld进行i2c总线扩展的方法和装置 |
CN111626010A (zh) * | 2020-04-24 | 2020-09-04 | 广西华南通信股份有限公司 | 一种硬件兼容通用型i2c控制器ip核设计的方法及装置 |
CN113032318A (zh) * | 2021-03-30 | 2021-06-25 | 纵目科技(上海)股份有限公司 | 一种基于平行总线的通讯系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4554657A (en) * | 1982-06-07 | 1985-11-19 | Ltv Aerospace And Defense Company | Multiplexed multiplex bus |
US6061756A (en) * | 1995-11-20 | 2000-05-09 | Advanced Micro Devices, Inc. | Computer system which performs intelligent byte slicing/data packing on a multi-byte wide bus |
CN2424494Y (zh) * | 2000-03-31 | 2001-03-21 | 上海华申智能卡应用系统有限公司 | 总线驱动的智能卡读写器 |
CN100353718C (zh) * | 2003-09-16 | 2007-12-05 | 华为技术有限公司 | 一种扩展i2c总线的系统及方法 |
-
2007
- 2007-06-11 CN CN200710118808XA patent/CN101324875B/zh active Active
Cited By (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101770443B (zh) * | 2009-01-07 | 2012-05-23 | 成都市华为赛门铁克科技有限公司 | 一种内部集成电路总线时序调节方法、相应装置及系统 |
CN102023945B (zh) * | 2009-09-22 | 2012-03-28 | 鸿富锦精密工业(深圳)有限公司 | 基于串行外围设备接口总线的设备及其数据传输方法 |
WO2011085595A1 (zh) * | 2010-01-18 | 2011-07-21 | 中兴通讯股份有限公司 | 一种实现i2c总线控制的系统及方法 |
EP2527988A4 (en) * | 2010-01-18 | 2013-07-10 | Zte Corp | METHOD AND SYSTEM FOR INTEGRATED INTERCONNECTED BUS CONTROL |
CN101763331A (zh) * | 2010-01-18 | 2010-06-30 | 中兴通讯股份有限公司 | 一种实现i2c总线控制的系统及方法 |
EP2527988A1 (en) * | 2010-01-18 | 2012-11-28 | ZTE Corporation | Method and system for controlling inter-integrated circuit bus |
CN101763331B (zh) * | 2010-01-18 | 2014-04-09 | 中兴通讯股份有限公司 | 一种实现i2c总线控制的系统及方法 |
CN102012879A (zh) * | 2010-12-10 | 2011-04-13 | 上海申瑞电力科技股份有限公司 | 大容量数据采集装置及其数据传输方法 |
CN102567267A (zh) * | 2010-12-31 | 2012-07-11 | 北京大唐高鸿数据网络技术有限公司 | Tdm总线扩展方法 |
CN102081586A (zh) * | 2011-01-25 | 2011-06-01 | 鸿富锦精密工业(深圳)有限公司 | 多i2c插槽电路系统及传送i2c信号的方法 |
CN102073611A (zh) * | 2011-02-16 | 2011-05-25 | 东莞市泰斗微电子科技有限公司 | 一种i2c总线控制系统及方法 |
CN102073611B (zh) * | 2011-02-16 | 2012-11-28 | 东莞市泰斗微电子科技有限公司 | 一种i2c总线控制系统及方法 |
CN102163184A (zh) * | 2011-03-22 | 2011-08-24 | 中兴通讯股份有限公司 | 一种基于专用多芯片串行互连接口的主从传输系统及方法 |
CN102243619A (zh) * | 2011-06-23 | 2011-11-16 | 天津光电通信技术有限公司 | 一种基于fpga实现多路i2c总线端口扩展的方法 |
CN103095855A (zh) * | 2011-10-27 | 2013-05-08 | 无锡力芯微电子股份有限公司 | I2c通信接口装置 |
CN103095855B (zh) * | 2011-10-27 | 2015-05-27 | 无锡力芯微电子股份有限公司 | I2c通信接口装置 |
CN103530249A (zh) * | 2012-07-06 | 2014-01-22 | 鸿富锦精密工业(深圳)有限公司 | 内部整合电路总线传输系统及其传输方法 |
CN103353854A (zh) * | 2013-06-26 | 2013-10-16 | 华为数字技术(苏州)有限公司 | 一种增加数据保持时间的方法和设备 |
CN104809087B (zh) * | 2014-01-25 | 2019-05-28 | 鸿富锦精密电子(天津)有限公司 | 电子装置系统的数据传输方法及电子装置系统 |
CN104809087A (zh) * | 2014-01-25 | 2015-07-29 | 鸿富锦精密工业(深圳)有限公司 | 电子装置系统的数据传输方法及电子装置系统 |
CN105095139A (zh) * | 2014-05-08 | 2015-11-25 | 中兴通讯股份有限公司 | 集成电路总线系统及其数据操作和传输方法 |
CN104199796A (zh) * | 2014-09-18 | 2014-12-10 | 歌尔声学股份有限公司 | Iic通信方法以及实现iic通信的嵌入式系统 |
CN104199796B (zh) * | 2014-09-18 | 2018-11-02 | 歌尔股份有限公司 | Iic通信方法以及实现iic通信的嵌入式系统 |
CN104820653B (zh) * | 2015-04-27 | 2017-11-21 | 无锡必创传感科技有限公司 | 一种数字总线系统及其从设备物理位置自动识别方法 |
CN104820653A (zh) * | 2015-04-27 | 2015-08-05 | 无锡必创传感科技有限公司 | 一种数字总线系统及其从设备物理位置自动识别方法 |
CN104881382A (zh) * | 2015-06-15 | 2015-09-02 | 刘晓辉 | 一种主从设备连接装置及其地址识别方法 |
CN105279130A (zh) * | 2015-10-22 | 2016-01-27 | 北方工业大学 | 一种对同地址的多个i2c器件进行操作的方法 |
CN106020375A (zh) * | 2016-05-11 | 2016-10-12 | 浪潮电子信息产业股份有限公司 | 一种可扩展的连接器 |
WO2018010412A1 (zh) * | 2016-07-14 | 2018-01-18 | 深圳市华星光电技术有限公司 | I2c传输电路及显示装置 |
US10467950B2 (en) | 2016-07-14 | 2019-11-05 | Shenzhen China Star Optoelectronics Technology Co., Ltd. | I2C transmission circuit and display device |
CN105957491A (zh) * | 2016-07-14 | 2016-09-21 | 深圳市华星光电技术有限公司 | I2c传输电路及显示装置 |
CN106250336A (zh) * | 2016-07-19 | 2016-12-21 | 青岛海信电器股份有限公司 | 一种fpga及进行总线切换的方法和系统 |
CN107622032A (zh) * | 2017-08-18 | 2018-01-23 | 郑州云海信息技术有限公司 | 一种i2c总线的三线扩展方法及电路 |
CN107622032B (zh) * | 2017-08-18 | 2020-11-27 | 苏州浪潮智能科技有限公司 | 一种i2c总线的三线扩展方法及电路 |
CN109099959A (zh) * | 2018-06-20 | 2018-12-28 | 中国科学院电工研究所 | 一种数字传感器阵列的连接和数据读出方法 |
CN109099959B (zh) * | 2018-06-20 | 2021-04-02 | 中国科学院电工研究所 | 一种数字传感器阵列的连接和数据读出方法 |
CN110659238A (zh) * | 2018-06-28 | 2020-01-07 | 鸿富锦精密电子(天津)有限公司 | 数据通信系统 |
CN109446145A (zh) * | 2018-10-30 | 2019-03-08 | 郑州云海信息技术有限公司 | 一种服务器主板i2c通道扩展芯片、电路及控制方法 |
CN109446145B (zh) * | 2018-10-30 | 2021-10-29 | 郑州云海信息技术有限公司 | 一种服务器主板i2c通道扩展芯片、电路及控制方法 |
CN110781119A (zh) * | 2019-10-22 | 2020-02-11 | 广东高云半导体科技股份有限公司 | 一种i2c总线扩展接口及其控制方法、片上系统 |
CN111339019A (zh) * | 2020-02-23 | 2020-06-26 | 苏州浪潮智能科技有限公司 | 一种通过cpld进行i2c总线扩展的方法和装置 |
CN111339019B (zh) * | 2020-02-23 | 2021-10-29 | 苏州浪潮智能科技有限公司 | 一种通过cpld进行i2c总线扩展的方法和装置 |
CN111626010A (zh) * | 2020-04-24 | 2020-09-04 | 广西华南通信股份有限公司 | 一种硬件兼容通用型i2c控制器ip核设计的方法及装置 |
CN111626010B (zh) * | 2020-04-24 | 2022-08-23 | 广西华南通信股份有限公司 | 一种硬件兼容通用型i2c控制器ip核设计的方法及装置 |
CN113032318A (zh) * | 2021-03-30 | 2021-06-25 | 纵目科技(上海)股份有限公司 | 一种基于平行总线的通讯系统 |
WO2022206028A1 (zh) * | 2021-03-30 | 2022-10-06 | 纵目科技(上海)股份有限公司 | 一种基于平行总线的通讯系统 |
Also Published As
Publication number | Publication date |
---|---|
CN101324875B (zh) | 2011-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101324875B (zh) | 一种扩展i2c总线的方法及i2c总线扩展装置 | |
US10169282B2 (en) | Bus serialization for devices without multi-device support | |
CN101911000B (zh) | 用于连接电子装置的控制总线 | |
CN101770443B (zh) | 一种内部集成电路总线时序调节方法、相应装置及系统 | |
US7171508B2 (en) | Dual port memory with asymmetric inputs and outputs, device, system and method | |
US6842806B2 (en) | Method and apparatus for interconnecting wired-AND buses | |
US7028209B2 (en) | I2C repeater with voltage translation | |
US6393576B1 (en) | Apparatus and method for communication between integrated circuit connected to each other by a single line | |
CN100382063C (zh) | 检测存储装置接口的方法及设备 | |
US7269088B2 (en) | Identical chips with different operations in a system | |
US6339806B1 (en) | Primary bus to secondary bus multiplexing for I2C and other serial buses | |
JP2009535677A (ja) | I2cクロックの生成方法及びシステム | |
EP1963977B1 (en) | Memory systems with memory chips down and up | |
CN1447973A (zh) | 高速存储器总线上的同步写数据 | |
CN110597745A (zh) | 一种交换机系统多主多从i2c通信实现方法和装置 | |
JP2005234932A (ja) | マトリックス状バス接続システムとその低電力方法 | |
US5448699A (en) | Apparatus with leading edge delay circuit for selectively sending a delayed substitute version of a signal transmitted between an expansion card and a system bus | |
US20020069303A1 (en) | Universal controller expansion module system, method & apparatus | |
US6697903B2 (en) | Communication interface system, method and apparatus | |
US5247640A (en) | Dual access control system including plural magnetic disk control units and contention control circuitry | |
US5799161A (en) | Method and apparatus for concurrent data routing | |
CN112445744B (zh) | I2c通信 | |
CN101739367A (zh) | 多类总线存储控制的方法与装置 | |
EP0382342B1 (en) | Computer system DMA transfer | |
US20020103956A1 (en) | Universal controller expansion module system, method & apparatus |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |