一种具有优先级仲裁机制的I2C多机通信方法技术

技术编号:14052580 阅读:196 留言:0更新日期:2016-11-26 00:14
本发明专利技术涉及一种具有优先级仲裁机制的I2C多主机通信方法,将各个参与通信的主机定义进入占用总线的预分配队列、高优先级队列,并根据所述预分配队列和高优先级队列生成实际执行队列;在每轮实际执行队列的执行过程中,以预分配队列和高优先级队列为基础,通过高优先级主机固定占用机制和低优先级主机主动避让机制,动态生成下一轮实际执行队列,并按此循环执行。各主机按照实际队列指定的顺序循环占用总线,既保证每个主机都有占用总线实施通信的公平性,又能实现高优先级主机任务的及时处理。

【技术实现步骤摘要】

本专利技术涉及多机通信技术,特别涉及具有优先级仲裁机制的I2C多机通信的实现方法,属于通信领域。
技术介绍
I2C通信是当前工业控制及消费产品领域使用最广泛的通信方式之一,在同一时刻只能有一台设备作为主机占用总线,因此在多主机多从机的I2C通信系统中,需要有仲裁机制保证不出现多台主机同时占用总线的冲突。传统的多主机仲裁方法主要有两种,一种是具有冲突检测的载波监听多路访问法,即CSMA/CD,其主要思想是侦听到总线空闲时占用一次总线,此后按照指数退避算法等待一段随机的时间,然后再侦听总线是否空闲,如果空闲则再次占用总线。CSMA/CD的主要缺点是在重负荷条件下通信性能严重下降,且对高优先级的任务无法优先处理。另一种方法是采用令牌传递的方式,令牌在各主机之间以固定的顺序传递,具有令牌的主机占用总线实施一次通信。此方法在重负荷条件下性能不会严重下降,但在轻负荷时会有较多的空转现象导致效率低,同时也无法优先处理高优先级的任务。
技术实现思路
本专利技术的目的在于克服现有技术的不足,在不更改或增加I2C总线硬件设计的基础上,在轻负荷和重负荷条件下都能保证总线效率和公平性,且具有优先处理高优先级任务的能力。本专利技术提供一种具有优先级仲裁机制的多主机通信方法,将各个参与通信的主机定义进入占用总线的预分配队列、高优先级队列,并根据所述预分配队列和高优先级队列生成实际执行队列;在每轮实际执行队列的执行过程中,以预分配队列和高优先级队列为基础,通过高优先级主机固定占用机制和低优先级主机主动避让机制,动态生成下一轮实际执行队列,并按此循环执行。在上述技术方案中,所述总线为I2C总线。在上述技术方案中,所述预分配队列的元素个数为P,与实际参与I2C总线通信的主机的个数相等,其内容为各主机的序列号(SN),且各主机的序列号在预分配队列中的分配位置固定;所述高优先级队列的元素个数为Q,当一个主机实施一次I2C总线通信之后,如果认为自身还有紧急的任务需要处理,则按照先进先出(FIFO)的原则,将自身的序列号追加到高优先级队列的末尾;实际执行队列的元素个数为P+R,前P个元素的内容是将预分配队列的内容按照低优先级主机主动避让机制处理后得到,后R个元素的内容是高优先级队列中前R个元素。在上述技术方案中,高优先级主机固定占用机制是指实际执行队列的后R个元素的内容是高优先级队列中前R个元素,各主机按照实际执行队列指定的顺序占用I2C总线,在实际执行队列每一轮的循环中为高优先级任务预留了占用I2C总线的机会,使得有高优先级任务的主机能够在较短的时间内再次获得I2C总线控制权。在上述技术方案中,低优先级主机主动避让机制是指一个主机获得I2C总线控制权并完成一次I2C总线通信之后,如果认为自己在短时间内不需要再次占用总线,则将下一轮实际执行队列前P个元素中与自己对应的元素位置置为空元素,表明该主机下一轮不需要占用I2C总线。在上述技术方案中,根据本轮实际执行队列中排定的顺序,各主机依次获得I2C总线控制权,完成一次I2C总线通信之后,根据自身的情况,按照高优先级主机固定占用机制和低优先级主机主动避让机制,对下一轮实际执行队列的元素做更改,等待本轮实际执行队列的最后一个主机完成操作之后,下一轮实际执行队列也生成,依次循环执行。本专利技术还提供一种具有优先级仲裁机制的多主机通信方法,包括步骤:步骤0,生成通信开始时的首个实际执行队列,其前P个元素为预分配队列的对应元素,后R个元素为空元素;步骤1.0,根据当前实际执行队列的顺序,某主机获得I2C总线控制权,完成一次I2C通信;步骤1.1,如果正获得I2C总线控制权的该主机在下一轮还需要占用I2C总线,则对照预分配队列,将下一轮实际执行队列前P个元素中与自己对应的元素位置置为自己的序列号,表明该主机下一轮还按同样的次序位置获得I2C总线控制权;如果该主机不需要占用总线,则对照预分配队列,将下一轮实际执行队列前P个元素中与自己对应的元素置为空元素,表明该主机在下一轮实际执行队列中放弃获得I2C总线控制权;步骤1.2,正获得I2C总线控制权的该主机判断自身是否还有紧急的任务需要及时处理,如果有,则在高优先级队列长度小于Q时在高优先级队列的末尾加入自己的序列号;步骤1.3,正获得I2C总线控制权的该主机查看自身在当前实际执行队列中的顺序,如果小于等于P,再查看当前实际执行队列中前面是否有空元素,如果有则对照预分配队列,将下一轮实际执行队列中前面所有空元素替换为该位置对应的主机序列号,以保证在当前实际执行队列中放弃获得I2C总线控制权的这些主机在下一轮具有选择的权利;步骤1.4,正获得I2C总线控制权的该主机查看当前实际执行队列中后面的元素,如果全部为空元素,或者该主机在当前实际执行队列中的顺序为P+R,则表明该主机为当本轮实际执行队列循环的最后一个主机,该最后一个主机应当从高优先级队列中取出R个元素覆盖下一轮实际执行队列最后的R个元素,作为下一轮实际执行队列循环的拥有高优先级的R个主机,如果高优先级队列中的元素已不足R个,则用空元素填充补足;步骤1.5,作为新的一轮循环的下一轮实际执行队列已生成,跳转到步骤1.0按下一轮实际执行队列的设置开始新一轮循环。本专利技术取得了以下技术效果:本专利技术在具体实施时,根据实际系统的状况设置合适的P、Q、R参数,就能够克服当前普通I2C总线多机通信仲裁机制的缺点,在不需要升级硬件配置或更改硬件设计的条件下,在轻负荷和重负荷条件下都能保证总线效率和公平性,且具有优先处理高优先级任务的能力,显著的提高多机I2C通信的性能。附图说明图1为本轮实际执行队列执行和下轮实际执行队列生成的流程图。具体实施方式为了便于本领域普通技术人员理解和实施本专利技术,下面结合附图及具体实施方式对本专利技术作进一步的详细描述。本专利技术针对现有技术的改进主要包括两个部分:根据实际I2C通信系统的状况,将各个参与通信的主机定义进入占用I2C总线的预分配队列、高优先级队列,并依此生成实际执行队列;在每轮实际执行队列的执行过程中以预分配队列和高优先级队列为基础,引入高优先级主机固定占用机制和低优先级主机主动避让机制,动态生成下一轮的实际执行队列。预分配队列的元素个数定为P,与I2C系统中实际参与通信的主机的个数相等,其内容为各主机的序列号(SN),且各主机的序列号在队列中的分配位置固定;根据系统的实际情况,确定高优先级队列的元素个数Q以及实际执行队列比预分配队列多的元素个数R,即实际执行队列的元素个数为P+R,前P个元素的是将预分配队列的元素按照低优先级主机主动避让机制处理后得到,后R个元素的内容是高优先级队列中前R个元素,通过这预留的R个元素在每一轮实际执行队列的执行循环中为执行高优先级任务的主机预留了R次占用I2C总线的机会,使得执行高优先级任务的主机能够在较短的时间内有机会再次获得I2C总线控制权,从而保证了高优先级的任务处理的及时性。当高优先级的主机实施一次I2C总线通信之后,如果认为自身还有紧急的任务需要处理,则按照先进先出(FIFO)的原则,将自身的序列号追加到高优先级队列的末尾。低优先级主机主动避让机制,是指一个主机获得I2C总线控制权并完成一次I2C通信之后,如果认为自己在短时间内不需要再次占用I2C总线本文档来自技高网...
一种<a href="http://www.xjishu.com/zhuanli/55/201610474481.html" title="一种具有优先级仲裁机制的I2C多机通信方法原文来自X技术">具有优先级仲裁机制的I2C多机通信方法</a>

【技术保护点】
一种具有优先级仲裁机制的多主机通信方法,其特征在于:将各个参与通信的主机定义进入占用总线的预分配队列、高优先级队列,并根据所述预分配队列和高优先级队列生成实际执行队列;在每轮实际执行队列的执行过程中,以预分配队列和高优先级队列为基础,通过高优先级主机固定占用机制和低优先级主机主动避让机制,动态生成下一轮实际执行队列,并按此循环执行。

【技术特征摘要】
1.一种具有优先级仲裁机制的多主机通信方法,其特征在于:将各个参与通信的主机定义进入占用总线的预分配队列、高优先级队列,并根据所述预分配队列和高优先级队列生成实际执行队列;在每轮实际执行队列的执行过程中,以预分配队列和高优先级队列为基础,通过高优先级主机固定占用机制和低优先级主机主动避让机制,动态生成下一轮实际执行队列,并按此循环执行。2.根据权利要求1所述的具有优先级仲裁机制的多主机通信方法,其特征在于:所述总线为I2C总线。3.根据权利要求2所述的具有优先级仲裁机制的多主机通信方法,其特征在于:所述预分配队列的元素个数为P,与实际参与I2C总线通信的主机的个数相等,其内容为各主机的序列号(SN),且各主机的序列号在预分配队列中的分配位置固定;所述高优先级队列的元素个数为Q,当一个主机实施一次I2C总线通信之后,如果认为自身还有紧急的任务需要处理,则按照先进先出(FIFO)的原则,将自身的序列号追加到高优先级队列的末尾;实际执行队列的元素个数为P+R,前P个元素的内容是将预分配队列的内容按照低优先级主机主动避让机制处理后得到,后R个元素的内容是高优先级队列中前R个元素。4.根据权利要求3所述的具有优先级仲裁机制的多主机通信方法,其特征在于:高优先级主机固定占用机制是指实际执行队列的后R个元素的内容是高优先级队列中前R个元素,各主机按照实际执行队列指定的顺序占用I2C总线,在实际执行队列每一轮的循环中为高优先级任务预留了占用I2C总线的机会,使得有高优先级任务的主机能够在较短的时间内再次获得I2C总线控制权。5.根据权利要求4所述的具有优先级仲裁机制的多主机通信方法,其特征在于:低优先级主机主动避让机制是指一个主机获得I2C总线控制权并完成一次I2C总线通信之后,如果认为自己在短时间内不需要再次占用总线,则将下一轮实际执行队列前P个元素中与自己对应的元素位置置为空元素,表明该主机下一轮不需要占用I2C总线。6.根据权利要求5所述的具有优先级仲裁机制的多主机通信方法,其特征在于:根据本轮实际执行队列中排定的顺序,各主机依次获得I2C总线控制权,完成一次I2C总线通信之...

【专利技术属性】
技术研发人员:杨智
申请(专利权)人:武汉光迅科技股份有限公司
类型:发明
国别省市:湖北;42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1