用于多从机系统的I2C总线主机优化传输方法及装置与流程

文档序号:17536838发布日期:2019-04-29 14:04阅读:320来源:国知局
用于多从机系统的I2C总线主机优化传输方法及装置与流程

本发明涉及一种用于多从机系统的i2c总线主机优化传输方法及装置。本发明的数据传输和数据处理的技术方案可以广泛应用于智能手表、耳机、vr头盔等包含多种传感器(比如重力感应、加速度)的电子产品中,或者其他采用i2c总线作为通讯协议的包括多个从机的产品。



背景技术:

i2c作为一种两线的总线协议,因其硬件连接和协议使用比较简单,而且能支持多主机从机的应用场景,从而被广泛应用于各种产品中。随着现代数字技术和各类传感器芯片的不断发展,芯片cpu需要实时访问的数据量不断增加。比如,在时下比较热门的vr头盔应用场景中,就存在以下设备需要和cpu进行实时数据交互:手持控制棒(重力传感器/磁感应传感器/温度感应传感器),头盔(摄像头传感器/加速度传感器),在这种场景中,cpu需要不断地访问这些传感器,以获取实时场景变化数据。

通常,为了简化设计,以及保证传感器和各家主控芯片的硬件兼容性,一般都采用i2c协议进行互连(一主机多从机的应用场景)。对以上多从机/传感器的实时数据获取,需要占用cpu很高的使用率,但除此之外,cpu还需要腾出一部分带宽给其他模块作数据处理,因此,优化cpu对i2c总线上多从机的数据访问时间分配,将能提供更多的带宽给其他模块进行数据处理,对系统应用场景提升用户体验有重要意义。



技术实现要素:

本发明提供一种用于多从机系统的i2c总线主机优化传输方法及装置,提高了传输效率和cpu利用率。

本发明的技术方案第一方面为一种用于多从机系统的i2c总线主机优化传输方法,包括以下步骤:

a、为多个从机分别提供硬件通道,其中每个通道允许接收参数及数据配置,该参数及数据配置包含起始位、结束位、地址和数据的配置;

b、按次序向多个所述的硬件通道进行参数及数据配置,配置完上一通道的参数及数据后立即配置下一通道的参数及数据,并且在处理当前通道的参数和数据配置时同步进行后续的一个或多个通道的参数及数据配置;

c、结束所有通道的数据传输后,返回所述步骤b以从所述的硬件通道执行下一轮的参数及数据配置,以及数据传输处理。

进一步,所述步骤a包括:

使每个硬件通道接收主机的时钟信号,并配置时钟信号的速率/数据信号采样方式;

使每个硬件通道独立地关联每个从机的数据传输和参数配置。

进一步,所述步骤b包括:发送开始位到硬件通道,接着进行该通道的地址和/或数据传输,然后发送结束位到该通道;并且在配置完上一通道的结束位后立即配置下一通道的起始位。进一步,所述步骤b还包括:完成当前通道的地址及数据传输,并且发送完停止位命令后,以触发中断的方式,自动切换发送下一通道的起始位命令。

进一步,所述步骤b包括:按照每个通道的优先级顺序,按次序执行该通道的参数及数据的配置和传输;

对于相同优先级的多个通道,则按照预设的通道次序执行该通道的参数及数据的配置和传输。

进一步,所述步骤c包括:

在每一轮循环中,如果遇到通道缺失,则跳过该缺失通道来执行下一个通道的参数及数据的配置和传输。

本发明的技术方案第二方面为一种计算机装置,包括存储器、处理器及储存在存储器上并能够在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法的步骤。

本发明的技术方案第三方面为一种用于多从机系统的i2c总线主机优化传输装置,包括:

逻辑控制模块,用于对主机进行复位和使能操作,对各个通道进行优先级配置管理,以及启动发送命令/数据,接收数据;

从机数据管理模块,包括为每个通道配备的数据写存储模块和数据读存储模块;

时钟管理模块,用于配置时钟速率以及数据的上升/下降沿采样参数;

中断管理模块,用于提供主机完成当前的地址/数据传输发送完停止位命令后所触发的中断。

进一步,该装置集成在i2c总线主机中,并且该主机内集成时钟和数据信号接口的上拉电阻。进一步,该装置被配置成执行上述方法的步骤。

本发明的有益效果为:

1)根据本发明的装置的硬件与现有技术兼容,而且,主机内集成内部上拉电阻,可以省掉传统硬件连接的外部上拉电阻,节省物料成本;

2)硬件支持多通道自动切换发送命令设计,减少cpu软件在i2c进程和其他进程的切换操作,提升了cpu的处理效率。这一点对于i2c多从机需要频繁访问,而其他模块又对cpu使用时间较长的应用场景有比较大的效率提升意义;从软件角度分析,无须等待硬件传输完当前通道数据即可立即配置其他通道的参数和数据;

3)多通道的优先级管理机制,减少软件对多从机的优先级管理介入,简化了软件流程。

附图说明

图1是i2c系统的连接结构示意框图。

图2是根据本发明的装置的示意框图。

图3是典型的i2c读写操作模式的示意图。

图4是图3中的“原子”操作的单独示意图。

图5是优化前后的i2c总线主机对多个从机的访问机制对比图。

图6是根据本发明的实施例中主机硬件多通道自动切换发送命令实施流程解析图。

图7是一个实施例中的多通道优先级管理示意图。

图8是另一个实施例中的多通道优先级管理示意图。

具体实施方式

以下将结合实施例和附图对本发明的构思、具体结构及产生的技术效果进行清楚、完整的描述,以充分地理解本发明的目的、方案和效果。

需要说明的是,在本公开中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。此外,除非另有定义,本文所使用的所有的技术和科学术语与本技术领域的技术人员通常理解的含义相同。本文说明书中所使用的术语只是为了描述具体的实施例,而不是为了限制本发明。本文所使用的术语“和/或”包括一个或多个相关的所列项目的任意的组合。应当理解,本文所提供的任何以及所有实例或示例性语言(“例如”、“如”等)的使用仅意图更好地说明本发明的实施例,并且除非另外要求,否则不会对本发明的范围施加限制。

i2c总线系统应用连接如图1所示(本文以八个从机作为范例,但应理解到可以由其他数量的从机构成i2c总线系统并且用来实施本发明的方案)。由于i2c总线协议采用od结构(漏极开路结构),因此主机内集成时钟(clk)和数据(dat)端口的上拉电阻,以省去外部硬件电路的上拉电阻。

i2c优化设计主机硬件结构如图2所示,包括以下模块:

1)逻辑控制模块:逻辑控制模块对主机进行复位和使能操作,对各个通道(以主机支持八个从机为例,主机端硬件设计相应支持八个通道)进行优先级配置管理,以及启动发送命令/数据,接收数据等操作。

2)从机数据管理模块:包括发送数据的写存储模块,接收数据的读存储模块(每个通道各一个,分别对应八个从机)。

3)时钟管理模块:主机在传输场景中发送时钟(clk),从机接收时钟(clk)。该模块管理时钟速率以及数据(dat)的上升/下降沿采样参数配置。

4)中断管理模块:主机完成当前的地址/数据传输,发送完停止位命令后,会触发中断。中断功能的使用能方便软件流程的操作。

在本发明的相关基础技术中,i2c主机对从机的读写操作模式见图3所示。该读写操作模式一般由地址访问/数据读写两种方式访问。i2c主机由1位位宽的起始位(s)开始,以1位的结束位(p)结束当前通讯。在i2c主从机访问过程中,存在一种“原子”操作(见图4所示)以起始位(s)和结束位(p)作为“原子”操作的边界。在传统的多从机系统中,对当前从机的“原子”操作过程不允许被其他从机访问打断,否则,当前从机“原子”操作则无法保证数据访问完整性。

现有i2c单主机多从机的访问处理如图5的上半部分所示。一般操作如下,cpu先对通道0进行参数和传输数据配置,再开启通道0的数据传输。接着,cpu再对通道1进行参数和传输数据配置,再开启通道1的数据传输……直至八个通道结束,然后又再返回通道0。以上传输过程,cpu对下一个通道的参数和传输数据配置,必须等待当前通道的“原子”传输结束后,才可以进行。

而在本发明的优化后的i2c主机设计中(如图5下半部分所示),由于根据本发明的装置设计存在八个通道数据管理模块(见图2),因此,从软件角度分析,cpu可以在配置完通道0的参数和传输数据后,就紧接着对其余七个通道进行参数和传输数据配置,主机硬件自动切换管理多通道的数据传输,提升cpu访问利用率。

i2c优化设计主机具有硬件多通道自动切换发送命令设计,以八个通道的具体执行流程结合图6通过下列步骤来描述。

1)主机cpu配置通道0的参数和数据;

2)主机逻辑控制模块和通道0数据管理模块发送start位(图6步骤①),接着进行通道0地址/数据传输(图6步骤②),最后发送结束位(p)(图6步骤③),与此同时,cpu同步进行其他通道的参数和数据配置;

3)主机发送完通道0的结束位(p)(图6步骤③)后,自动切换进行通道1的传输:逻辑控制模块和通道1数据管理模块发送起始位(s)(图6步骤④),接着传输通道1的地址/数据传输(图6步骤⑤),最后发送结束位(p)(图6步骤⑥);

4)类似的,为图示和描述方便,图6步骤⑦示意为逻辑控制模块和通道2-6数据管理模块依次对通道2-6进行start/地址数据/stop进行切换控制和传输;

5)在主机发送完通道6的结束位(p)后,自动切换进行通道7的传输:逻辑控制模块和通道7数据管理模块发送起始位(s)(图6步骤⑧),接着传输通道7的地址/数据传输(图6步骤⑨),最后发送结束位(p)(图6步骤⑩);

6)完成该轮次的通道0-7的地址/数据传输后,主机可以根据软件需要跳至步骤1)循环执行下一轮的硬件多通道自动切换命令。

这种处理方式存在的优点如下:在整个时间周期t中,虽然cpu的总操作时间不变,但通过硬件设计,cpu的操作行为集中在时间周期t的前半段,而后半段则令cpu有更多的空闲时间可以去处理其他软件进程的事务。而现有主机设计,cpu只有在两个通道之间的短暂空闲时间可用作其他软件进程处理,而且需要频繁切换i2c和其他软件进程的操作,cpu处理效率不高。优化设计主机由于节省了大部分通道cpu的参数和传输数据配置时间片,因而传输线上八个通道的总传输时间相比现有主机设计还要更短一些。

在优选的实施例中,根据本发明的装置还可以支持多通道优先级管理机制。主机逻辑控制模块可以管理八个通道的优先级,如图7所示(默认通道0优先级最高,通道7优先级最低,但软件可以根据实际需要进行配置)。优先级的一个管理例子如下:

1)默认优先级配置下,主机先对通道0进行操作,通道0数据管理模块传输地址/数据;

2)通道0操作完成后,按照预设优先级,接着对通道1进行操作,通道1数据管理模块传输地址/数据;

3)通道1操作完成后,按照预设优先级,对通道2进行操作,依次进行,直至通道7;

4)通道7操作完成后,该轮次优先级管理完成,主机继续跳回步骤1),执行下一轮次的循环操作。

多通道优先级管理机制还有一些比较灵活的应对实际场景和配置的处理机制:

1)比如,若实际应用场景中,某个通道从机不存在,则主机会跳过而不会卡死在该通道(如图8所示,通道2从机不存在,则主机不会卡死在通道2,会继续执行通道3操作);

2)假如两个通道的优先级配置成一样,则根据本发明的装置会按照0-7的顺序依次进行操作。比如,通道2和通道3的都配置成一样级别的优先级,则主机会优先处理通道2,再处理通道3。

在硬件多通道优先级管理机制的实例中,根据本发明的装置可以自动对cpu配置的参数和数据按照预设的通道优先级进行传输,无需软件介入管理。相比现有主机设计,简化了软件操作流程。

应当认识到,本发明的方法实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性计算机可读存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序还能够在编程的专用集成电路上运行。

此外,可按任何合适的顺序来执行本文描述的过程的操作,除非本文另外指示或以其他方式明显地与上下文矛盾。本文描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。所述计算机程序包括可由一个或多个处理器执行的多个指令。

进一步,所述方法可以在可操作地连接至合适的任何类型的计算平台中实现。本发明的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、ram、rom等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本文所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本发明所述的方法和技术编程时,本发明还包括计算机设备本身。

以上所述,只是本发明的较佳实施例而已,本发明并不局限于上述实施方式,只要其以相同的手段达到本发明的技术效果,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。在本发明的保护范围内其技术方案和/或实施方式可以有各种不同的修改和变化。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1