动态分配集成电路总线上的设备地址的系统及方法

文档序号:6427195阅读:217来源:国知局
专利名称:动态分配集成电路总线上的设备地址的系统及方法
技术领域
本发明涉及一种集成电路总线地址分配系统及方法,特别涉及一种I2C总线设备的地址动态分配系统及方法。
背景技术
飞利浦的I2C(Inter Integrated Circuit,I2C)总线因为具有即插即用双线接口的简单性,而且其低实施成本,已经在众多电子应用中成为控制、维护和配置的业界标准串行总线。
连接在I2C总线上的I2C设备需通过各自的I2C地址(I2C SlaveAddress)才能访问。传统的I2C设备的地址设置,是通过每一个I2C设备的电路板上的硬件预先设定。I2C总线限定了一个I2C设备只可以设定一个I2C地址,且I2C地址的设定范围为00-FF。例如,大多数I2C总线可以访问的电子可擦写可程序化只读内存(Electrically ErasableProgrammable Read Only Memory,EEROM)只具有三个橡皮接脚(Strapping Pin),这样限制了这些EEROM的I2C地址设定范围为A0-AF(只可以是偶数地址),因此最多只能够有8个EEROM设备连接到一条I2C总线。
因此,有必要提供一种采用动态方式设定I2C设备地址的方法,从而可以扩充I2C总线的容量。

发明内容本发明主要目的在于提供一种动态分配集成电路总线(例如I2C总线)上的设备地址的系统,其可以扩充集成电路总线的容量,使得集成电路总线上可以连接更多的设备。
本发明另一目的在于提供一种动态分配集成电路总线(例如I2C总线)上的设备地址的方法,其可以扩充集成电路总线的容量,使得集成电路总线上可以连接更多的设备。
为实现本发明的主要目的,本发明提供的技术方案如下一种动态分配集成电路总线上的设备地址的系统,包括一总线主控处理单元及多个连接在所述的集成电路总线上的设备,每一设备包括一处理单元。其中所述的总线主控处理单元用于产生多个各不相同的新地址;向上述集成电路总线上发送命令,将产生的新地址分配给当前地址为一预定地址的设备。其中连接在上述集成电路总线上的一第一设备的处理单元逐个执行如下作业将各自所属设备的地址设定为所述的预定地址;从上述集成电路总线上接收将一新地址分配给当前地址为上述预定地址的设备的命令,并根据所接收到的命令将该设备的地址设定为该新地址。
其中所述的集成电路总线为I2C总线。
其中连接在上述集成电路总线上的各设备的处理单元还执行如下作业设定各自所属设备为地址可设定状态或者设定为不可设定状态。
为实现本发明的另一目的,本发明提供的技术方案如下一种动态分配集成电路总线上的设备地址的方法,其改良在于,该方法包括如下步骤设定连接在所述的集成电路总线上的所有设备为地址不可设定状态;一总线主控处理单元向上述集成电路总线不断发送地址分配命令将地址为一预定地址的设备的地址设定为一新地址;设定连接在所述的集成电路总线上的一第一设备为地址可设定状态;设定所述第一设备的地址为一预定地址;从上述集成电路总线接收并执行一地址分配命令设定所述第一设备的地址为一第一地址,其中该第一地址不同于所述的预定地址;设定连接在所述的集成电路总线上的一第二设备为地址可设定状态;设定所述第二设备的地址为所述的预定地址;从上述集成电路总线接收并执行一地址分配命令设定所述第二设备的地址为一第二地址,其中该第二地址不同于所述的预定地址,且该第二地址不同于所述的第一地址。
其中所述的集成电路总线为I2C总线。
该方法还可以包括设定连接在所述的集成电路总线上的一其它设备为地址可设定状态;设定该其它设备的地址为所述的预定地址;从上述集成电路总线接收并执行一地址分配命令将地址为上述预定地址的设备的地址设定为一新地址。
利用本发明提供的动态分配集成电路总线(例如I2C总线)上的设备地址的系统及方法,可以采用动态方式分配更多的地址,从而可以扩充集成电路总线的容量,使得集成电路总线上可以连接更多的设备。

图1是本发明I2C总线地址动态分配系统的硬件架构图。
图2是I2C设备的处理单元执行本发明的方法流程图。
图3是I2C总线主控处理单元执行本发明的方法流程图。
具体实施方式如图1所示,是本发明I2C总线地址动态分配系统的硬件架构图。本发明动态分配I2C(Inter Integrated Circuit,I2C)总线上的设备地址的系统100包括一I2C总线驱动装置110(I2C Bus Driver)以及多个I2C设备(I2C Slave Device)(130,140,150)以串联方式逐个连接在一I2C总线120上。
所述的I2C总线驱动装置110包括一总线主控处理单元111,该总线主控处理单元111用于产生多个各不相同的新地址;向上述I2C总线上发送命令将产生的新地址分配给当前地址为一预定地址S的I2C设备。
每一I2C设备包括一处理单元(131,141,151),所述的处理单元(131,141,151)将逐个执行如下作业将各自所属设备的地址设定为所述的预定地址;从上述I2C总线120上接收将一新地址分配给当前地址为上述预定地址的设备的命令,并根据所接收到的命令将该设备的地址设定为该新地址。在本发明实施例中,首先将由连接在所述I2C总线120上的第一I2C设备130的处理单元131执行上述作业,当处理单元131执行完成上述所有作业之后第二I2C设备140才能执行,当处理单元141执行完成上述所有作业之后第三I2C设备150才能执行。
本发明的多个I2C设备之间还通过一可传输电讯号的电气连接线160(可以是普通电线,也可以是可传输电讯号的其它传输线)进行连接,因此在前一I2C设备的输出端与在后一I2C设备的输入端的电位相同,例如,I2C设备130的输出端a与I2C设备140的输入端b电位相同,I2C设备140的输出端b与I2C设备150的输入端c电位相同。在本发明实施例中,所述的总线主控处理单元111将发出命令逐个为连接在I2C总线120上的I2C设备(130,140,150)分配不相同的新地址。
在被分配地址之前,所有I2C设备的处理单元(131,141,151)控制电源电压Vcc在各自输出端输出低电位,然后不断侦测输入端是否为高电位。如果I2C设备的处理单元未侦测到输入端为高电位,该I2C设备处于地址不可设定状态;一旦侦测到输入端为高电位,则I2C设备处于地址可设定状态,此时I2C设备的处理单元先将地址设定为一预定地址S,等待从I2C总线120接收到将地址设定为一新地址的命令,并按照命令将该I2C设备的地址设定为一新地址。设定新地址之后,处理单元控制Vcc将输出端输出高电位。
对于连接在I2C驱动装置110之后的第一I2C设备130,Vcc控制其输入端a保持高电位,因此I2C设备130将先于其它I2C设备(140,150)被分配地址。处理单元131首先控制电源电压Vcc将其输出端a输出低电位,侦测到输入端a为高电位之后,将I2C设备130地址设定为所述的预定地址S。
所述的总线主控处理单元111向I2C总线上发送地址分配命令将目前地址为S的I2C设备的地址设定为一第一新地址X1,其中X1与S不相同。
因为I2C设备130目前地址为S,所以其处理单元131可以从I2C总线接收到命令,并将I2C设备130地址设定为X1,之后将其输出端a输出高电位。
因为I2C设备140的输入端b与I2C设备130的输出端a具有相同电位,因此,此时输入端b为高电位。I2C设备140的处理单元141侦测到输入端b为高电位后,将I2C设备140的地址设定为所述的预定地址S。因为I2C设备140目前地址为S,所以其处理单元141可以从I2C总线接收到地址分配命令,并将I2C设备140的地址设定为一第二新地址X2。其中X1,X2及S各不相同。重复以上步骤可将I2C设备150的地址设定为一与X1,X2及S各不相同的新地址。
本发明实施例,只有三个I2C设备(130,140,150)连接在I2C总线120上,因此总线主控处理单元111仅仅对该三个I2C设备动态分配各不相同的地址。在其它实施例中,连接在I2C总线120上的I2C设备的数量可以增加。
以下结合图2及图3,详细介绍总线主控处理单元111对连接在I2C总线上的I2C设备(130,140,150)动态分配各不相同地址的方法及详细流程。
如图2所示,是I2C设备的处理单元执行本发明的方法流程图。首先,连接在I2C总线120上的所有I2C设备(130,140,150)的处理单元(131,141,151),各自控制其Vcc在输出端(输出端a,输出端b,输出端c)输出低电位(步骤S210)。各I2C设备的处理单元各自完成上述操作之后,延迟一段时间,例如10毫秒(步骤S220)。等待10毫秒后可以确定所有I2C设备完成步骤S210的操作。然后,所有处理单元(131,141,151)将不断侦测各自输入端是否为高电位(步骤S230)。一旦其中某一处理单元侦测到其输入端为高电位,则该处理单元将地址设定为一预定地址S(步骤S240)。
在本发明实施例中,对于连接在I2C驱动装置110之后的第一I2C设备130,Vcc控制其输入端a保持高电位,因此I2C设备130将先于其它I2C设备(140,150)被分配地址。
因此,I2C设备130的处理单元131首先侦测到其输入端a为高电位,将I2C设备130的地址设定为所述的预定地址S(步骤S240)。其它处理单元(141,151)仍在不断侦测其输入端(输入端b,输入端c)是否为高电压(步骤S230)。
经过上述一系列步骤之后,I2C设备130的当前地址为S,其处理单元131等待从I2C总线120上接收总线主控处理单元111发出的地址分配命令将地址为S的设备的地址设定为X。
对于总线主控处理单元111向I2C总线120上发送地址动态分配命令的过程,如图3所示,是I2C总线主控处理单元执行本发明的方法流程图。总线主控处理单元111分配地址之前,首先延迟等待一段足够长的时间,该延迟的时间应该长于之前第一I2C设备130完成步骤S210之后所延迟的时间10毫秒,例如20毫秒(步骤S310)。初始化所有在动态分配地址时需要用到的参数,例如设定连接在I2C总线120上的I2C设备总数N,计划分配给第一I2C设备的地址A,以及设定一累加因子B=0(步骤S320),该累加因子B表示总线主控处理单元111已经发出地址分配命令的数量,也就是已经被分配到地址的I2C设备的数量。本发明实施例中,设定N=3,A=10h。由于本发明的预定地址S可为一任意值,在实施例中设定上述的预定地址S=60h。
完成参数初始化设定之后,总线主控处理单元111判断B是否小于N(步骤S330)。由于此时刚完成初始化设定N=3且B=0,因此直接进入下一步骤令X=A+B,则此时X=10h(步骤S340)。随后,总线主控处理单元111向I2C总线120上发送命令将地址为S的设备地址设定为X(步骤S350)。因为此时地址为S的设备是连接在I2C驱动装置110之后的第一I2C设备130,其此时地址为S=60h。
之后,I2C设备130的处理单元131从I2C总线120接收到命令(步骤S250),将I2C设备130的地址设定为X=10h(步骤S260),最后控制其Vcc将其输出端a输出高电位(步骤S270)。到此为止,完成对I2C设备130的地址动态分配,其所分配的地址为10h。随后将完成对I2C设备140的地址分配。
由于I2C设备130在步骤S270中将其输出端a输出高电位,因此,此时I2C设备140的输入端口b也为高电位。I2C设备140的处理单元141侦测到输入端口b为高电位(步骤S230)之后,将I2C设备140的地址设定为预定地址S,即是60h(步骤S240)。
由于总线主控处理单元111在发送命令为I2C设备130分配地址X=10h之后(步骤S350),累加因子B=B+1(步骤S360)。完成步骤360之后,B=1。为了保证I2C设备140有充足时间完成同步协调的步骤,总线主控处理单元111延迟等待20毫秒(步骤S370)之后,判断是否B小于N(步骤S330)。由于此时B=1且N=3,则B小于N,转到下一步骤,令X=A+B(步骤S340)。因为此时A=10h且B=1,则经过步骤S340之后,X=11h。
总线主控处理单元111第二次向I2C总线120发送地址分配命令将地址为S的设备地址设定为X(步骤S350)。因为此时I2C设备140的地址为S=60h,所以I2C设备140的处理单元将可以从I2C总线120接收到此命令(步骤S250),将I2C设备140的地址设定为X(步骤S260),最后控制Vcc将其输出端b输出高电位(步骤S270)。因为此时X=11h,所以到此为止,完成了对I2C设备140的地址动态分配,I2C设备140所分配的地址为11h。按照上述的方法及流程作业,可完成对I2C设备150的地址分配,I2C设备150所分配的地址为12h。
总线主控处理单元111完成三次动态分配地址作业之后,该三个I2C设备被分配到的地址分别为10h,11h,12h。
在本发明的其它实施例中,可对其中各参数进行适当更改,但必须符合如下条件确保所述的预定地址S最终不被分配给某一I2C设备。对于本领域的一般技术人员可以不用创造性劳动,选定符合上述条件的参数实施本发明。
I2C总线是一种集成电路总线,因此本发明的思想可以运用到对其它集成电路总线的设备进行动态地址分配。
权利要求
1.一种动态分配集成电路总线上的设备地址的系统,其特征在于,该系统包括一总线主控处理单元及多个连接在所述的集成电路总线上的设备,每一设备包括一处理单元,其中所述总线主控处理单元用于产生多个各不相同的新地址;向上述集成电路总线上发送命令,将产生的新地址分配给当前地址为一预定地址的设备;所述连接在集成电路总线上的多个设备的处理单元逐个执行如下作业将各自所属设备的地址设定为所述的预定地址;从上述集成电路总线上接收将一新地址分配给当前地址为上述预定地址的设备的命令,并根据所接收到的命令将该设备的地址设定为该新地址。
2.如权利要求1所述的动态分配集成电路总线上的设备地址的系统,其特征在于,其中所述的集成电路总线为I2C(InterIntegrated Circuit)总线。
3.如权利要求1所述的动态分配集成电路总线上的设备地址的系统,其特征在于,其中连接在上述集成电路总线上的各设备的处理单元还执行如下作业设定各自所属设备为地址可设定状态。
4.如权利要求1所述的动态分配集成电路总线上的设备地址的系统,其特征在于,其中连接在上述集成电路总线上的各设备的处理单元还执行如下作业设定各自所属设备为地址不可设定状态。
5.如权利要求1所述的动态分配集成电路总线上的设备地址的系统,其特征在于,其中所述的多个设备是串联在所述的集成电路总线上的。
6.如权利要求1或5所述的动态分配集成电路总线上的设备地址的系统,其特征在于,其中“连接在上述集成电路总线上的多个设备的处理单元逐个执行如下作业”是指当连接在上述集成电路总线上的前一设备的处理单元执行完成所述的如下作业之后,其后一设备的处理单元才能执行所述的如下作业,直到所有设备执行完成所述的如下作业。
7.一种动态分配集成电路总线上的设备地址的方法,其特征在于,该方法包括设定连接在所述的集成电路总线上的所有设备为地址不可设定状态;一总线主控处理单元向上述集成电路总线不断发送地址分配命令将地址为一预定地址的设备的地址设定为一新地址;设定连接在所述的集成电路总线上的一第一设备为地址可设定状态;设定所述第一设备的地址为一预定地址;从上述集成电路总线接收并执行一地址分配命令设定所述第一设备的地址为一第一地址,其中该第一地址不同于所述的预定地址;设定连接在所述的集成电路总线上的一第二设备为地址可设定状态;设定所述第二设备的地址为所述的预定地址;从上述集成电路总线接收并执行一地址分配命令设定所述第二设备的地址为一第二地址,其中该第二地址不同于所述的预定地址,且该第二地址不同于所述的第一地址。
8.如权利要求7所述的动态分配集成电路总线上的设备地址的方法,其特征在于,其中所述的集成电路总线为I2C(InterIntegrated Circuit)总线。
9.如权利要求7或8所述的动态分配集成电路总线上的设备地址的方法,其特征在于,其中连接在所述集成电路总线上的每一设备包括一处理单元,用于设定其设备的地址。
10.如权利要求7或8所述的动态分配集成电路总线上的设备地址的方法,其特征在于,其中连接在所述集成电路总线上的每一设备包括一处理单元,用于设定其设备为地址可设定状态。
11.如权利要求7或8所述的动态分配集成电路总线上的设备地址的方法,其特征在于,其中连接在所述集成电路总线上的每一设备包括一处理单元,用于设定其设备为地址不可设定状态。
12.如权利要求7或8所述的动态分配集成电路总线上的设备地址的方法,其特征在于,该方法还包括设定连接在所述的集成电路总线上的一其它设备为地址可设定状态;设定该其它设备的地址为所述的预定地址;从上述集成电路总线接收并执行一地址分配命令将地址为上述预定地址的设备的地址设定为一新地址。
全文摘要
本发明提供一种动态分配集成电路总线上的设备地址的系统,该系统包括一总线主控处理单元及多个连接在集成电路总线上的设备,每一设备包括一处理单元。其中,总线主控处理单元用于产生多个各不相同的新地址,向集成电路总线发送命令,将产生的新地址分配给当前地址为一预定地址的设备。每个设备的处理单元逐个执行如下作业将各自所属设备的地址设定为所述的预定地址,从集成电路总线上接收将一新地址分配给当前地址为预定地址的设备的命令,并根据所接收到的命令将该设备的地址设定为该新地址。本发明还提供一种动态分配地址的方法。本发明可以扩充集成电路总线的容量,使得集成电路总线上可以连接更多的设备。
文档编号G06F13/40GK1783045SQ20041007728
公开日2006年6月7日 申请日期2004年12月4日 优先权日2004年12月4日
发明者郎裕明 申请人:鸿富锦精密工业(深圳)有限公司, 鸿海精密工业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1