专利名称:一种解决i2c总线上多主机冲突的方法及装置的制作方法
技术领域:
本发明涉及通讯领域,特别涉及一种解决I2C总线上多主机冲突的方法及装置。
背景技术:
I2C (Inter Integrated Circuit,内部集成线路)总线是由飞利浦公司在 二十世纪八十年代提出的两线、串行、中低速通信总线。被应用在各种控制体系中,例 如 SMBus (System Management Bus,系统管理总线)、PMBus (PowerManagement Bus,电源 管理总线)、IPMI (Intelligem Platform Managementlnterface,智能平台管理接口)、 ATCA(Advanced Telecom ComputingArchitecture,先进的电信计算平台)等。I2C 总线是 一个多主机总线,也就是说总线上可以连接多于一个能控制总线的器件(主机)。主机能够 实现初始化数据传输、产生时钟信号且终止数据传输,此时其它任何被寻址的器件都被认 为是从机。I2C总线支持仲裁机制,主机只能在总线空闲时启动传输。两个或多个主机可能在 起始条件的最小持续时间内产生一个起始条件,结果在总线上产生一个规定的起始条件。 当SCL(I2C时钟信号线)是高电平时,仲裁在SDA(I2C数据信号线)发生;这样,在其他主 机发送低电平时发送高电平的主机将断开它的数据输出级,因为总线上的电平与其自己的 电平不相同。仲裁可以持续多位,其第一个阶段是比较地址位,如果每个主机都尝试寻址相 同的器件,仲裁会继续比较数据位(如果主机是发送器),或者比较响应位(如果主机是接 收器)。因为I2C总线的地址和数据信息由赢得仲裁的主机决定,所以在仲裁过程中不会丢 失fe息。图1显示了两个主机的仲裁过程。当然可能包含更多的内容(由连接到总线的主 机数量决定)。DATAl为主机1输出的数据,DATA2为主机2输出的数据,SDA为I2C总线上 面的数据,SCL为I2C总线时钟信号。SDA信号电平由DATAl和DATA2信号“相与”得到的。 主机发出数据后,采集总线上面的数据,当总线上面的数据和自己发出的数据不一致,主机 自动断开其数据输出级。图1上面显示DATAl数据电平与SDA线的实际电平有一些差别, 那么,主机1主动关断数据输出,放弃总线竞争。主机2输出的内部数据信号DATA2和SDA 信号一致,最终赢得了总线使用权。这种仲裁方式存在一些问题(1)由于I2C总线的控制由地址或主机码以及竞争主机发送的数据决定,没有中 央主机,总线也没有任何定制的优先权;(2)在总线上面有多主机的应用场合,总线冲突严重,效率很低;(3)某些特定场合应用会出现异常情况,如两个主器件(A和B)同时和一个从器 件(C)通讯,A向C发送一个数据字节M,B向C发送两个数据字节M和N。这种情况下,在 A发送完数据后,总线通讯就结束了,B无法和C正常通讯。随着I2C总线应用越来越广泛,应用场景也越来越复杂。I2C总线在多主机存在的 情况下,由于总线冲突仲裁,导致工作效率低而且稳定性差。
发明内容
本发明要解决的技术问题是提供一种解决I2C总线上多主机冲突的方法及装置, 以提高I2C总线的稳定性。为了解决上述技术问题,本发明提供了一种解决I2C总线上多主机冲突的方法, 包括接收到主机申请I2C总线资源的请求后,若判断I2C总线当前的工作状态为空闲, 则将I2C总线资源分配给请求申请I2C总线资源中优先级最高的第一主机。进一步地,上述方法还具有下面特点所述将I2C总线资源分配给请求申请I2C总 线资源中优先级最高的第一主机的步骤包括将I2C总线资源分配给请求申请I2C总线资源中被预先赋予令牌的第一主机,若 有多个请求申请I2C总线资源的主机被预先赋予令牌,则将I2C总线资源分配给请求申请 I2C总线资源中被预先赋予令牌、且预定优先级最高的第一主机。进一步地,上述方法还具有下面特点将I2C总线资源分配给第一主机的步骤之 后,所述方法还包括取消所述第一主机的令牌。进一步地,上述方法还具有下面特点所述取消所述第一主机的令牌之后,所述方 法还包括向请求申请I2C总线资源的所述第一主机发放令牌。进一步地,上述方法还具有下面特点将I2C总线资源分配给第一主机的步骤之 后,所述方法还包括若判断挂在同一 I2C总线上的所有主机都没有令牌,则向请求申请I2C总线资源 的第二主机发放令牌,或向挂在该同一 I2C总线上的所有主机发放令牌。进一步地,上述方法还具有下面特点所述将I2C总线资源分配给请求申请I2C总 线资源中优先级最高的第一主机的步骤具体为打开请求申请I2C总线资源中优先级最高 的第一主机与所述I2C总线之间的电子开关,使该第一主机占用I2C总线资源。进一步地,上述方法还具有下面特点所述将I2C总线资源分配给请求申请I2C总 线资源中优先级最高的第一主机的步骤之后,所述方法还包括若判断所述第一主机占用I2C总线资源超过第一时间,则强制释放I2C总线资源。为了解决上述问题,本发明还提供了一种解决I2C总线上多主机冲突的装置,所 述装置与多个挂在同一条I2C总线上的主机连接,所述装置包括接收单元,用于接收主机申请I2C总线资源的请求后,触发控制单元;及控制单元,与所述接收单元连接,用于若判断I2C总线当前的工作状态为空闲,则 将I2C总线资源分配给请求申请I2C总线资源中优先级最高的第一主机。进一步地,上述装置还具有下面特点所述控制单元包括判断模块,用于若判断I2C总线当前的工作状态为空闲,并且判断请求申请I2C总 线资源的第一主机被预先赋予令牌,或者判断请求申请I2C总线资源中被预先赋予令牌的 多个主机中的第一主机的预定优先级最高,则触发分配模块;分配模块,用于将I2C总线资源分配给所述第一主机。进一步地,上述装置还具有下面特点所述控制单元还包括令牌管理模块,
所述分配模块,将I2C总线资源分配给所述第一主机之后还用于向所述令牌管理 模块发送第一消息;所述令牌管理模块,用于接收到所述第一消息后取消所述第一主机的令牌。进一步地,上述装置还具有下面特点所述令牌管理模块,取消所述第一主机的令 牌之后还用于,向请求申请I2C总线资源的所述第一主机发放令牌。进一步地,上述装置还具有下面特点所述判断模块,还用于若判断挂在所述同一 I2C总线上的所有主机都没有令牌, 则向所述令牌管理模块发送第二消息;所述令牌管理模块,还用于接收到所述第二消息后向请求申请I2C总线资源的第 二主机发放令牌,或向挂在该同一 I2C总线上的所有主机发放令牌。进一步地,上述装置还具有下面特点所述多个主机通过相应的电子开关与所述 I2C总线隔离,所述控制单元,将I2C总线资源分配给请求申请I2C总线资源中优先级最高的第 一主机具体用于,打开请求申请I2C总线资源中优先级最高的第一主机与所述I2C总线之 间的电子开关,使该第一主机占用I2C总线资源。进一步地,上述装置还具有下面特点所述控制单元,还用于若判断所述第一主机 占用I2C总线资源超过第一时间,则强制释放I2C总线资源。综上,本发明提供一种解决I2C总线上多主机冲突的方法及装置,能够保证总线 上仅有一个主机生效,即保证总线上主机的唯一性,进而提高了系统的稳定性;可以控制各 个主机的优先级;可以根据各个主机发送的数据量来合理设置总线最大占用时间参数,以 大大提供总线利用率;能够避免I2C仲裁中出现的其他问题,如I2C总线没有响应的问题。
图1是I2C总线仲裁过程的示意图;图2是现有技术的I2C总线系统的示意图;图3是本发明实施例的I2C总线系统的示意图;图4为本发明实施例的解决I2C总线上多主机冲突的装置的示意图;图5为本发明一实施例的解决I2C总线上多主机冲突的方法的流程图;图6为本发明另一实施例的解决I2C总线上多主机冲突的方法的流程图;图7为本发明实施例的控制单元的状态机示意图。
具体实施例方式本发明主要是使用电子开关隔离主机I2C通道和I2C总线,根据各个主机的申请 资源信息和I2C总线的工作状态控制电子开关的通断,以保证I2C总线上最多只有一个电 子开关处于导通状态,这样,就保证了总线上主机的唯一性。为了更好地理解本发明,下面结合附图和具体实施例对本发明作进一步地描述。图2是现有技术的I2C总线系统的示意图,如图2所示,四个主机和一个从机之间 通过I2C总线进行信息交互。四个主机和从机直接挂在一条I2C总线上,各主机通过I2C 总线仲裁机制来竞争总线使用权。此设计是常规设计,如果各个主机和从机频繁交换信息,会存在严重冲突情况,大大影响了 I2C总线的效率。本发明在此基础上进行改进。图3是本发明实施例的I2C总线系统的示意图,如图3所示,为了在硬件上面保证 I2C总线上仅有一个主机,本发明选用电子开关来隔离主机的I2C信号,某个电子开关开启 后,对应主机I2C通道便连接到I2C总线上。主机如果要占用I2C总线,必须要向本发明的 解决I2C总线上多主机冲突的装置申请总线资源,本发明的装置根据I2C总线的工作状态 及各个主机申请占用I2C总线情况来判断是否开启电子开关。图4为本发明实施例的解决I2C总线上多主机冲突的装置的示意图,如图4所示, 本实施例的装置与多个挂在同一条I2C总线上的主机连接,这些主机与该I2C总线隔离,例 如,这些主机通过相应的电子开关与该I2C总线隔离。本实施例的装置可以包括接收单元 和控制单元,其中,接收单元,用于接收主机申请I2C总线资源的请求后,触发控制单元;控制单元,与所述接收单元连接,用于判断I2C总线当前的工作状态是否为空闲, 若是,则将I2C总线资源分配给请求申请I2C总线资源中优先级最高的第一主机;否则,不 分配I2C总线资源。这样,根据本发明的装置的控制,在I2C总线忙的工作状态下,不会分配I2C总线 资源,就不存在I2C仲裁过程,保证I2C总线上主机的唯一性,进而提高系统的稳定性。进一步地,若请求申请I2C总线资源的主机被预先赋予令牌,有令牌的主机的优 先级高于没有令牌的主机,则所述控制单元会将I2C总线资源分配给该带有令牌的主机, 若有多个请求申请I2C总线资源的主机被预先赋予令牌,则控制单元将I2C总线资源分配 给请求申请I2C总线资源中被预先赋予令牌、且预定优先级最高的主机。本实施例中的控制单元可以包括令牌管理模块、判断模块和分配模块,其中,令牌管理模块,可以预先为挂在I2C总线上的所有主机分放令牌,也可以在主机 申请I2C总线资源的过程中为某一主机,或某几个主机分放令牌、也可以消耗完所有主机 的令牌之后为挂在I2C总线上的所有主机,或某一主机,或某几个主机分放令牌。判断模块,用于若判断I2C总线当前的工作状态为空闲,并且判断请求申请I2C总 线资源的第一主机被预先赋予令牌,则通告分配模块将I2C总线资源分配给有令牌的第一 主机;判断模块若判断请求申请I2C总线资源中有多个主机被预先赋予令牌,则继续判 断有令牌的主机中哪一主机的预定优先级最高,则通知分配模块将I2C总线资源分配给有 令牌且预定优先级最高的主机。令牌管理模块还可以在分配模块为有令牌的主机分配I2C总线资源之后,将该主 机的令牌取消掉;还可以在取消掉某一主机的令牌之后,再为该主机重新分发令牌。进一步地,判断模块在判断挂在同一 I2C总线上的所有主机都没有令牌时,也可 以通知令牌管理模块为所有主机或某一主机或某几个主机分发令牌。这样,本实施例的装置可以通过令牌灵活控制各个主机的优先级。具体地,在本实施例中,多个主机是通过相应的电子开关与I2C总线隔离,控制单 元将I2C总线资源分配给请求申请I2C总线资源中优先级最高的主机具体是通过打开请 求申请I2C总线资源中优先级最高的主机与I2C总线之间的电子开关,使该主机占用I2C 总线资源。
7
本发明实施例的装置通过电子开关的方式对主机I2C通道信号进行隔离,避免 I2C总线上有多个主机出现的情况,就不存在I2C仲裁过程。进一步地,本实施例的控制单元还可以用于判断主机占用I2C总线资源是否超过 预设时间,若是,则通知该主机释放I2C总线资源,以避免主机在可能挂死,或者线路问题 导致异常情况下,主机无休止地占用I2C总线资源,以提高I2C总线资源的利用率。其中,所预设时间可以根据占用I2C总线资源的主机发送的数据量而设置,也可 以预先设置的固定占用时间。图5为本发明实施例的解决I2C总线上多主机冲突的方法的流程图,如图5所示, 本实施例的方法可以包括下面步骤S10、接收到主机申请I2C总线资源的请求;S20、判断I2C总线当前的工作状态是否为空闲,若是,则执行步骤S30;否则,执行 步骤S40 ;S30、将I2C总线资源分配给请求申请I2C总线资源中优先级最高的主机。S40、通知请求申请I2C总线资源的主机进行等待。这样,在I2C总线忙的工作状态下,不会分配I2C总线资源,就不存在I2C仲裁过 程,保证I2C总线上主机的唯一性,进而提高系统的稳定性。下面通过图3的实施例,对本发明的解决I2C总线上多主机冲突的方法进行详细 的说明。如图3所示,本实施例的系统包括四个主机(定义为Masterl,Master2、Master3 和 Master4)、一个从机(Slave)、四个电子开关(Switchl,Switch2、Switch3 和 Switch4)和 一个本实施例的解决I2C总线上多主机冲突的装置。每个主机对应一个电子开关,如Masterl对应Switchl。当Switchl导通后, Masterl占用I2C总线;当Switchl断开后,Masterl放弃I2C总线。每个主机和本实施例的 装置之间可以有两个数据通道请求数据通道和响应数据通道,其中,请求数据通道用于主 机向控制单元申请I2C总线资源;响应数据通道用于控制单元通知主机是否申请到了 I2C 总线资源。请求数据通道和响应数据通道设计非常灵活,可以是单根信号线,也可以是多条 信号总线,接口协议可以灵活设计,可以是同步的,也可以是异步的。例如,Masterl, Master2和本实施例的装置之间的请求数据通道分别为mstl_ req,mst2_req (例如,编号为①,④),响应数据通道分别为mstl_ack,mst2_ack (例如,编号 为②,⑤)。每个电子开关都有一个通断控制信号,如SWitchl,SWitch2的控制信号分别为 mstl_en,mst2_en(例如,编号为③,⑥)。本实施例的装置通过电子开关的控制信号来控制 电子开关的通断,保证总线最多只有一个电子开关处在导通状态。具体控制策略如下(1) I2C总线在空闲状态下仅有一个主机申请I2C总线资源;例如,当前I2C总线处于空闲状态,且仅有Masterl通过①发送请求占用I2C总线 的申请,控制单元立刻将I2C总线资源分配给Masterl,具体操作如下首先,控制单元将③置于使能状态,使Switchl导通;其次,通过②通知Msterl已 经获取I2C总线资源;接着,Masterl占用I2C总线资源,和从机通讯。最后,Masterl通讯 结束后,通过①取消占用I2C总线请求,控制单元将③置于禁止状态,使Switchl关断,将 Masterl从总线上隔离开。
8
(2) I2C总线在空闲状态下有多个主机申请I2C总线资源;例如,当前I2C总线处于空闲状态,I2C总线上Masterl和Master2同时发送请求 占用I2C总线的申请,控制单元比较当前Masterl和Master2优先级,如果Masterl的优先 级高于Master2,立刻将资源分配给Masterl,具体操作与(1)中的操作相同。当Masterl 释放总线后,若Masterf仍然处在申请总线状态,则控制单元再将I2C总线资源分配给 Master2。(3) I2C总线在忙状态下仅有一个主机申请资源;例如,当前I2C总线处于繁忙状态,仅有Masterl申请总线资源。此时,控制单元 不会立即将I2C总线资源分配给Masterl,而是让Masterl处在等待状态,即通过②通知 Masterl没有获取到总线资源。直到I2C总线空闲后,控制单元才会再次检测各个主机申请 总线资源的信息,如果Masterl仍然处于申请总线资源状态,则控制单元才将I2C总线资源 分配给Masterl。(4) I2C总线在忙状态下有多个主机申请资源;例如,当前I2C总线处于繁忙状态下,Masterl和Master2同时申请总线资源。 此时,控制单元首先通知Masterl和Masterf等待,待I2C总线空闲后,如果Masterl和 Masterf仍然在申请总线资源,则控制单元将根据当前Masterl和Masterf的优先级确定将 资源分配给优先级高的主机。图6为本发明另一实施例的解决I2C总线上多主机冲突的方法的流程图,系统上 电后所有Switch默认为关闭,即所有主机都和I2C总线隔离开。如图6所示,可以包括下 面步骤S101、主机申请占用I2C总线资源;例如,Masterl需要占用I2C总线资源,首先通过请求数据通道向控制单元申请占 用I2C总线资源并不停检测响应数据通道信息。S102、控制单元判断是否为主机分配I2C总线资源,若是,则转向步骤S103,否则, 转向步骤S107 ;控制单元接收到Masterl请求后,根据当前I2C总线状态和当前申请总线资源 所有主机的优先级来决定是否分配总线资源给Masterl。控制单元仅仅会在总线空闲, 且当前申请总线资源的主机中,Masterl的优先级最高的条件下,才会把总线资源分配给 Masterl。本实施例中,可以通过令牌来实现主机的优先级,可以在初始状态下为每个主机 或指定的一个或几个主机分别赋予一个令牌,有令牌的主机优先级高于无令牌的主机,在 令牌情况相同的主机之间按预先规定的优先级排序。有令牌主机抢占到I2C总线资源后, 则耗用掉该主机的令牌。在本实施例中,可以在某一特定主机耗用掉令牌之后,重新为该特 定的主机分发令牌;也可以在所有主机的令牌都被消耗掉时,为所有主机,或某一主机,或 某几个主机重新分发令牌。S103、主机占用I2C总线资源,和从机进行通讯;控制单元通过Masterl的响应数据通道通知Masterl是否申请到了 I2C总线资源。S 104、判断主机占用I2C总线资源是否超时,若是,则转向步骤S105 ;若未超时,转向步骤S106 ;S105、强制释放I2C总线资源;为了防止某个主机长期占用I2C总线,控制单元设定了最长占用总线时间Twmax。 如果某主机占用总线时间大于Twmax,控制单元便强制释放总线,并通知该主机释放I2C总 线资源。可以通过各个主机通讯的数据量大小来合理设置Twmax参数,可以配置最大总线 占用时间,这样在主机挂死、或者是由于线路问题导致异常情况下,可以自动隔离总线上故 障主机,进而可以使I2C总线的利用率大大提高。S106、主机与从机通讯结束后,自动释放I2C总线资源。S107、判断主机申请占用I2C总线资源是否超时,若是,则转向步骤S108 ;否则,转 向步骤SlOl ;S108、主机超时告警,控制单元释放该主机的申请总线占用的请求;系统定义了 I2C申请超时时间参数Tsmax,如果Masterl在Tsmax时间内无法申请 到I2C总线资源,Masterl本身进行超时告警,同时释放I2C总线申请请求;Masterl释放 I2C总线申请占用请求后,可以再次进行申请。本实施例的控制单元分配I2C总线资源的过程可以通过状态机来实现。如7所示,本实施例的控制单元的状态机可以包括IDLE (初始状态)、 SCHEDULER (分配状态)、CPU_W0RKING (工作状态)和JUDGE (判决状态)几个状态,各个状 态说明如下(1) IDLE 初始状态,给控制单元赋初始值;(2) SCHEDULER 控制单元按照优先级来进行I2C总线资源的分配,如果没有接收 到主机的申请占用总线资源的请求,则一直停留在这个状态;(3)CPU_W0RKING 控制单元分配I2C总线资源完成之后,获得总线资源的主机与 从机进行通讯的过程中,控制单元都处于该状态,通讯完成之后,控制单元从该状态跳转到 IDLE状态;如果主机与从机的通讯时间超时,则控制单元从该状态跳转到JUDGE状态;(4) JUDGE:在某个主机与从机通讯超时的时候,控制单元处于该状态,其原因可能 是主机通讯数据量大,可能是主机挂死,或者是由于线路问题导致的异常情况。在该状态 中,首先,控制单元结束当前主机与从机之间的总线占用,释放总线资源;其次,暂时忽略此 主机占用总线资源的请求,并通知主机释放占用总线资源的请求。直到主机自动释放占用 总线资源的请求后,才使该主机的占用总线资源的请求有效;最后,跳转到IDLE状态。本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令 相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘 等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应 地,上述实施例中的各单元/单元可以采用硬件的形式实现,也可以采用软件功能单元的 形式实现。本发明不限制于任何特定形式的硬件和软件的结合。以上仅为本发明的优选实施例,当然,本发明还可有其他多种实施例,在不背离本 发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变 和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
权利要求
一种解决I2C总线上多主机冲突的方法,包括接收到主机申请I2C总线资源的请求后,若判断I2C总线当前的工作状态为空闲,则将I2C总线资源分配给请求申请I2C总线资源中优先级最高的第一主机。
2.如权利要求1所述的方法,其特征在于所述将I2C总线资源分配给请求申请I2C总 线资源中优先级最高的第一主机的步骤包括将I2C总线资源分配给请求申请I2C总线资源中被预先赋予令牌的第一主机,若有多 个请求申请I2C总线资源的主机被预先赋予令牌,则将I2C总线资源分配给请求申请I2C 总线资源中被预先赋予令牌、且预定优先级最高的第一主机。
3.如权利要求2所述的方法,其特征在于将I2C总线资源分配给第一主机的步骤之 后,所述方法还包括取消所述第一主机的令牌。
4.如权利要求3所述的方法,其特征在于所述取消所述第一主机的令牌之后,所述方 法还包括向请求申请I2C总线资源的所述第一主机发放令牌。
5.如权利要求2所述的方法,其特征在于将I2C总线资源分配给第一主机的步骤之 后,所述方法还包括若判断挂在同一 I2C总线上的所有主机都没有令牌,则向请求申请I2C总线资源的第 二主机发放令牌,或向挂在该同一 I2C总线上的所有主机发放令牌。
6.如权利要求1-5任一项所述的方法,其特征在于所述将I2C总线资源分配给请求 申请I2C总线资源中优先级最高的第一主机的步骤具体为打开请求申请I2C总线资源中优先级最高的第一主机与所述I2C总线之间的电子开 关,使该第一主机占用I2C总线资源。
7.如权利要求6所述的方法,其特征在于所述将I2C总线资源分配给请求申请I2C总 线资源中优先级最高的第一主机的步骤之后,所述方法还包括若判断所述第一主机占用I2C总线资源超过第一时间,则强制释放I2C总线资源。
8.一种解决I2C总线上多主机冲突的装置,其特征在于,所述装置与多个挂在同一条 I2C总线上的主机连接,所述装置包括接收单元,用于接收主机申请I2C总线资源的请求后,触发控制单元;及控制单元,与所述接收单元连接,用于若判断I2C总线当前的工作状态为空闲,则将 I2C总线资源分配给请求申请I2C总线资源中优先级最高的第一主机。
9.如权利要求8所述的装置,其特征在于所述控制单元包括判断模块,用于若判断I2C总线当前的工作状态为空闲,并且判断请求申请I2C总线资 源的第一主机被预先赋予令牌,或者判断请求申请I2C总线资源中被预先赋予令牌的多个 主机中的第一主机的预定优先级最高,则触发分配模块;分配模块,用于将I2C总线资源分配给所述第一主机。
10.如权利要求9所述的装置,其特征在于所述控制单元还包括令牌管理模块,所述分配模块,将I2C总线资源分配给所述第一主机之后还用于向所述令牌管理模块发送第一消息;所述令牌管理模块,用于接收到所述第一消息后取消所述第一主机的令牌。
11.如权利要求10所述的装置,其特征在于所述令牌管理模块,取消所述第一主机的令牌之后还用于,向请求申请I2C总线资源 的所述第一主机发放令牌。
12.如权利要求9所述的装置,其特征在于所述判断模块,还用于若判断挂在所述同一 I2C总线上的所有主机都没有令牌,则向 所述令牌管理模块发送第二消息;所述令牌管理模块,还用于接收到所述第二消息后向请求申请I2C总线资源的第二主 机发放令牌,或向挂在该同一 I2C总线上的所有主机发放令牌。
13.如权利要求8所述的装置,其特征在于所述多个主机通过相应的电子开关与所述 I2C总线隔离,所述控制单元,将I2C总线资源分配给请求申请I2C总线资源中优先级最高的第一主 机具体用于,打开请求申请I2C总线资源中优先级最高的第一主机与所述I2C总线之间的 电子开关,使该第一主机占用I2C总线资源。
14.如权利要求13所述的装置,其特征在于所述控制单元,还用于若判断所述第一主机占用I2C总线资源超过第一时间,则强制 释放I2C总线资源。
全文摘要
本发明提供一种解决I2C总线上多主机冲突的方法及装置,该方法包括接收到主机申请I2C总线资源的请求后,若判断I2C总线当前的工作状态为空闲,则将I2C总线资源分配给请求申请I2C总线资源中优先级最高的第一主机。本发明能够保证总线上仅有一个主机生效,即保证总线上主机的唯一性,进而提高了系统的稳定性。
文档编号G06F13/42GK101894088SQ20101023495
公开日2010年11月24日 申请日期2010年7月21日 优先权日2010年7月21日
发明者刘奎, 朱震宇 申请人:中兴通讯股份有限公司