CN116048849B - 一种i2c总线的通信控制方法、装置、设备及存储介质 - Google Patents
一种i2c总线的通信控制方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN116048849B CN116048849B CN202210861654.8A CN202210861654A CN116048849B CN 116048849 B CN116048849 B CN 116048849B CN 202210861654 A CN202210861654 A CN 202210861654A CN 116048849 B CN116048849 B CN 116048849B
- Authority
- CN
- China
- Prior art keywords
- bus
- state
- moment
- idle state
- unstable
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000006854 communication Effects 0.000 title claims abstract description 62
- 238000004891 communication Methods 0.000 title claims abstract description 59
- 238000000034 method Methods 0.000 title claims abstract description 46
- 238000004590 computer program Methods 0.000 claims description 6
- 230000002159 abnormal effect Effects 0.000 description 25
- 238000013461 design Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 8
- 238000012360 testing method Methods 0.000 description 8
- 230000000903 blocking effect Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 208000033748 Device issues Diseases 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0745—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in an input/output transactions management context
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0793—Remedial or corrective actions
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Small-Scale Networks (AREA)
Abstract
本申请公开一种I2C总线的通信控制方法、装置、设备及存储介质,涉及通信技术领域。其中,接入I2C总线的设备具有非稳定状态,该方法包括:在第一时刻,控制I2C总线处于非空闲状态,第一时刻为设备进入非稳定状态的时刻,或者第一时刻早于设备进入非稳定状态的时刻。在第二时刻,控制I2C总线处于空闲状态,第二时刻为设备结束非稳定状态的时刻,或者第二时刻晚于设备结束非稳定状态的时刻。该方法通过控制I2C总线进入非空闲状态的时刻和控制I2C总线结束非空闲状态的时刻,使得在设备处于非稳定状态期间,I2C总线始终处于非空闲状态,将设备出现不稳定状态的时间与正常的通信时间避开,避免了I2C总线被卡死。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种I2C总线的通信控制方法、装置、设备及存储介质。
背景技术
I2C总线是由串行数据线(Serial Data,SDA)和串行时钟线(Serial Clock Line,SCL)构成的串行总线,可以发送和接收数据。在电子系统中,不同器件通过I2C信号线连接于I2C总线来传送信息,对于并联在一条总线上的每个IC都有唯一的地址。
如图1所示,I2C总线上的所有器件的SDA信号线并接在一起接入I2C总线的SDA信号线,所有器件的SCL信号线并接在一起接入I2C总线的SCL信号线,SDA信号线和SCL信号线分别通过上拉电阻R1、R2连接到正电源VDD。I2C总线中任何能够进行发送和接收数据的设备都可以成为I2C主设备(Master),其余设备称为I2C从设备(slave 1、slave 2……)。在任何时间点上,只允许一个I2C主设备存在。
当I2C总线上连接有多个设备应用时,多个设备在进行通信时,虽然有总线仲裁机制,但是当其中一个设备硬件出现不稳定状态时,可能会产生异常的电平信号,从而导致I2C总线电平异常,若此时主设备正在和从设备通信,那么该异常电平会导致数据出错,使得通信超时,甚至总线卡死,造成该功能模块无法正常使用。
发明内容
本申请提供一种I2C总线的通信控制方法、装置、设备及存储介质,该通信控制方法可以将挂载在I2C总线上设备出现不稳定状态的时间与正常的通信时间避开,避免I2C总线卡死。
为达到上述目的,本申请的实施例采用如下技术方案:
第一方面,提供一种I2C总线的通信控制方法,接入I2C总线的设备具有非稳定状态,该方法包括:
在第一时刻,控制I2C总线处于非空闲状态,第一时刻为设备进入非稳定状态的时刻,或者第一时刻早于设备进入非稳定状态的时刻。
在第二时刻,控制I2C总线处于空闲状态,第二时刻为设备结束非稳定状态的时刻,或者第二时刻晚于设备结束非稳定状态的时刻。
在此基础上,通过控制I2C总线进入非空闲状态的时刻早于或者等于设备进入非稳定状态的时刻,控制I2C总线处于空闲状态(也即控制I2C总线结束非空闲状态)的时刻晚于或者等于设备结束非稳定状态的时刻,使得在设备处于非稳定状态期间,I2C总线始终处于非空闲状态,将设备出现不稳定状态的时间与正常的通信时间避开,避免了I2C总线被卡死。
在第一方面的一种可能的设计方式中,在控制I2C总线处于非空闲状态之前,还包括:
获取设备的非稳定状态信息,非稳定状态信息包括设备进入非稳定状态的时刻,以及设备处于非稳定状态的第一时长。
在此基础上,通过获取设备的非稳定状态信息,可以获知设备进入非稳定状态的时刻。以便控制I2C总线进入非空闲状态的时刻。通过获取设备处于非稳定状态的第一时长,可以根据设备进入非稳定状态的时刻以及设备处于非稳定状态的第一时长,得到设备结束非稳定状态的时刻,以便控制I2C总线结束非空闲状态(也即进入空闲状态)的时刻。在实际应用中,也可以通过获知设备进入和结束非稳定状态的时刻,根据设备进入和结束非稳定状态的时刻得出设备处于非稳定状态的第一时长。
在第一方面的一种可能的设计方式中,非稳定状态包括:设备的上电状态、下电状态和复位状态。
在第一方面的一种可能的设计方式中,还包括:通过设置I2C总线的状态标志,指示I2C总线处于空闲状态或者非空闲状态。该设计方式示出了一种控制I2C总线处于空闲状态或者非空闲状态的具体方式。
在第一方面的一种可能的设计方式中,包括:将状态标志设置为“0”,指示I2C总线处于空闲状态,将状态标志设置为“1”,指示I2C总线处于非空闲状态。或者,将状态标志设置为“1”,指示I2C总线处于空闲状态,将状态标志设置为“0”,指示I2C总线处于非空闲状态。
第二方面,提供一种I2C总线的通信控制装置,其中,接入I2C总线的设备具有非稳定状态,包括:
控制单元,用于在第一时刻,控制I2C总线处于非空闲状态,第一时刻为设备进入非稳定状态的时刻,或者第一时刻早于设备进入非稳定状态的时刻。
在第二时刻,控制I2C总线处于空闲状态,第二时刻为设备结束非稳定状态的时刻,或者第二时刻晚于设备结束非稳定状态的时刻。
在第二方面的一种可能的设计方式中,该装置还包括:
获取单元,用于获取设备的非稳定状态信息,非稳定状态信息包括设备进入非稳定状态的时刻,以及设备处于非稳定状态的第一时长。
在第二方面的一种可能的设计方式中,非稳定状态包括:设备的上电状态、下电状态和复位状态。
在第二方面的一种可能的设计方式中,还包括:
状态标志存储单元,用于存储表示I2C总线当前状态的I2C总线状态标志。设置I2C总线状态标志,指示I2C总线处于空闲状态或者非空闲状态。
在第二方面的一种可能的设计方式中,设置I2C总线状态标志,指示I2C总线处于空闲状态或者非空闲状态,包括:
将状态标志设置为“0”,指示I2C总线处于空闲状态,将状态标志设置为“1”,指示I2C总线处于非空闲状态。或者,将状态标志设置为“1”,指示I2C总线处于空闲状态,将状态标志设置为“0”,指示I2C总线处于非空闲状态。
第三方面,提供一种I2C总线的通信控制设备,包括:存储器,用于存储指令,指令包括第一方面及其任一种可能的设计方式所提供的通信控制方法的步骤;
处理器,用于执行指令。
第四方面,提供一种存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如第一方面及其任一种可能的设计方式所提供的通信控制方法的步骤。
可以理解地,上述提供的第二方面所提供的I2C总线的通信控制装置、第三方面所提供的I2C总线的通信控制设备以及第四方面所提供的存储介质所能达到的有益效果,可参考如第一方面及其任一种可能的设计方式中的有益效果,此处不再赘述。
附图说明
图1为本申请实施例提供的一种I2C总线的连接示意图;
图2为本申请实施例提供的一种I2C总线从开始通信到结束通信的过程中的时序波形图;
图3为本申请实施例提供的一种I2C总线在通信过程中的异常时序波形图;
图4为本申请实施例提供的一种I2C总线的通信控制方法的流程图;
图5为本申请实施例提供的一种I2C总线的通信控制方法的时间图;
图6为本申请实施例提供的一种I2C总线的通信控制装置的结构示意图;
图7为本发明实施例提供的一种I2C总线的通信控制设备的结构示意图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
在本申请的实施例中,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。
应理解,在本文中对各种所述示例的描述中所使用的术语只是为了描述特定示例,而并非旨在进行限制。如在对各种所述示例的描述中所使用的那样,单数形式“一个(“a”,“an”)”和“该”旨在也包括复数形式,除非上下文另外明确地指示。
本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
还应理解,本文中所使用的术语“和/或”是指并且涵盖相关联的所列出的项目中的一个或多个项目的任何和全部可能的组合。术语“和/或”,是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本申请中的字符“/”,一般表示前后关联对象是一种“或”的关系。
还应理解,在本申请中,除非另有明确的规定和限定,术语“连接”应做广义理解,例如,“连接”可以是固定连接,也可以是滑动连接,还可以是可拆卸连接,或成一体等;可以是直接相连,也可以通过中间媒介间接相连。
还应理解,术语“包括”(也称“includes”、“including”、“comprises”和/或“comprising”)当在本说明书中使用时指定存在所陈述的特征、整数、步骤、操作、元素、和/或部件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元素、部件、和/或其分组。
应理解,说明书通篇中提到的“一实施例”、“另一实施例”、“一种可能的设计方式”意味着与实施例或实现方式有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在本申请一实施例中”或“在本申请另一实施例中”、“一种可能的设计方式”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。
为了便于理解本申请的技术方案,在撰写本申请实施例前,先对与本申请技术方案相关的技术背景,即电子设备中I2C总线发生卡死的原理进行简单的介绍。
I2C总线是由串行数据线(Serial Data,SDA)和串行时钟线(Serial Clock Line,SCL)构成的串行总线,可以发送和接收数据,时钟信号是由主设备产生。在电子系统中,不同器件通过I2C信号线连接于I2C总线来传送信息,对于并联在一条总线上的每个IC都有唯一的地址。
如图1所示,I2C总线上的所有器件的SDA信号线并接在一起接入I2C总线的SDA信号线,所有器件的SCL信号线并接在一起接入I2C总线的SCL信号线,SDA信号线和SCL信号线分别通过上拉电阻R1、R2连接到正电源VDD。I2C总线中任何能够进行发送和接收数据的设备都可以成为I2C主设备(Master),其余设备称为I2C从设备(slave 1、slave 2……)。在任何时间点上,只允许一个I2C主设备存在。
I2C总线的空闲状态表现为SDA信号和SCL信号都一直保持高电平状态。连到I2C总线上的任一器件输出的低电平,都将使I2C总线的信号变低,即各器件的SDA信号及SCL信号都是线“与”关系。这不仅可以将多个节点器件按同名端引脚直接挂在SDA信号线、SCL信号线上,还使I2C总线具备了“时钟同步”,确保不同工作速度的器件同步工作。
IC总线在传送数据过程中共有三种类型信号,它们分别是:开始信号、结束信号和应答信号。
开始信号:SCL为高电平时,SDA由高电平转变为低电平跳变,表示开始通信。
结束信号:SCL为高电平时,SDA由低电平转变为高电平跳变,表示结束通信。
应答信号:接收数据的IC在接收到一个字节数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。
开始和结束信号都是由主机发出的,应答信号是由从机发出的,开始和结束通信过程的时序如图2所示。
在实际通信时,I2C总线进行数据传送时,时钟线SCL上的信号为高电平期间,数据线SDA上的数据必须保持稳定,只有在时钟线SCL上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化,且只有SCL信号为高电平时传输的数据才有效。
I2C总线上连接有多个设备,每个设备均可以通过I2C总线进行数据通信,若多个设备在同一时刻都需要通过I2C总线进行通信,则I2C总线的仲裁机制可以解决多个设备间的同时通信问题。但是由于I2C总线上连接有多个设备,当其中一个设备硬件出现非稳定状态时,可能会产生异常的电平信号,从而可能导致I2C总线的电平异常,若此时主设备正在和从设备通信,那么该异常电平会导致数据出错,使得通信超时,甚至总线卡死,造成该功能模块无法正常使用。
参考图3,图3为本申请实施例提供的一种I2C总线在通信过程中的异常时序波形图。在主设备与从设备正常通信时,一般的流程为:
第一部分:主设备下发从设备的I2C地址和要读数据的地址,然后主设备会将I2C总线中的SCL拉到低电平并保持一段时间,给从设备准备数据的时间;第二部分:主设备将I2C总线中的SCL拉回到高电平,并发出开始信号,以读取准备好的数据;再次发送从设备的地址,并接收从设备发来的数据。
图3所示的场景发生于主设备正在进行写操作的前半部分的寻址,也即上述的第一部分中。具体的,主设备正通过I2C总线与I2C总线上的某一从设备进行通信,并处于上述的第一部分过程中,此时,连接在I2C总线上的某一设备(例如,为屏幕背光供电芯片)正处于非稳定状态(例如,屏幕背光供电芯片处于上电状态),其中,非稳定状态包括设备的上电状态、下电状态以及复位状态等。在屏幕背光供电芯片的上电过程中,由于其硬件本身出现的非稳定状态,产生了一个异常的下拉尖脉冲信号(图3中的异常信号),导致正在进行数据传输的SDA上的信号突然从高电平信号变为低电平信号,该下拉尖脉冲信号触发了I2C通信总线的结束条件,I2C总线中的SDA和SCL均被拉到高电平。由于下拉尖脉冲触发的异常结束,会导致写操作错误,导致异常退出。退出后仍会完成第一部分中的拉低操作,即主设备将SCL的电平拉到低电平。但是,由于异常信号的产生提前触发了结束条件,无法进行第二部分的操作,即主设备无法将SCL的电平拉回到高电平,此时SCL一直处于低电平状态,处于一直占用I2C总线的状态,但是并没有通信数据传输,使得I2C总线一直处于通信等待状态,其它设备也无法使用I2C总线,导致I2C总线卡死。
为了解决现有技术中,I2C总线上挂载的设备出现非稳定状态时,所产生的异常电平信号导致I2C总线卡死的问题。本申请实施例提供一种I2C总线的通信控制方法,可以将挂载在I2C总线上设备出现不稳定状态的时间与正常的通信时间避开,避免I2C总线卡死。
参考图4,图4为本申请实施例提供的一种I2C总线的通信控制方法的流程图。该方法可以应用于图3所示的场景。
步骤S401:获取设备的非稳定状态信息,非稳定状态信息包括设备进入非稳定状态的时刻,以及设备处于非稳定状态的第一时长。
在实际应用中,I2C总线上一般会连接有多个设备,每个设备都会涉及到上电、下电和复位等操作,其中,某些设备在进行这些操作时,会产生异常信号。因此,将设备产生异常信号的时间段内的状态称为非稳定状态。
对于I2C总线上连接的所有设备,可以通过测试获取这些设备出现非稳定状态时的非稳定状态信息。例如,在实际应用中,发现图1中的从设备1(slave1)、从设备2(slave2)会出现非稳定状态,那么可以通过测试获得从设备1和从设备2在哪些场景下会出现非稳定状态。
示例性的,当I2C总线上的从设备1为屏幕背光供电芯片时,屏幕背光供电芯片会在上电、下电或复位时产生异常信号。由于屏幕背光供电芯片的上电、下电和复位是通过控制器进行控制的,因此,可以通过测试获取该屏幕背光供电芯片上电、下电和复位操作的开始时间,或者可以直接通过控制器获取其进行上电、下电和复位操作的开始时间,并且可以通过测试获取屏幕背光供电芯片上电状态、下电状态或复位状态的持续时间。当I2C总线上的从设备2为PD芯片时,PD芯片在上电和下电时也会产生异常信号。可以通过测试获取其上电和下电的开始时间,以及上电和下电过程的持续时间。也即,本申请实施例中,可以通过测试获取设备处于非稳定状态时的非稳定状态信息。其中,非稳定状态信息包括该设备进入非稳定状态的开始时刻,以及该设备处于非稳定状态的持续时间(第一时长)。
连接在I2C总线上的所有设备的非稳定状态都可以通过测试得出,并且可以通过测试得到每个设备的非稳定状态信息,这些设备的非稳定状态信息可以作为预存信息输入到具有该I2C总线的终端设备内。当该终端设备中的I2C总线需要工作时,在使用I2C总线前,终端设备内与I2C总线相连的控制芯片会获取I2C总线上所有设备的非稳定状态信息,非稳定状态信息中包括了具有非稳定状的设备进入非稳定状态的时刻,以及具有非稳定状的设备处于非稳定状态的持续时间(第一时长)。
步骤S402:在第一时刻,控制I2C总线处于非空闲状态。
在I2C总线处于工作状态时,控制芯片根据获取到的非稳定状态信息,可以确定具有非稳定状态的设备,以及这些设备进入非稳定状态的时刻信息,当这些设备即将进入非稳定状态时刻,或者在这些设备进入非稳定状态的时刻之前,控制I2C总线处于非空闲状态。
当I2C处于工作状态时,控制芯片会根据所获取到的非稳定状态信息控制I2C总线的状态。示例的,如图5所示,图5为本申请实施例提供的一种I2C总线的通信控制方法的时间图。控制芯片获取到了从设备1(slave1)和从设备2(slave2)的非稳定状态信息,其中,从设备1进入非稳定状态的时刻为t1,从设备2进入非稳定状态的时刻为t2。I2C总线处于正常的工作状态,当到达t1时刻时,也即从设备1即将进入到非稳定状态,若此时I2C总线处于正常工作状态,则从设备1进入到非稳定状态时会产生异常信号,可能导致I2C总线卡死。因此,在第一时刻(t1时刻或者t1时刻之前),控制芯片控制I2C总线处于非空闲状态,此时,I2C总线上的设备无法通过I2C总线进行数据传输,并保持非空闲状态的持续时间为第二时长,直至从设备1的非稳定状态结束。
同理,当到达t2时刻时,意味着从设备2即将进入到非稳定状态,因此,在第一时刻(t2时刻或者t2时刻之前),控制芯片也会控制I2C总线处于非空闲状态,并保持非空闲状态的持续时间为第二时长,直至从设备1的非稳定状态结束。此时I2C总线不进行数据传输,避免设备在非稳定状态下所产生的异常信号导致I2C总线被卡死。
需要说明的是,本申请实施例中的I2C总线处于非空闲状态,是指I2C总线在此状态下无法被其它设备调用,也即,I2C总线在此状态下处于无法工作状态。具体可以通过物理方式实现,也可以通过软件方式来实现。
在步骤S402中,本申请实施例中采用软件的方式来实现控制I2C总线处于非空闲状态。例如,可以通过软件的方式为I2C总线设置一个状态标志,该状态标志可以存储在状态标志存储单元中,状态标志存储单元可以是寄存器之类的存储器。具体的,该状态标志可以通过定义一位寄存器的值来实现。例如定义寄存器的值为“1”(也可以为“0”)时,表示I2C总线的状态为非空闲状态;定义寄存器的值为“0”(也可以为“1”)时,表示I2C总线的状态为空闲状态(与下文提到的控制I2C总线处于空闲状态有关),当然,也可以通过定义其它值来表示I2C总线为空闲状态或者非空闲状态,本申请实施例对此并不做限制。下面以定义寄存器的值为“0”时,表示I2C总线的状态为空闲状态,定义寄存器的值为“1”时,表示I2C总线的状态为非空闲状态为例进行介绍。
在正常工作状态下,可以默认I2C总线的状态为空闲状态,寄存器的值为“0”,此时I2C总线上的所有设备都可以按照I2C总线协议正常使用I2C总线。当I2C总线上的某一个设备即将进入非稳定状态时,控制芯片可以根据获取到的非稳定状态信息获取其进入非稳定状态的时刻,然后将寄存器的值更新为“1”,指示I2C总线处于非空闲状态(即,将I2C总线状态标志由空闲状态更新为非空闲状态)。
本申请实施例中的第二时长为第二时刻与第一时刻之间的时间差,具体可以根据设备处于非稳定状态的时长进行确定,可以设置第二时长大于或者等于任意一个设备处于非稳定状态下的时长。例如从设备1的非稳定状态的持续时间为200us,从设备2的非稳定状态的持续时间为300us,则可以设置第二时长为1ms,第二时长所在的时间段需包含设备处于非稳定状态的时间段,以保证在任意一个设备处于非稳定状态时,I2C总线是处于非空闲状态,避免处于非稳定状态的设备产生异常信号导致I2C总线被卡死。
步骤S403:在第二时刻,控制所述I2C总线处于空闲状态。
在第二时刻,也即一个设备的非稳定状态结束之后,以及下一个设备的非稳定状态开始之前,I2C总线上的设备处于稳定状态,因此在这段时间内,I2C总线可以进行正常通信。第二时刻可以为设备结束非稳定状态的时刻,或者第二时刻也可以晚于设备结束非稳定状态的时刻。由于I2C总线在第二时刻才进入空闲状态,也即在第二时刻之前,I2C总线呈非空闲状态。I2C总线在第一时刻进入非空闲状态,每次进入非空闲状态的持续时间为第二时长,因此当持续时间到达第二时长时,表明I2C总线的非空闲状态结束,此时控制I2C总线处于空闲状态,以便I2C总线上的设备进行正常的通信。
如上述内容所介绍,可以通过控制寄存器的值来控制I2C总线的状态标志。
当I2C总线在某一时刻进入非空闲状态后,此时寄存器内的值为“1”,I2C总线保持该状态的时间为第二时长。由于第二时长不小于第一时长,在第二时长到达的第二时刻,I2C总线保持非空闲状态的时间已达到要求,此时I2C总线上的设备均处于正常状态。因此,控制芯片将寄存器的值更新为“0”,指示I2C总线处于空闲状态(即,将I2C总线状态标志由非空闲状态更新为空闲状态),I2C总线上的设备可以正常地调用I2C总线进行通信。
在I2C总线上有多个设备具有非稳定状态出现的情况下,按照每个设备出现非稳定状态的时间先后顺序,依次进行上述步骤S402和步骤S403。下面,以I2C总线上有两个设备会出现非正常状态为例进行说明。
示例的,如图5所示,控制芯片获取到了从设备1(slave1)和从设备2(slave2)的非稳定状态信息,其中,从设备1进入非稳定状态的时刻为t1,从设备2进入非稳定状态的时刻为t2;从设备1结束非稳定状态的时刻为t3,从设备2结束非稳定状态的时刻为t4,其中,其中t1时刻早于t3时刻,t3时刻早于t2时刻,t2时刻早于t4时刻。也即,从设备1的非稳定状态持续时间为t3-t1,从设备2的非稳定状态持续时间为t4-t2。
在从设备1和从设备2进入非稳定状态前,I2C总线处于正常的工作状态,此时寄存器内的值为“0”。当到达第一时刻(t1时刻)时,从设备1即将进入到非稳定状态,控制芯片根据已获取到从设备1的非稳定状态信息,将寄存器的值更新为“1”,指示I2C总线处于非空闲状态,控制芯片将控制I2C总线保持该状态的时间为第二时长。当到达t3时刻),从设备1的非稳定状态即将结束,从设备1的非稳定状态不会影响I2C总线的正常工作。由于I2C总线需要保持非稳定状态的时间为第二时长,因此I2C总线将在第二时刻(t5时刻)结束非空闲状态,其中,t5=t1+Δt,Δt为第二时长。由于第二时长大于或者等于第一时长,即Δt≥t3-t1,也即t5时刻为t3时刻,或者在t3时刻之后。因此,在I2C总线从t1时刻进入非正常工作状态,并保持至t5时刻,此时从设备1已结束非稳定状态,I2C总线保持非空闲状态的时间已达到要求,此时I2C总线上的设备均处于正常状态。因此,控制芯片将寄存器的值更新为“0”,指示I2C总线处于空闲状态,I2C总线上的设备可以正常地调用I2C总线进行通信。
当到达第一时刻(t2时刻或者早于t2时刻)时,从设备2即将进入到非稳定状态,控制芯片根据已获取到从设备2的非稳定状态信息,将寄存器的值更新从“0”更新为“1”,指示I2C总线处于非空闲状态,控制芯片并控制I2C总线保持该状态的时间为第二时长。当到达t4时刻后,从设备2的非稳定状态即将结束,从设备2的非稳定状态不会影响I2C总线的正常工作。由于I2C总线需要保持非稳定状态的时间为第二时长,因此I2C总线将在第二时刻(t6时刻)结束非空闲状态,其中,t6=t2+Δt,Δt为第二时长。由于第二时长大于或者等于第一时长,即Δt≥t4-t2,也即t6时刻为t4时刻,或者在t4时刻之后。因此,在I2C总线从t2时刻进入非正常工作状态,并保持至t6时刻,此时从设备2已结束非稳定状态,I2C总线保持非空闲状态的时间已达到要求,此时I2C总线上的设备均处于正常状态。因此,控制芯片将寄存器的值更新为“0”,指示I2C总线处于空闲状态,I2C总线上的设备可以正常地调用I2C总线进行通信。
当有多个设备具有非稳定状态时,重复上述步骤S402和步骤S403,使得每个设备进入非稳定状态的时间段内,I2C总线的状态均保持非空闲状态,在I2C总线的状态为空闲状态时,每个设备均处于稳定状态。将设备的非稳定状态与I2C总线的空闲状态避开,即在I2C总线上任意一个设备的非稳定状态内时不进行I2C通信,从而避免设备进入非稳定状态后,产生的异常信号对正在工作的I2C总线产生影响,导致I2C总线卡死。
图6为本申请实施例提供的一种I2C总线的通信控制装置的结构示意图。如图6所示,本申请实施例提供的I2C总线的通信控制装置包括:
获取单元,用于获取设备的非稳定状态信息,非稳定状态信息包括设备进入非稳定状态的时刻,以及设备处于非稳定状态的第一时长;
控制单元,用于在第一时刻,控制I2C总线处于非空闲状态,第一时刻为设备进入非稳定状态的时刻,或者第一时刻早于设备进入非稳定状态的时刻;
在第二时刻,控制I2C总线处于空闲状态,第二时刻为设备结束非稳定状态的时刻,或者第二时刻晚于设备结束非稳定状态的时刻。
此外,还包括:
状态标志存储单元,用于存储表示I2C总线当前状态的I2C总线状态标志;
控制单元按照预设规则更新状态标志存储单元中存储的I2C总线状态标志。
其中,按照预设规则更新状态标志存储单元中存储的I2C总线状态标志是指:在第一时刻,控制单元将状态标志存储单元中的I2C总线状态标志更新为“1”(或者“0”);在第二时刻,控制单元将状态标志存储单元中的I2C总线状态标志更新为“0”(或者“1”)。
由于装置部分的实施例与方法部分的实施例相互对应,因此,装置部分的实施例请参见方法部分的实施例的描述,此处暂不赘述。
图7为本发明实施例提供的一种I2C总线的通信控制设备的结构示意图。如图7所示,本发明实施例提供的一种I2C总线的通信控制设备包括:
存储器710,用于存储指令,所述指令包括上述任意一项实施例所述的I2C总线的通信控制方法的步骤;
处理器720,用于执行所述指令。
其中,存储器710可以包括一个或多个存储介质,该存储介质可以是非暂态的。存储器710还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器710至少用于存储以下计算机程序,其中,该计算机程序被处理器720加载并执行之后,能够实现前述任一实施例公开的I2C总线的通信控制方法中的相关步骤。
处理器720可以包括一个或多个处理核心,比如3核心处理器、8核心处理器等。处理器720可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器720也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器720可以集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器720还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
在一些实施例中,I2C总线的通信控制设备还可包括有显示屏730、LCD背光电源740、LCD偏压电源750、通信接口760、传感器770以及I2C总线。
本领域技术人员可以理解,图7中示出的结构并不构成对I2C总线的通信控制设备的限定,可以包括比图示更多或更少的组件。
本申请实施例提供的I2C总线的通信控制设备,包括存储器和处理器,处理器在执行存储器存储的程序时,能够实现如上所述的I2C总线的通信控制方法,效果同上。
需要说明的是,以上所描述的装置、设备实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本发明各个实施例所述方法的全部或部分步骤。
为此,本发明实施例还提供一种存储介质,该存储介质上存储有计算机程序,计算机程序被处理器执行时实现如I2C总线的通信控制方法的步骤。
该存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本实施例中提供的存储介质所包含的计算机程序能够在被处理器执行时实现如上所述的I2C总线的通信控制方法的步骤,效果同上。
以上对本发明所提供的一种I2C总线的通信控制方法、装置、设备及存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置、设备及存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
Claims (10)
1.一种I2C总线的通信控制方法,其特征在于,接入所述I2C总线的设备具有非稳定状态,所述非稳定状态包括:所述设备的上电状态、下电状态和复位状态中的任一种状态,包括:
在第一时刻,控制所述I2C总线处于非空闲状态,所述第一时刻为所述设备进入非稳定状态的时刻,或者所述第一时刻早于所述设备进入非稳定状态的时刻;
在第二时刻,控制所述I2C总线处于空闲状态,所述第二时刻为所述设备结束非稳定状态的时刻,或者所述第二时刻晚于所述设备结束非稳定状态的时刻;
所述I2C总线在所述非空闲状态下处于无法工作状态,所述I2C总线在所述空闲状态下处于工作状态。
2.根据权利要求1所述的方法,其特征在于,在控制所述I2C总线处于非空闲状态之前,还包括:
获取所述设备的非稳定状态信息,所述非稳定状态信息包括所述设备进入非稳定状态的时刻,以及所述设备处于非稳定状态的第一时长。
3.根据权利要求1或2所述的方法,其特征在于,还包括:
通过设置所述I2C总线的状态标志,指示所述I2C总线处于空闲状态或者非空闲状态。
4.根据权利要求3所述的方法,其特征在于,包括:
将所述状态标志设置为“0”,指示所述I2C总线处于空闲状态,将所述状态标志设置为“1”,指示所述I2C总线处于非空闲状态;
或者,将所述状态标志设置为“1”,指示所述I2C总线处于空闲状态,将所述状态标志设置为“0”,指示所述I2C总线处于非空闲状态。
5.一种I2C总线的通信控制装置,其特征在于,接入所述I2C总线的设备具有非稳定状态,所述非稳定状态包括:所述设备的上电状态、下电状态和复位状态中的任一种状态,包括:
控制单元,用于在第一时刻,控制所述I2C总线处于非空闲状态,所述第一时刻为所述设备进入非稳定状态的时刻,或者所述第一时刻早于所述设备进入非稳定状态的时刻;
在第二时刻,控制所述I2C总线处于空闲状态,所述第二时刻为所述设备结束非稳定状态的时刻,或者所述第二时刻晚于所述设备结束非稳定状态的时刻;
所述I2C总线在所述非空闲状态下处于无法工作状态,所述I2C总线在所述空闲状态下处于工作状态。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括:
获取单元,用于获取所述设备的非稳定状态信息,所述非稳定状态信息包括所述设备进入非稳定状态的时刻,以及所述设备处于非稳定状态的第一时长。
7.根据权利要求5或6所述的装置,其特征在于,还包括:
状态标志存储单元,用于存储表示所述I2C总线当前状态的I2C总线状态标志;
设置所述I2C总线状态标志,指示所述I2C总线处于空闲状态或者非空闲状态。
8.根据权利要求7所述的装置,其特征在于,所述设置所述I2C总线状态标志,指示所述I2C总线处于空闲状态或者非空闲状态,包括:
将所述状态标志设置为“0”,指示所述I2C总线处于空闲状态,将所述状态标志设置为“1”,指示所述I2C总线处于非空闲状态;
或者,将所述状态标志设置为“1”,指示所述I2C总线处于空闲状态,将所述状态标志设置为“0”,指示所述I2C总线处于非空闲状态。
9.一种I2C总线的通信控制设备,其特征在于,包括:存储器,用于存储指令,所述指令包括权利要求1至4任意一项所述I2C总线的通信控制方法的步骤;
处理器,用于执行所述指令。
10.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至4任意一项所述I2C总线的通信控制方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210861654.8A CN116048849B (zh) | 2022-07-20 | 2022-07-20 | 一种i2c总线的通信控制方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210861654.8A CN116048849B (zh) | 2022-07-20 | 2022-07-20 | 一种i2c总线的通信控制方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116048849A CN116048849A (zh) | 2023-05-02 |
CN116048849B true CN116048849B (zh) | 2023-11-07 |
Family
ID=86124401
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210861654.8A Active CN116048849B (zh) | 2022-07-20 | 2022-07-20 | 一种i2c总线的通信控制方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116048849B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105589821A (zh) * | 2014-10-20 | 2016-05-18 | 深圳市中兴微电子技术有限公司 | 一种防止总线死锁的装置及方法 |
CN106649180A (zh) * | 2016-09-09 | 2017-05-10 | 锐捷网络股份有限公司 | 一种解除i2c总线死锁的方法及装置 |
CN109388605A (zh) * | 2017-08-10 | 2019-02-26 | 深圳市中兴微电子技术有限公司 | 一种解除i2c总线死锁的方法和装置 |
CN110609762A (zh) * | 2019-09-24 | 2019-12-24 | 深圳市航顺芯片技术研发有限公司 | 一种防止先进高性能总线(ahb)死锁的方法及装置 |
CN110908841A (zh) * | 2019-12-03 | 2020-03-24 | 锐捷网络股份有限公司 | 一种i2c通信异常恢复方法及装置 |
CN111007763A (zh) * | 2019-12-03 | 2020-04-14 | 宁波奥克斯电气股份有限公司 | 一种iic总线解锁的控制方法 |
CN111061587A (zh) * | 2019-12-12 | 2020-04-24 | 浪潮商用机器有限公司 | 一种i2c总线的通信控制方法、装置、设备及存储介质 |
CN111858448A (zh) * | 2020-07-17 | 2020-10-30 | 苏州浪潮智能科技有限公司 | 一种i2c死锁并恢复的方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110249319A (zh) * | 2018-01-09 | 2019-09-17 | 深圳市汇顶科技股份有限公司 | 处理i2c总线死锁的方法、电子设备和通信系统 |
-
2022
- 2022-07-20 CN CN202210861654.8A patent/CN116048849B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105589821A (zh) * | 2014-10-20 | 2016-05-18 | 深圳市中兴微电子技术有限公司 | 一种防止总线死锁的装置及方法 |
CN106649180A (zh) * | 2016-09-09 | 2017-05-10 | 锐捷网络股份有限公司 | 一种解除i2c总线死锁的方法及装置 |
CN109388605A (zh) * | 2017-08-10 | 2019-02-26 | 深圳市中兴微电子技术有限公司 | 一种解除i2c总线死锁的方法和装置 |
CN110609762A (zh) * | 2019-09-24 | 2019-12-24 | 深圳市航顺芯片技术研发有限公司 | 一种防止先进高性能总线(ahb)死锁的方法及装置 |
CN110908841A (zh) * | 2019-12-03 | 2020-03-24 | 锐捷网络股份有限公司 | 一种i2c通信异常恢复方法及装置 |
CN111007763A (zh) * | 2019-12-03 | 2020-04-14 | 宁波奥克斯电气股份有限公司 | 一种iic总线解锁的控制方法 |
CN111061587A (zh) * | 2019-12-12 | 2020-04-24 | 浪潮商用机器有限公司 | 一种i2c总线的通信控制方法、装置、设备及存储介质 |
CN111858448A (zh) * | 2020-07-17 | 2020-10-30 | 苏州浪潮智能科技有限公司 | 一种i2c死锁并恢复的方法及装置 |
Non-Patent Citations (1)
Title |
---|
《I2C死锁原因及解决方法》;网友;《https://www.cnblogs.com/LittleTiger/p/3966106.html》;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN116048849A (zh) | 2023-05-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6081858A (en) | Apparatus and method for shaping random waveforms | |
US5581712A (en) | Method and apparatus for managing live insertion of CPU and I/O boards into a computer system | |
EP3230823B1 (en) | Interconnect wake response circuit and method | |
CN111061587A (zh) | 一种i2c总线的通信控制方法、装置、设备及存储介质 | |
WO2012115839A1 (en) | Protocol for memory power-mode control | |
JP2004507812A (ja) | 特にusbデバイス用のクロック発生器 | |
WO2009022301A2 (en) | 12c-bus interface with parallel operational mode | |
US20160350248A1 (en) | Methods and apparatus for a multiple master bus protocol | |
US20200042487A1 (en) | Serial Communication Protocol | |
KR20150070291A (ko) | 가상의 gpio | |
US10101764B2 (en) | Automatic clock configuration system | |
US7353300B2 (en) | Apparatus to improve the firmware efficiency for a multiframe serial interface | |
CN113906402A (zh) | 集成电路间(i2c)装置 | |
CN112003954B (zh) | 数据通信方法、数据通信系统及计算机可读存储介质 | |
JP2009510580A (ja) | 電力の節約 | |
CN114201440A (zh) | 时钟检测方法、电路、串口通信系统、介质和设备 | |
CN112802518A (zh) | 数据写入方法、片上系统芯片及计算机可读存储介质 | |
CN116048849B (zh) | 一种i2c总线的通信控制方法、装置、设备及存储介质 | |
US20190087378A1 (en) | Method, Apparatus And System For Power Supply Policy Exchange On A Bus | |
US10102176B2 (en) | Methods and apparatus for rapid switching of hardware configurations with a speed limited bus | |
JP2016110548A (ja) | データ通信装置 | |
CN109597781B (zh) | 与双线总线相关的时间条件的检测 | |
WO2023045389A1 (zh) | 一种网卡适配电路、网卡适配方法以及相关装置 | |
US6639436B2 (en) | Semiconductor integrated circuit with function to start and stop supply of clock signal | |
CN101237228B (zh) | 时钟产生电路结构及产生方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |