多主机仲裁方法及多主机通信系统的制作方法

文档序号:6524060阅读:255来源:国知局
多主机仲裁方法及多主机通信系统的制作方法
【专利摘要】本发明公开了一种多主机仲裁方法及多主机通信系统,该方法包括如下步骤:若主机需要占用数据线时,主机检测握手信号线是否处于高电平;若握手信号线处于低电平,主机则等待;若握手信号线处于高电平,主机则通过握手信号端将握手信号线置于低电平,并随即开始检测数据线是否存在数据传输的启动信号;若在对应的时间片内检测到启动信号,则主机退出占用数据线的竞争,若在对应的时间片内检测不到启动信号,则主机占用数据线。本发明使得不具有I2C总线的主机之间可以实现I2C总线功能,并且也实现了较高优先级的主机更优先占用I2C总线。
【专利说明】多主机仲裁方法及多主机通信系统
【【技术领域】】
[0001]本发明涉及通信领域,尤其涉及多主机仲裁方法及多主机通信系统。
【【背景技术】】
[0002]I2C (Inter-1ntegrated Circuit)总线由PHLIPS公司开发的两线式总线,由串行数据线SDA和串行时钟线SCL构成,主机可以通过I2C与带有I2C接口的器件通过I2C总线进行数据的收发,传输速率在标准模式下可达IOOkbps,在快速模式下可达400kbps,I2C可以通过冲突检测和数据仲裁的方式防止数据被破坏,是一个真正的多主机总线,它允许多个主机进行通信,I2C总线的仲裁包括SCL (串行时钟线)同步和SDA (串行数据线)仲裁:
[0003]I 同步
[0004]所有主机在SCL线上产生自己的时钟来传输I2C总线上的报文,数据只在时钟的高电平周期有效。所有主机在SCL线上表现出的是一个线与的逻辑,因此,SCL线被最长低电平周期的器件保持低电平,此时,低电平周期短的器件进入高电平等待状态,产生的同步SCL时钟的低电平周期由低电平时钟周期最长的器件决定,而高电平周期由高电平时钟周期最短的器件决定。
[0005]I 仲裁
[0006]SDA线的仲裁也是建立在总线具有线“与”逻辑功能的原理上的。节点在发送I位数据后,比较总线上所呈现的数据与`自己发送的是否一致。是,继续发送;否则,退出竞争。这样,在其他主机发送低电平时,发送的高电平的主机将断开它的数据输出,仲裁可以持续多位比较。
[0007]而在嵌入式应用中,很多主机一般为MCU,而很多MCU并不带有I2C总线接口,因此在多主机、主机和从机之间,不能实现可靠的通信。

【发明内容】

[0008]为了克服现有技术的不足,本发明提供了一种多主机仲裁方法,从而使得普通的不具有I2C总线的主机,可以模拟I2C总线,实现快速可靠的仲裁。本发明还提供了一种多主机通信系统,使得通信系统可以模拟I2C总线,实现快速可靠的仲裁,从而完成通信。
[0009]一种多主机仲裁方法,每个主机的数据线接口分别与数据线连接,每个主机的握手信号端分别与握手信号线连接;不同时长的时间片被分配给每个主机;
[0010]所述多主机仲裁方法包括如下步骤:
[0011]若主机需要占用数据线时,主机检测所述握手信号线是否处于高电平;
[0012]若所述握手信号线处于低电平,所述主机则等待;
[0013]若所述握手信号线处于高电平,所述主机则通过握手信号端将所述握手信号线置于低电平,并随即开始检测所述数据线是否存在数据传输的启动信号;
[0014]若在对应的时间片内检测到启动信号,则所述主机退出占用所述数据线的竞争,
[0015]若在对应的时间片内检测不到启动信号,则所述主机占用所述数据线。[0016]在一个实施例中,当所述主机占用并使用完所述数据线,所述主机将所述握手信号线置于高电平。
[0017]在一个实施例中,根据每个主机的优先级别分配不同时长的时间片,优先级较低的主机分配较短的时间片,优先级较高的主机分配较长的时间片。
[0018]在一个实施例中,所述主机通过如下方法检测所述数据线是否存在数据传输的启动信号:
[0019]若前一个时刻所述主机检测到所述数据线处于高电平,而后一个时刻所述数据线处于低电平,则所述主机判断所述数据线存在启动信号。
[0020]本发明还提供了一种多主机通信系统,包括数据线、握手信号线、时钟信号线、多个主机以及至少一个从机,每个主机的数据线接口分别与数据线连接,其特征是:每个主机的握手信号端分别与握手信号线连接,每个主机的时钟信号端分别与所述时钟信号线连接;所述从机的I2C总线的串行数据线和串行时钟线分别与所述数据线和时钟信号线连接;
[0021]不同时长的时间片被分配给每个主机;
[0022]若主机需要占用数据线时,主机检测所述握手信号线是否处于高电平,
[0023]若所述握手信号线处于低电平,所述主机则等待,
[0024]若所述握手信号线处于高电平,所述主机则通过握手信号端将所述握手信号线置于低电平,并随即开始检测所述数据线是否存在数据传输的启动信号,
[0025]若在对应的时间片内 检测到启动信号,则所述主机退出占用所述数据线的竞争,
[0026]若在对应的时间片内检测不到启动信号,则所述主机占用所述数据线。
[0027]在一个实施例中,当所述主机占用并使用完所述数据线,所述主机将所述握手信号线置于高电平。
[0028]在一个实施例中,根据每个主机的优先级别分配不同时长的时间片,优先级较低的主机分配较短的时间片,优先级较高的主机分配较长的时间片。
[0029]在一个实施例中,所述主机通过如下方法检测所述数据线是否存在数据传输的启动信号:
[0030]若前一个时刻所述主机检测到所述数据线处于高电平,而后一个时刻所述数据线处于低电平,则所述主机判断所述数据线存在启动信号。
[0031]本发明的有益效果是:通过采用上述技术方案,使得在很多嵌入式系统中不具有I2C总线的主机之间可以实现I2C总线功能,从而,具有I2C总线的从机可以直接连接到数据线进行接收数据;根据不同的优先级将不同的长度的时间片分配给不同的主机,从而也实现了较高优先级的主机更优先占用I2C总线。
【【专利附图】

【附图说明】】
[0032]图1是本发明一种实施例的多主机通信系统的系统示意图;
[0033]图2是本发明一种实施例的多主机仲裁方法的时序图;
[0034]图3是本发明一种实施例的。
【【具体实施方式】】[0035]以下将结合附图,对本发明的具体实施例作进一步详细说明。
[0036]如图1所示,一种多主机通信系统,包括第一主机、第二主机、从机、数据线SDA、握手信号线busy和时钟信号线SCL,其中,第一主机和第二主机均没有I2C总线,例如采用微控制器(MCU) STC12C5A60S2,其是宏晶公司的一款8位单片机;而从机具有I2C总线,例如采用SD2405API,其是兴威帆公司的实时时钟,带有标准的I2C接口。
[0037]第一主机的数据线接口 SDAl和第二主机的数据线接口 SDA2分别与数据线SDA连接,第一主机的握手信号端busyl和第二主机的握手信号端busy2分别与握手信号线busy连接,第一主机的时钟信号端SCLl和第二主机的时钟信号端SCL2分别与时钟信号线SCL连接;从机的I2C总线的串行数据线SDA3和串行时钟线SCL3分别与数据线SDA和时钟信号线SCL连接;第一主机的握手信号端busyl、数据线接口 SDAl和时钟信号端SCLl均采用普通的I/O 口,同样第一主机的握手信号端busy2、数据线接口 SDA2和时钟信号端SCL2也是普通的I/O 口。例如,第一主机的P2~0作为SCL1,Ρ2?作为SDA1,P2~2作为busy2,使用第二主机的Ρ2?作为SCL2,Ρ2?作为SDA2,P2~2作为busy2。
[0038]假定第一主机的优先级高于第二主机的优先级,因此给第一主机分配时间片tl,而给第二主机分配时间片(tl+t2)。例如tl可以为20us, (tl+t2)为40us。
[0039]当两个主机均没有占用或需要占用数据线SDA时,握手信号线busy处于高电平状态(即busy处于闲状态),数据线SDA也处于高电平状态,时钟信号线也处于高电平状态;当数据线SDA被某个主机占用时,握手信号线busy处于低电平,即忙状态。
[0040]若第一主机需要占用数据线SDA(在I2C总线中,当某个主机占用数据线SDA时,也需要同时向时钟信号线发送时钟信号),第一主机检测握手信号线busy是否处于高电平:
[0041]若握手信号线busy处于低电平,则说明此时数据线SDA被第二主机占用着,因此第一主机继续等待握手信号线busy变为闲状态;
[0042]若握手信号线busy处于高电平,则说明此时数据线SDA尚未被第二主机占用着,因此此时第一主机将握手信号端busyl置为低电平,由于握手信号端busyl和握手信号端busy2是线与连接关系,因此,握手信号线busy变为低电平,此时第一主机随即开始检测数据线SDA是否存在数据传输的启动信号;由于在第一主机检测到握手信号线busy处于高电平的状态的时候,很有可能第二主机也正想要占用SDA,并且同时检测到握手信号线busy处于高电平,并且同时第二主机也通过握手信号端busy2将握手信号线busy置于低电平,并随即开始检测数据线SDA是否存在数据传输的启动信号,因此,第一主机和第二主机同时开始数据线SDA是否存在数据传输的启动信号。
[0043]由于第一主机的优先级较高,在对应的时间片tl内,都检测到数据线SDA是高电平,即没有检测到数据传输的启动信号,因此,在时间片tl结束的时刻,第一主机随即通过数据线接口 SDAl占用数据线SDA,数据线SDA随即出现启动信号;而由于第二主机的优先级较低,当过去时间片tl时长后,其仍然继续在检测数据线SDA是否出现启动信号,因此,第二主机将检测到该启动信号,即在时间片tl阶段检测到数据线SDA处于高电平,然后在时间片tl的时刻后检测到SDA低电平,因此,第二主机退出占用数据线SDA的竞争,并将握手信号端busy2置于高电平,但是,由于此时第一主机的握手信号端busyl还处于低电平,握手信号线busy仍处于低电平,其余的主机(若还有其他主机)检测到握手信号线busy处于低电平后,仍然会处于等待状态。
[0044]在第一主机发出启动信号之后(同时第一主机通过时钟信号端SCLl向时钟信号线发送时钟信号),具有I2C总线的从机检测到该启动信号,通过数据线接口 SDA3开始接收从第一主机发送到数据线SDA上的数据。
[0045]当第一主机占用I2C总线(数据线SDA和时钟信号线SCL)完成后,置SDAl和SCLl为高电平,置握手信号端busyl为高电平,由于此时第二主机的握手信号端busy2也是高电平,因此握手信号线变busy为高电平,即重新回到闲状态;同时也将时钟信号线SCL拉回高电平。
[0046]主机的数量可以是任意多个,其与数据线SDA、握手信号线和时钟信号线的连接方式与上述的第一主机的相同。而具有I2C总线的从机也可以有多个,其与数据线SDA和时钟信号线的连接方式也与上述从机相同。
【权利要求】
1.一种多主机仲裁方法,其特征是:每个主机的数据线接口分别与数据线连接,每个主机的握手信号端分别与握手信号线连接;不同时长的时间片被分配给每个主机; 所述多主机仲裁方法包括如下步骤: 若主机需要占用数据线时,主机检测所述握手信号线是否处于高电平; 若所述握手信号线处于低电平,所述主机则等待; 若所述握手信号线处于高电平,所述主机则通过握手信号端将所述握手信号线置于低电平,并随即开始检测所述数据线是否存在数据传输的启动信号; 若在对应的时间片内检测到启动信号,则所述主机退出占用所述数据线的竞争, 若在对应的时间片内检测不到启动信号,则所述主机占用所述数据线。
2.如权利要求1所述的多主机仲裁方法,其特征是:当所述主机占用并使用完所述数据线,所述主机将所述握手信号线置于高电平。
3.如权利要求1所述的多主机仲裁方法,其特征是:根据每个主机的优先级别分配不同时长的时间片,优先级较低的主机分配较短的时间片,优先级较高的主机分配较长的时间片。
4.如权利要求1所述的多主机仲裁方法,其特征是,所述主机通过如下方法检测所述数据线是否存在数据传输的启动信号: 若前一个时刻所述主机检测到所述数据线处于高电平,而后一个时刻所述数据线处于低电平,则所述主机判断所述数据线存在启动信号。
5.一种多主机通信系统,包括数据线、握手信号线、时钟信号线、多个主机以及至少一个从机,每个主机的数据线接口分别与数据线连接,其特征是:每个主机的握手信号端分别与握手信号线连接,每个主机的时钟信号端分别与所述时钟信号线连接;所述从机的I2C总线的串行数据线和串行时钟线分别与所述数据线和时钟信号线连接; 不同时长的时间片被分配给每个主机; 若主机需要占用数据线时,主机检测所述握手信号线是否处于高电平, 若所述握手信号线处于低电平,所述主机则等待, 若所述握手信号线处于高电平,所述主机则通过握手信号端将所述握手信号线置于低电平,并随即开始检测所述数据线是否存在数据传输的启动信号, 若在对应的时间片内检测到启动信号,则所述主机退出占用所述数据线的竞争, 若在对应的时间片内检测不到启动信号,则所述主机占用所述数据线。
6.如权利要求5所述的多主机通信系统,其特征是:当所述主机占用并使用完所述数据线,所述主机将所述握手信号线置于高电平。
7.如权利要求5所述的多主机通信系统,其特征是:根据每个主机的优先级别分配不同时长的时间片,优先级较低的主机分配较短的时间片,优先级较高的主机分配较长的时间片。
8.如权利要求5所述的多主机通信系统,其特征是,所述主机通过如下方法检测所述数据线是否存在数据传输的启动信号: 若前一个时刻所述主机检测到所述数据线处于高电平,而后一个时刻所述数据线处于低电平,则所述主机判断所述数据线存在启动信号。
【文档编号】G06F13/26GK103617138SQ201310690547
【公开日】2014年3月5日 申请日期:2013年12月16日 优先权日:2013年12月16日
【发明者】张良华 申请人:深圳市兴威帆电子技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1