专利名称:I2C仲裁方法及装置
专利类型:发明专利
专利申请号:CN202010926738.6
专利申请(专利权)人:北京同有飞骥科技股份有限公司
权利人地址:北京市海淀区地锦路9号院2号楼-1至4层101
专利发明(设计)人:蒋喜良,高阳,张宇,周泽湘,仇悦,文中领
专利摘要:本发明提供了一种I2C仲裁方法及装置。该方法包括:发送I2C总线控制需求;判断I2C总线是否处于空闲状态;如果I2C总线处于空闲状态,向I2C总线上的另一个控制器发送占用标识信号。本发明提供的I2C仲裁方法及装置在不增加背板元器件数量的前提下,通过分布式仲裁,提高系统可靠性。
主权利要求:
1.一种I2C仲裁方法,其特征在于,参与I2C仲裁的包括同时连接至I2C总线的两个控制器;两个控制器通过背板互联;每个控制器均包含属于各自的CPU及CPLD;所述仲裁方法包括:通过CPU发送I2C总线控制需求;
通过CPLD判断I2C总线是否处于空闲状态,包括:利用I2C总线的busy信号判断I2C总线是否处于空闲状态;当busy信号为低电平时,表示I2C总线处于忙状态;当busy信号为高电平时表示I2C总线处于空闲状态;
如果I2C总线处于空闲状态,向I2C总线上的另一个控制器发送占用标识信号;占用标识信号包括:低电平的get信号;
如果I2C总线未处于空闲状态,判断I2C总线控制权是否归属于本控制器;
如果I2C总线控制权归属于本控制器,将发送给另一个控制器的占用标识信号的状态更改为占用;
通过读取另一个控制器发送的get信号,判断是否两个控制器均得到控制权;
如果两个控制器均得到控制权,释放控制权。
2.根据权利要求1所述的I2C仲裁方法,其特征在于,如果busy信号为高电平,判定I
2C总线处于空闲状态。
3.根据权利要求1所述的I2C仲裁方法,其特征在于,将发送给另一个控制器的未占用标识信号的状态更改为占用,包括:将高电平的get信号拉低。
4.根据权利要求1所述的I2C仲裁方法,其特征在于,通过读取另一个控制器发送的get信号,判断是否两个控制器均得到控制权,包括:获取另一个控制器的get信号,判断get信号是否低电平。
5.根据权利要求1所述的I2C仲裁方法,其特征在于,如果两个控制器均得到控制权,释放控制权,包括:如果get信号为低电平,向I2C总线发送释放信号。
6.一种I2C仲裁装置,其特征在于,包括:同时连接至I2C总线的两个控制器;两个控制器通过背板互联;每个控制器均包含属于各自的CPU及CPLD逻辑器件;
CPU,用于发送I2C总线控制需求;
CPLD逻辑器件,用于判断I2C总线是否处于空闲状态,以及如果I2C总线处于空闲状态时,向I2C总线上的另一个控制器发送占用标识信号;占用标识信号包括:低电平的get信号;
如果I2C总线未处于空闲状态,判断I2C总线控制权是否归属于本控制器;
如果I2C总线控制权归属于本控制器,将发送给另一个控制器的占用标识信号的状态更改为占用;
通过读取另一个控制器发送的get信号,判断是否两个控制器均得到控制权;
如果两个控制器均得到控制权,释放控制权。 说明书 : I2C仲裁方法及装置技术领域[0001] 本发明涉及I2C总线互联技术领域,特别是涉及一种I2C仲裁方法及装置。背景技术[0002] 在一个设备中有多个控制器的时候,经常会有I2C总线互联,然后控制其他设备,这时同一个I2C总线中会有两个主设备,必然会出现双主竞争I2C控制权,会导致I2C总线通信效率低下,且容易出现竞争失败问题,造成系统不稳定。[0003] 要解决上述问题,可以使用I2C协议栈中的仲裁功能。但是,使用仲裁功能的缺陷在于,仲裁效率低下,并且容易出现竞争失败问题,进而造成系统不稳定。[0004] 还可以独立设置一个仲裁单元,由双控制器发起需求,由仲裁单元判断哪个控制器先发送需求,判定I2C控制权的归属。这一方案的缺陷在于,只有一个仲裁单元,而且该仲裁单元必须放置在背板上,增加背板有源器件的数量,降低了背板的可靠性。发明内容[0005] 本发明要解决的技术问题是提供一种I2C仲裁方法及装置,在不增加背板元器件数量的前提下,通过分布式仲裁,提高系统可靠性。[0006] 为解决上述技术问题,本发明提供了一种I2C仲裁方法,所述方法包括:发送I2C总线控制需求;判断I2C总线是否处于空闲状态;如果I2C总线处于空闲状态,向I2C总线上的另一个控制器发送占用标识信号。[0007] 在一些实施方式中,利用I2C总线的busy信号判断I2C总线是否处于空闲状态。[0008] 在一些实施方式中,如果busy信号为高电平,判定I2C总线处于空闲状态。[0009] 在一些实施方式中,占用标识信号包括:低电平的get信号。[0010] 在一些实施方式中,还包括:如果I2C总线未处于空闲状态,判断I2C总线控制权是否归属于本控制器;如果I2C总线控制权归属于本控制器,将发送给另一个控制器的未占用标识信号的状态更改为占用。[0011] 在一些实施方式中,将发送给另一个控制器的未占用标识信号的状态更改为占用,包括:将高电平的get信号拉低。[0012] 在一些实施方式中,还包括:通过读取另一个控制器发送的get信号,判断是否两个控制器均得到控制权;如果两个控制器均得到控制权,释放控制权。[0013] 在一些实施方式中,通过读取另一个控制器发送的get信号,判断是否两个控制器均得到控制权,包括:获取另一个控制器的get信号,判断get信号是否低电平。[0014] 在一些实施方式中,如果两个控制器均得到控制权,释放控制权,包括:如果get信号为低电平,向I2C总线发送释放信号。[0015] 此外,本发明还提供了一种I2C仲裁装置,所述装置包括:CPU,用于发送I2C总线控制需求;CPLD逻辑器件,用于判断I2C总线是否处于空闲状态,以及如果I2C总线处于空闲状态时,向I2C总线上的另一个控制器发送占用标识信号。[0016] 采用这样的设计后,本发明至少具有以下优点:[0017] 在没有背板元器件参与的情况下,实现了完全对称的仲裁方案,提高了系统可靠性。附图说明[0018] 上述仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,以下结合附图与具体实施方式对本发明作进一步的详细说明。[0019] 图1是本发明实施例提供的I2C仲裁方法的流程图;[0020] 图2是本发明实施例提供的I2C仲裁装置的结构图。具体实施方式[0021] 以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。[0022] 本发明主要核心包括两个部分,一是仲裁硬件,二是仲裁控制逻辑。[0023] 图1示出了本发明实施例提供的I2C仲裁方法的流程图。在图1示出的I2C仲裁方法的执行过程中,参与I2C仲裁的包括同时连接至I2C总线的两个控制器。在下文中,这两个控制器分别被称为A控制器和B控制器,简称A控、B控。每个控制器均包含属于各自的CPU及CPLD。参见图1,I2C仲裁方法包括以下步骤:[0024] 1.双控制器通过背板互联,控制器上有CPU和CPLD逻辑器件。[0025] 2.当A控或B控发出I2C控制权需求(request)后,A控或B控CPLD检查busy信号是否为低电平(低电平表示I2C总线处于忙状态,高表示空闲状态),如果是高电平,A控或B控CPLD将GET(I2C控制权指示)信号拉低,A控或B控拿不到I2C总线控制权。[0026] 3.当A控或B控发出I2C控制权需求(request)后,busy信号如果是低电平,A控或B控CPLD判定自己得到控制权,将发送给对方的GET(I2C控制权指示)和busy信号拉低。[0027] 4.读取对方发送的GET信号,如果是低电平,则判断双控仲裁失败,都释放控制权,系统重新提request信号。[0028] 5.如果是高电平,则判定仲裁成功,将发给CPU的GET信号拉低,得到控制权。[0029] 图2示出了本发明实施例提供的I2C仲裁装置的结构。参见图2,在I2C总线左侧的是一个控制器,被称为A控制器;在I2C总线右侧的是另一个控制器,被称为B控制器。[0030] 每个控制器均包含各自的CPU及CPLD。CPU用于向总线发送I2C总线控制需求,以及释放信号。CPLD用于判断I2C总线是否处于空闲状态,以及如果I2C总线处于空闲状态时,向I2C总线上的另一个控制器发送占用标识信号。[0031] 在一些实施方式中,CPLD利用I2C总线的busy信号判断I2C总线是否处于空闲状态。[0032] 在一些实施方式中,如果busy信号为高电平,判定I2C总线处于空闲状态。[0033] 在一些实施方式中,占用标识信号包括:低电平的get信号。[0034] 在一些实施方式中,还包括:如果I2C总线未处于空闲状态,CPLD判断I2C总线控制权是否归属于本控制器;如果I2C总线控制权归属于本控制器,CPLD将发送给另一个控制器的未占用标识信号的状态更改为占用。[0035] 在一些实施方式中,将发送给另一个控制器的未占用标识信号的状态更改为占用,包括:将高电平的get信号拉低。[0036] 在一些实施方式中,还包括:CPU通过读取另一个控制器发送的get信号,判断是否两个控制器均得到控制权;如果两个控制器均得到控制权,CPU释放控制权。[0037] 在一些实施方式中,CPU通过读取另一个控制器发送的get信号,判断是否两个控制器均得到控制权,包括:CPU获取另一个控制器的get信号,判断get信号是否低电平。[0038] 在一些实施方式中,如果两个控制器均得到控制权,CPU释放控制权,包括:如果get信号为低电平,CPU向I2C总线发送释放信号。[0039] 本发明提供的I2C仲裁方法及装置利用两个分别连接至I2C总线的仲裁单元,取代了原本集中的仲裁逻辑,并且,通过对分布式仲裁单元中运行的控制逻辑的合理设计,实现了完全对称的仲裁方案,提高了系统可靠性。[0040] 以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,本领域技术人员利用上述揭示的技术内容做出些许简单修改、等同变化或修饰,均落在本发明的保护范围内。
专利地区:北京
专利申请日期:2020-09-07
专利公开日期:2024-07-26
专利公告号:CN112069114B