一种I2C通信的控制方法及装置与流程

文档序号:15850925发布日期:2018-11-07 09:54阅读:149来源:国知局
一种I2C通信的控制方法及装置与流程

本发明涉及通信技术领域,尤其涉及一种i2c通信的控制方法及装置。

背景技术

i2c(interintegratedcircuit,内部集成电路)总线是微电子通信控制领域广泛采用的一种总线标准,用于连接i2c主机和i2c从机。主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件。通常i2c总线上只存在一个主机。

随着电视功能的不断增加,电视的系统框架趋于复杂,一个完整功能的实现需要多个系统进行i2c数据通信。在该种架构下,会由于系统间通信状态的不协调导致数据异常。具体的,以图1所示的电视系统架构进行说明。该电视系统包括两个系统主系统和副系统:其中主系统用于实现电视主要逻辑并控制外围系统工作,其由系统级芯片soc(systemofchip)和微处理单元mcu(microcontrollerunit)组成,两者之间通过i2c进行通信,在其通信过程中,soc为主设备,mcu为从设备;副系统执行单一功能,其工作受soc下发的指令控制,如显示系统、声音系统,其由mcu和寄存器reg(register)组成,两者之间通过i2c进行通信,在其通信过程中,mcu为主设备,reg为从设备。在一些应用场景下如进行背光或画质调节时,会出现主副系统同时进行i2c通信的情形,此时mcu既为主设备又为从设备,从而导致soc从mcu读取参数出现异常,造成卡顿或状态错乱的现象,影响系统稳定性,从而影响用户体验。

因此,亟待一种方案来解决该技术问题。



技术实现要素:

第一方面,本发明实施例提供一种i2c通信的控制方法,包括:

当接收到第一系统的主设备进行i2c通信的请求时,判断所述第一系统中的从设备在第二系统中的通信状态,所述通信状态包括空闲和忙碌;

当所述通信状态为空闲时,进行所述i2c通信;当所述通信状态为忙碌时,延迟预设时间并再次判断所述第一系统中的从设备在第二系统中的通信状态。

在一种可能的实施方式中,所述判断所述第一系统中的从设备在第二系统中的通信状态之前,包括:

监测所述第一系统中的从设备在第二系统中的通信状态,并将所述通信状态以gpio引脚的高低电平进行标识,其中所述gpio设置于所述第一系统的主设备与从设备之间。

在一种可能的实施方式中,所述判断所述第一系统中从设备的通信状态之前,包括:

监测所述第一系统中的从设备在第二系统中的通信状态,并将所述通信状态以标志位的形式存储于寄存器或存储器中。

在一种可能的实施方式中,所述将所述通信状态以gpio引脚的高低电平进行标识包括:

当所述通信状态为空闲时,设置所述gpio的引脚电平为高电平;当所述通信状态为忙碌时,设置所述gpio的引脚电平为低电平;或,

当所述通信状态为空闲时,设置所述gpio的引脚电平为低电平;当所述通信状态为忙碌时,设置所述gpio的引脚电平为高电平。

在一种可能的实施方式中,所述判断所述第一系统中的从设备在第二系统中的通信状态,包括:

读取所述gpio的电平值,根据所述电平值判断所述第一系统中的从设备在第二系统中的通信状态。

在一种可能的实施方式中,所述判断所述第一系统中的从设备在第二系统中的通信状态,包括:

从所述寄存器或存储器中读取通信状态的标志位,根据所述标志位判断所述第一系统中的从设备在所述第二系统中的通信状态。

第二方面,本发明实施例提供了一种i2c通信的控制装置,包括:

判断模块,用于当接收到第一系统的主设备进行i2c通信的请求时,判断所述第一系统中的从设备在第二系统中的通信状态,所述通信状态包括空闲和忙碌;

第一处理模块,用于当所述通信状态为空闲时,进行所述i2c通信;

第二处理模块,用于当所述通信状态为忙碌时,延迟预设时间并再次判断所述第一系统中的从设备在第二系统中的通信状态。

在一种可能的实施方式中,所述装置包括标识模块,用于:

监测所述第一系统中的从设备在第二系统中的通信状态,并将所述通信状态以gpio引脚的高低电平进行标识,其中所述gpio设置于所述第一系统的主设备和从设备之间。

在一种可能的实施方式中,所述装置包括标识模块,用于:

监测所述第一系统中的从设备在第二系统中的通信状态,并将所述通信状态以标志位的形式存储于寄存器或存储器中。

在一种可能的实施方式中,所述标识模块用于:

当所述通信状态为空闲时,设置所述gpio的引脚电平为高电平;当所述通信状态为忙碌时,设置所述gpio的引脚电平为低电平;或,

当所述通信状态为空闲时,设置所述gpio的引脚电平为低电平;当所述通信状态为忙碌时,设置所述gpio的引脚电平为高电平。

在一种可能的实施方式中,所述判断模块用于:

读取所述gpio的电平值,根据所述电平值判断所述第一系统中的从设备在第二系统中的通信状态。

在一种可能的实施方式中,所述判断模块用于:

从所述寄存器或存储器中读取通信状态的标志位,根据所述标志位判断所述第一系统中的从设备在第二系统中的通信状态。

第三方面,提供了一种终端,其特征在于,包括:处理器、存储器;

所述处理器,用于读取所述存储器的程序,执行权利要求1至6中的任一项所述的方法。

第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机可执行的指令,所述计算机可执行指令用于使计算机执行权利要求1至6中的任一项所述的方法。

本发明提供的实施例中,通过当接收到第一系统的主设备进行i2c通信的请求时,判断第一系统中的从设备在第二系统中的通信状态,所述通信状态包括空闲和忙碌;当通信状态为空闲时,进行所述i2c通信;当通信状态为忙碌时,延迟预设时间并再次判断所述第一系统中的从设备在第二系统中的通信状态。实现了通过主系统中从设备的工作状态对采用至少一个i2c通信系统的终端设备通信逻辑的控制,避免了由于从设备状态忙碌导致的i2c读取/写入数据异常,进而避免了底层数据通信异常导致的上层软件显示异常的状况,提升了系统的稳定性,提升了用户体验。

附图说明

图1为本发明实施例提供的一种电视系统架构图;

图2为本发明实施例提供的另一种电视系统架构图;

图3为本发明实施例提供的一种i2c通信的控制方法流程示意图;

图4为本发明实施例提供的另一种i2c通信的控制方法流程示意图;

图5为本发明实施例提供的i2c通信的控制装置图;

图6为本发明实施例提供的计算机设备的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

本发明实施例适用于具用至少两个i2c通信系统的终端设备,该终端设备可以为智能电视、激光电视、智能广告牌、智能手机等,可以理解,本发明实施例对具体的终端设备不加限制。

为便于理解,在对本发明实施例进行详细地解释说明之前,先对本发明实施例的应用场景及涉及的技术问题进行详细介绍。

首先,对本发明实施例的应用场景进行介绍。

应用场景一:

对应本发明背景技术中的图1所示的电视系统框架,在此不再赘述。

应用场景二:

如图2所示,电视系统通过无线控制板外接音箱,soc通过i2c给无线控制板指令,无线控制板控制音箱的开关机、配对、静音、音量大小等状态,声音数据是由功放芯片发给控制板,控制板再发送给音箱。在实际工作时,无线控制板通过i2c读取存储器的配置信息,此时无线控制板为主设备,存储器为从设备,两者为本发明所述的副系统。soc发送i2c控制命令时,soc是主设备,无线控制板为从设备。在本发明的实施例中定义主系统用于实现电视主要逻辑并控制外围系统工作,副系统执行单一功能。由此,在本应用场景下,主系统由soc和无线控制板组成,副系统由无线控制板和存储器组成。

其次,对本发明涉及的技术问题进行详细介绍。具体的,以图1所示的电视系统架构结合亮度调节进行说明。

在图1所示的电视系统架构中,当用户进行亮度加一操作时,soc会先从显示系统的mcu读取当前亮度值(假设为5),之后将该数值加一并作为参数发送给mcu(即向mcu下达将亮度调为6的命令),mcu接到命令后会发送命令给寄存器reg,实现亮度调节。由于显示系统mcu会不定时读取系统工作状态(即mcu向reg发送i2c命令),所以导致mcu既作为soc的从设备,又作为reg的主设备。此时mcu会概率性响应超时,导致mcu读值失败或错误。当用户调节亮度时出现上述问题,就会导致获取的当前亮度值异常,例如实际亮度为6,但是获取到的亮度值却是30。之后会将31当做参数发给mcu调节亮度,造成电视亮度从6跳变到31,突然高亮。

因此需要合理协调主系统与副系统之间的通信逻辑状态。

图3是本发明实施例提供的一种i2c通信的控制方法流程示意图。该流程可在终端侧实现,具体的,可由终端实现或者由终端中的相关装置实现。如图3所示,该流程可包括:

s301:当接收到第一系统的主设备进行i2c通信的请求时,读取gpio引脚的电平值。

其中,gpio(generalpurposeinputoutput,通用输入/输出)位于第一系统的主设备和从设备之间,gpio引脚状态可以包括高电平和低电平两种状态,可分别以“0”或“1”分别表示,如以“0”表示高电平、以“1”表示低电平或以“1”表示高电平、以“0”表示低电平。根据gpio引脚的电平数值可判断第一系统的从设备当前通信状态是忙碌还是空闲。

可选择的,gpio引脚电平值的设置方式为:当检测到第二系统的主设备与从设备的i2c通信时,该第二系统的主设备会将gpio引脚的电压拉高,用于表示当前第二系统的主设备的当前通信状态为忙碌;当该第二系统的主设备与第二系统的从设备的i2c通信结束后,会将gpio引脚的电压拉低,用于表示该第二系统的主设备当前的通信状态为空闲。由于第二系统的主设备为第一系统的从设备,由此可知第一系统的从设备的当前通信状态,继而决定第一系统是否可进行i2c通信。

在第一种可能的实施方式中,gpio引脚电平值的设置方式为:当检测到第二系统的主设备与从设备的i2c通信时,该第二系统的主设备会将gpio引脚的电压拉高,用于表示当前第二系统的主设备的当前通信状态为忙碌;当该第二系统的主设备与第二系统的从设备的i2c通信结束后,会将gpio的引脚电压拉低,用于表示该第二系统的主设备当前的通信状态为空闲。由于第二系统的主设备为第一系统的从设备,由此可知第一系统的从设备的当前通信状态,继而决定第一系统是否可进行i2c通信。

在第二种可能的实施方式中,gpio引脚电平值的设置方式为:当检测到第二系统的主设备与从设备的i2c通信时,该第二系统的主设备会将gpio引脚的电压拉低,用于表示当前第二系统的主设备的当前通信状态为忙碌;当该第二系统的主设备与第二系统的从设备的i2c通信结束后,会将gpio引脚的电压拉高,用于表示该第二系统的主设备当前的通信状态为空闲。由于第二系统的主设备为第一系统的从设备,由此可知第一系统的从设备的当前通信状态,继而决定第一系统是否可进行i2c通信。

s302:判断该电平值所指示的第一系统的从设备的通信状态。

若以“0”或“1”分别表示gpio引脚状态为高电平和低电平。

在一种可能的实施方式中,若读取gpio引脚的电平值为0,表示gpio引脚电平为高电平,对应gpio引脚电平值设置方式的第一种可能实施方式,则表示第一系统的从设备当前通信状态为忙碌;对应gpio引脚电平值设置方式的第二种可能实施方式,则表示第一系统的从设备当前通信状态为空闲。

相应的,若读取gpio引脚的电平值为1,表示gpio引脚电平为低电平,对应gpio引脚电平值设置方式的第一种可能实施方式,则表示第一系统的从设备当前通信状态为空闲;对应gpio引脚电平值设置方式的第二种可能实施方式,则表示第一系统的从设备当前通信状态为忙碌。

s303:当通信状态为空闲时,进行第一系统的i2c通信。

s304:当通信状态为忙碌时,延迟预设时间并再次判断该第一系统中的从设备在第二系统中的通信状态。

本发明的上述实施例中,通过当接收到第一系统的主设备进行i2c通信的请求时,读取gipo引脚的电平值,根据该电平值判断第一系统的主设备的通信状态;当通信状态为空闲时,进行所述i2c通信;当通信状态为忙碌时,延迟预设时间并再次判断所述第一系统中的从设备在第二系统中的通信状态。实现了通过主系统中从设备的工作状态对采用至少一个i2c通信系统的终端设备通信逻辑的控制,避免了由于从设备状态忙碌导致的i2c读取/写入数据异常,进而避免了底层数据通信异常导致的上层软件显示异常的状况,提升了系统的稳性,提升了用户体验。

图4是本发明实施例提供的另一种i2c通信的控制方法流程示意图。该流程可在终端侧实现,具体的,可由终端实现或者由终端中的相关装置实现。如图4所示,该流程可包括:

s401:当接收到第一系统的主设备进行i2c通信的请求时,读取第一系统中的从设备在第二系统中的通信状态标识。

其中,通信状态可以标志位的形式存储于寄存器或存储器中。示例性的,若第一系统中的从设备在第二系统中的通信状态为忙碌,则在寄存器指定位置写1;若第一系统中的从设备在第二系统中的通信状态为空闲,则在寄存器指定位置写0。当接收到第一系统的主设备进行i2c通信的请求时,从寄存器的指定位置读取第一系统的从设备的通信状态的标识。

第一系统的从设备为第二系统的主设备,通过第二系统是否进行i2c通信即可判断第一系统的从设备在第二系统中的通信状态。具体的,当检测到第二系统的主设备与从设备的i2c通信时,则在寄存器指定位置写1,当检测到第二系统的主设备与从设备结束i2c通信时,则在寄存器指定位置写0。

s402:判断该标识指示的第一系统的从设备的通信状态。

s403:当通信状态标识表示为空闲时,进行第一系统的i2c通信。

s404:当通信状态标识表示为忙碌时,延迟预设时间并再次判断该第一系统中的从设备在第二系统中的通信状态。

本发明的上述实施例中,通过当接收到第一系统的主设备进行i2c通信的请求时,读取第一系统中的从设备在第二系统中的通信状态标识。当通信状态标识表示为空闲时,进行所述i2c通信;当通信状态标识表示为忙碌时,延迟预设时间并再次判断所述第一系统中的从设备在第二系统中的通信状态。实现了通过主系统中从设备的工作状态对采用至少一个i2c通信系统的终端设备通信逻辑的控制,避免了由于从设备状态忙碌导致的i2c读取/写入数据异常,进而避免了底层数据通信异常导致的上层软件显示异常的状况,提升了系统的稳性,提升了用户体验。

可以理解的是,本发明实施例为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。结合本发明中所公开的实施例描述的各示例的单元(器、器件)及算法步骤,本发明实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同的方法来实现所描述的功能,但是这种实现不应认为超出本发明实施例的技术方案的范围。

本发明实施例可以根据上述方法示例对执行上述方法的装置进行功能单元(器、器件)的划分,例如,可以对应各个功能划分各个功能单元(器、器件),也可以将两个或两个以上的功能集成在一个处理单元(器、器件)中。上述集成的单元(器、器件)既可以采用硬件的形式实现,也可以采用软件功能单元(器、器件)的形式实现。需要说明的是,本发明实施例中对单元(器、器件)的划分是示意性的,仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

在采用集成的单元(器、器件)的情况下,图5给出了本发明实施例提供的一种i2c通信的控制装置。参见图5,该装置包括:

判断模块501,用于当接收到第一系统的主设备进行i2c通信的请求时,判断第一系统中的从设备在第二系统中的通信状态。

其中,通信状态包括空闲和忙碌。

第一处理模块502,用于当通信状态为空闲时,进行所述i2c通信。

第二处理模块503,用于当通信状态为忙碌时,延迟预设时间并再次判断第一系统中的从设备在第二系统中的通信状态。

在一种可能的实施方式中,该装置包括标识模块,用于:

监测第一系统中的从设备在第二系统中的通信状态,并将该通信状态以gpio引脚的高低电平进行标识,其中述gpio设置于第一系统的主设备与从设备之间。

具体的,该标识模块用于:

当通信状态为空闲时,设置gpio的引脚电平为高电平;当通信状态为忙碌时,设置gpio的引脚电平为低电平;或,

当通信状态为空闲时,设置gpio的引脚电平为低电平;当通信状态为忙碌时,设置gpio的引脚电平为高电平。

具体的,判断模块用于:

读取gpio引脚的电平值,根据电平值判断第一系统中的从设备在第二系统中的通信状态。

在另一种可能的实施方式中,该装置包括标识模块,用于:

监测第一系统中的从设备在第二系统中的通信状态,并将该通信状态以标志位的形式存储于寄存器或存储器中。

具体的,判断模块用于:

从寄存器或存储器中读取通信状态的标志位,根据该标志位判断所述第一系统中的从设备在第二系统中的通信状态。

图6示出了本申请实施例提供的计算机设备600的结构示意图,即示出了i2c通信的控制装置600的另一结构示意图。参阅图6所示,计算机设备500包括处理器601、网络接口602。其中,处理器601也可以为控制器。所述处理器601被配置为支持i2c通信的控制装置500执行图3或图4中涉及的功能。网络接口602被配置为i2c通信的控制装置500收发消息的功能。计算机设备600还可以包括存储器603,存储器603用于与处理器601耦合,其保存该设备必要的程序指令和数据。其中,处理器601、网络接口602和存储器603相连,该存储器603用于存储指令,该处理器601用于执行该存储器603存储的指令,以控制网络接口602收发消息,完成上述方法中i2c通信的控制装置500执行相应功能的步骤。

本申请实施例中,i2c通信的控制装置500以及计算机设备600所涉及的与本申请实施例提供的技术方案相关的概念,解释和详细说明及其他步骤请参见前述方法或其他实施例中关于这些内容的描述,此处不做赘述。

需要说明的是,本申请实施例上述涉及的处理器可以是中央处理器(centralprocessingunit,cpu),通用处理器,数字信号处理器(digitalsignalprocessor,dsp),专用集成电路(application-specificintegratedcircuit,asic),现场可编程门阵列(fieldprogrammablegatearray,fpga)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,dsp和微处理器的组合等等。其中,所述存储器可以集成在所述处理器中,也可以与所述处理器分开设置。

本申请实施例还提供一种计算机存储介质,用于存储一些指令,这些指令被执行时,可以完成前述i2c通信的控制装置所涉及的任意一种方法。

本申请实施例还提供一种计算机程序产品,用于存储计算机程序,该计算机程序用于执行上述方法实施例中涉及的媒体播放方法。

本领域内的技术人员应明白,本申请实施例可提供为方法、系统、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请实施例是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

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