掌桥专利:专业的专利平台
掌桥专利
首页

I2C设备热插拔方法、系统、设备、介质及产品

文献发布时间:2023-06-19 19:28:50


I2C设备热插拔方法、系统、设备、介质及产品

技术领域

本公开涉及设备通信技术领域,尤其涉及一种I2C设备热插拔方法、系统、设备、介质及产品。

背景技术

I2C总线是一种常见的通信接口,在嵌入式设备中会经常用到。I2C:(Inter-Integrated Circuit),由Philips公司开发的一种简单、双向二线制同步串行总线,它只需要一根数据线SDA和一根时钟线SCL即可在连接于总线上的器件之间传送信息。由于嵌入式设备形态各异,对于某些应用场景下可能需要插拔功能,而插拔的部分有I2C设备,因此需要I2C设备具有一个热插拔功能,使得拔出后重新连接功能可正常使用,在常见的嵌入式系统如Linux中,Linux:一种免费使用和自由传播的类UNIX操作系统。默认不支持I2C的热插拔,因此需要从软硬件上实现I2C设备的热插拔功能。

现有技术中,硬件上I2C使用SCL和SDA两条线在主控制和从机之间进行数据通信,一条I2C总线支持挂载多个I2C从设备,不同的I2C从设备有不同的设备地址,I2C主控制器通过设备地址访问指定的I2C从设备。I2C总线与设备之间的数据传输遵守I2C协议。

软件上I2C的驱动不同平台实现方式会不一样,大致可包含总线的驱动和设备的驱动,以嵌入式中应用比较广泛的Linux系统为例,它的I2C架构分为核心框架、总线驱动、设备驱动三部分。核心框架提供总线驱动和设备驱动注册、注销等管理的接口;总线驱动是对I2C适配器的实现以及对I2C驱动和设备的管理;设备驱动是对具体I2C硬件设备的实现,挂载在抽象的I2C总线上。总线驱动和设备驱动都是在系统开机过程中完成初始化。

因此由于现有技术中I2C设备的加载是在系统启动过程中完成的,开机后设备一旦移除就会失效,需要连接后在重新启动系统才能正常使用,也就是说不支持I2C设备的热插拔。

发明内容

为克服相关技术中存在的问题,本公开提供一种I2C设备热插拔方法、系统、设备、介质及产品。

根据本公开实施例的第一方面,提供一种I2C设备热插拔方法,所述方法应用于I2C设备热插拔系统,所述I2C设备热插拔系统包括I2C设备、次板、主板、控制模块,所述I2C设备和所述控制模块设置在所述次板上,I2C设备通过I2C总线与主板通讯连接,所述I2C设备上存储有I2C设备驱动,所述I2C总线上存储有I2C总线驱动,所述I2C设备驱动和所述I2C总线驱动均以模块形式编译,所述方法包括:

监测所述I2C设备的插拔状态,所述插拔状态包括插入状态和拔出状态;

在确定所述插拔状态为所述插入状态时,向所述控制模块发送插入指令,基于所述控制模块和所述插入指令控制所述I2C设备上电、I2C总线初始化以及I2C设备驱动和所述I2C总线驱动加载;

在确定所述插拔状态为所述拔出状态时,向所述控制模块发送拔出指令,基于所述控制模块和所述拔出指令控制控制所述I2C设备下电、I2C总线反初始化以及I2C设备驱动和所述I2C总线驱动卸载。

在一些实施例中,所述次板通过接线端子与所述主板电连接,所述接线端子包括ID引脚和GND引脚,所述次板上还设置有监测模块,所述监测模块用于监测所述I2C设备的插拔状态;

监测所述I2C设备的插拔状态,所述插拔状态包括插入状态和拔出状态,包括:

所述监测模块中存储有中断处理函数,通过所述中断处理函数监测所述ID引脚和所述GND引脚的电平变化来判断所述I2C设备的状态。

在一些实施例中,通过所述中断处理函数监测所述ID引脚和所述GND引脚的电平变化来判断所述I2C设备的状态,包括:

当所述中断处理函数监测到所述ID引脚从悬空状态变化为高电平,所述GND引脚从悬空状态变化为低电平,则判断所述I2C设备的状态为所述插入状态;

当所述中断处理函数监测到所述ID引脚从高电平状态变化为悬空状态,所述GND引脚从低电平变化为悬空状态,则判断所述I2C设备的状态为所述拔出状态。

在一些实施例中,通过所述中断处理函数监测所述ID引脚和所述GND引脚的电平变化来判断所述I2C设备的状态,还包括:

当监测到所述ID引脚从悬空状态变化为高电平,所述GND引脚从悬空状态变化为低电平,或

ID引脚从高电平状态变化为悬空状态,所述GND引脚从低电平变化为悬空状态低于第一预设时间时,判断所述I2C设备的状态未变化。

在一些实施例中,在确定所述插拔状态为所述插入状态时,向所述控制模块发送插入指令,基于所述控制模块和所述插入指令控制所述I2C设备上电、I2C总线初始化以及I2C设备驱动和所述I2C总线驱动加载,包括:

当所述状态插拔状态为插入状态时,所述控制模块基于所述插入指令先控制所述I2C设备完成上电,然后再控制所述I2C总线完成初始化,使得I2C设备通过所述I2C总线与所述主板正常连接,最后加载所述I2C设备驱动和所述I2C总线驱动。

在一些实施例中,在确定所述插拔状态为所述拔出状态时,向所述控制模块发送拔出指令,基于所述控制模块和所述拔出指令控制控制所述I2C设备下电、I2C总线反初始化以及I2C设备驱动和所述I2C总线驱动卸载,包括:

当所述状态插拔状态为拔出状态时,所述控制模块基于所述拔出指令先卸载所述I2C设备驱动和所述I2C总线驱动,然后再控制所述I2C总线完成反初始化,使得I2C设备与所述主板断开连接,最后控制所述I2C设备完成下电。

根据本公开实施例的第二方面,提供一种I2C设备热插拔系统,所述I2C设备热插拔系统包括I2C设备、次板、主板、控制模块、监测模块,所述I2C设备、监测模块和所述控制模块设置在所述次板上,I2C设备通过I2C总线与主板通讯连接,所述I2C设备上存储有I2C设备驱动,所述I2C总线上存储有I2C总线驱动,所述I2C设备驱动和所述I2C总线驱动均以模块形式编译,包括:

所述监测模块用于监测I2C设备的插拔状态,所述插拔状态包括插入状态和拔出状态;

在确定所述插拔状态为插入状态时,所述控制模块用于通过插入指令控制所述I2C设备上电、I2C总线初始化以及I2C设备驱动和所述I2C总线驱动加载;

在确定所述插拔状态为拔出状态时,所述控制模块用于通过插入指令控制所述I2C设备下电、I2C总线反初始化以及I2C设备驱动和所述I2C总线驱动卸载。

本申请第三方面的实施例提供了一种电子设备,包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述指令、所述程序、所述代码集或所述指令集由所述处理器加载并执行以实现本申请上述的第一方面的实施例所提供的I2C设备热插拔方法步骤。

本申请第四方面的实施例提供了一种非临时性计算机可读存储介质,当所述存储介质中的指令由移动终端的处理器执行时,使得移动终端能够执行时实现本申请上述的第一方面的实施例所提供的I2C设备热插拔方法的步骤。

本申请第五方面的实施例提供了一种计算机程序产品,当所述计算机程序产品中的指令由移动终端的处理器执行时,使得移动终端能够执行实现本申请上述的第一方面的实施例所提供的I2C设备热插拔方法的步骤。

本公开的实施例提供的技术方案可以包括以下有益效果:在本申请在嵌入式设备开发中实现I2C设备热插拔的需求,通过监测模块中的中断处理函数来监测ID引脚和GND引脚的电压变化从而识别I2C设备的热插拔动作,具有稳定识别的优点,防止误识别,也能保护器件不被损坏。软件上将I2C设备驱动和所述I2C总线驱动均以模块形式编译实现,方便随时进行加载或卸载,且依托原生驱动进行衍生,简单方便,不会增加软件的复杂度及难度。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。

图1是根据一示例性实施例示出的一种I2C设备热插拔方法的流程图。

图2是根据一示例性实施例示出的一种I2C设备热插拔系统的硬件示意图。

图3是根据一示例性实施例示出的一种电子设备的内部结构图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。

图1是根据一示例性实施例示出的一种I2C设备热插拔方法的流程图,如图1所示,所述方法应用于I2C设备热插拔系统,所述I2C设备热插拔系统包括I2C设备、次板、主板、控制模块,所述I2C设备和所述控制模块设置在所述次板上,I2C设备通过I2C总线与主板通讯连接,所述I2C设备上存储有I2C设备驱动,所述I2C总线上存储有I2C总线驱动,所述I2C设备驱动和所述I2C总线驱动均以模块形式编译,包括以下步骤:

S101,监测所述I2C设备的插拔状态,所述插拔状态包括插入状态和拔出状态。

具体的,为了实现I2C设备热插拔不影响其它设备,I2C设备独享一条I2C总线,I2C设备通过I2C总线与主板通讯连接。通过监测I2C设备的插拔状态,通过判断插拔状态是插入状态还是拔出状态从而执行不同的后续操作,来完成I2C设备的热插拔。

在一些实施例中,所述次板通过接线端子与所述主板电连接,所述接线端子包括ID引脚和GND引脚,所述次板上还设置有监测模块,所述监测模块用于监测所述I2C设备的插拔状态;

监测所述I2C设备的插拔状态,所述插拔状态包括插入状态和拔出状态,包括:

所述监测模块中存储有中断处理函数,通过所述中断处理函数监测所述ID引脚和所述GND引脚的电平变化来判断所述I2C设备的状态。

具体的,由于I2C设备是设置在次板上的,而次板又通过ID引脚和GND引脚与主板电连接,且监测模块也设置在次板上,通过在监测模块中存储中断处理函数来监测ID引脚和GND引脚的电平变化来判断I2C设备的状态,中断脚(ID引脚和GND引脚)拉高或拉低会产生中断信号,处理这个中断信号的函数就是中断处理函数,因此通过中断处理函数来监测ID引脚和GND引脚的电平变化可以判断I2C设备的状态变化。

在一些实施例中,通过所述中断处理函数监测所述ID引脚和所述GND引脚的电平变化来判断所述I2C设备的状态,包括:

当所述中断处理函数监测到所述ID引脚从悬空状态变化为高电平,所述GND引脚从悬空状态变化为低电平,则判断所述I2C设备的状态为所述插入状态;

当所述中断处理函数监测到所述ID引脚从高电平状态变化为悬空状态,所述GND引脚从低电平变化为悬空状态,则判断所述I2C设备的状态为所述拔出状态。

具体的,本申请中的ID引脚默认是拉高,GND引脚默认拉低,I2C设备在未连接时都会悬空,当I2C设备插入后ID引脚拉高产生高电平,GND引脚拉低产生低电平,此时会产生中断,当判段ID引脚拉高产生高电平,GND引脚拉低产生低电平时则表明此时I2C设备的状态为插入状态,即发生了插入事件。当ID引脚从高电平状态变化为悬空状态,GND引脚从低电平变化为悬空状态,则判断I2C设备的状态为拔出状态,即发生了拔出事件。

在一些实施例中,通过所述中断处理函数监测所述ID引脚和所述GND引脚的电平变化来判断所述I2C设备的状态,还包括:

当监测到所述ID引脚从悬空状态变化为高电平,所述GND引脚从悬空状态变化为低电平,或

ID引脚从高电平状态变化为悬空状态,所述GND引脚从低电平变化为悬空状态低于第一预设时间时,判断所述I2C设备的状态未变化。

具体的,为了避免由于I2C设备发生轻微抖动导致I2C设备的状态发生变化,因此当当监测到ID引脚从悬空状态变化为高电平,GND引脚从悬空状态变化为低电平或ID引脚从高电平状态变化为悬空状态,GND引脚从低电平变化为悬空状态低于第一预设时间时,即低于第一预设时间(例如100ms)时,则判断I2C设备是发生了轻微抖动,并非发生插入或拔出事件,避免了I2C设备在该下电时却上电,造成设备损坏。

S102,在确定所述插拔状态为所述插入状态时,向所述控制模块发送插入指令,基于所述控制模块和所述插入指令控制所述I2C设备上电、I2C总线初始化以及I2C设备驱动和所述I2C总线驱动加载。

具体的,当通过中断处理函数监测到ID引脚和GND引脚发生变化,且确定此时的I2C设备的插拔状态为插入状态时,向控制模块发生插入指令,控制模块接收到该插入指令后来控制I2C设备上电、I2C总线初始化以及I2C设备驱动和所述I2C总线驱动加载的具体操作。

在一些实施例中,确定所述插拔状态为所述插入状态时,向所述控制模块发送插入指令,基于所述控制模块和所述插入指令控制所述I2C设备上电、I2C总线初始化以及I2C设备驱动和所述I2C总线驱动加载,包括:

当所述状态插拔状态为插入状态时,所述控制模块基于所述插入指令先控制所述I2C设备完成上电,然后再控制所述I2C总线完成初始化,使得I2C设备通过所述I2C总线与所述主板正常连接,最后加载所述I2C设备驱动和所述I2C总线驱动。

具体的,控制模块首先控制I2C设备上电,然后再控制所述I2C总线完成初始化,初始化具体包括注册总线、定义i2c适配器的数据结构、以及具体适配器的i2c通信方式等等,初始化可以理解为I2C总线能够正常工作一系列动作,最后再加载I2C设备驱动和I2C总线驱动,使得I2C设备与主板直接能够通过I2C总线来进行通讯,在完成加载完I2C设备驱动和I2C总线驱动,还要通知上层重启I2C设备相关的应用服务或功能。

S103,在确定所述插拔状态为所述拔出状态时,向所述控制模块发送拔出指令,基于所述控制模块和所述拔出指令控制控制所述I2C设备下电、I2C总线反初始化以及I2C设备驱动和所述I2C总线驱动卸载。

具体的,当通过中断处理函数监测到ID引脚和GND引脚发生变化,且确定此时的I2C设备的插拔状态为拔出状态时,向控制模块发生插入指令,控制模块接收到该插入指令后来控制I2C设备下电、I2C总线反初始化以及I2C设备驱动和I2C总线驱动卸载的具体操作。

在一些实施例中,在确定所述插拔状态为所述拔出状态时,向所述控制模块发送拔出指令,基于所述控制模块和所述拔出指令控制控制所述I2C设备下电、I2C总线反初始化以及I2C设备驱动和所述I2C总线驱动卸载,包括:

当所述状态插拔状态为拔出状态时,所述控制模块基于所述拔出指令先卸载所述I2C设备驱动和所述I2C总线驱动,然后再控制所述I2C总线完成反初始化,使得I2C设备与所述主板断开连接,最后控制所述I2C设备完成下电。

具体的,控制模块先卸载卸载所述I2C设备驱动和所述I2C总线驱动,断开I2C设备通过I2C总线与主板的通讯,然后再控制I2C总线完成反初始化,反初始化就是初始化的逆过程,可以理解为使得I2C总线不能正常工作一系列动作,最后再控制I2C设备完成下电,在完成下电后,还要通知上层关闭I2C设备相关的应用服务或功能。

图2是根据一示例性实施例示出的一种I2C设备热插拔系统的硬件示意图。参照图2,所述I2C设备热插拔系统包括I2C设备、次板、主板、控制模块、监测模块,所述I2C设备、监测模块和所述控制模块设置在所述次板上,I2C设备通过I2C总线与主板通讯连接,所述I2C设备上存储有I2C设备驱动,所述I2C总线上存储有I2C总线驱动,所述I2C设备驱动和所述I2C总线驱动均以模块形式编译,包括:

所述监测模块用于监测I2C设备的插拔状态,所述插拔状态包括插入状态和拔出状态;

在确定所述插拔状态为插入状态时,所述控制模块用于通过插入指令控制所述I2C设备上电、I2C总线初始化以及I2C设备驱动和所述I2C总线驱动加载;

在确定所述插拔状态为拔出状态时,所述控制模块用于通过插入指令控制所述I2C设备下电、I2C总线反初始化以及I2C设备驱动和所述I2C总线驱动卸载。

关于上述实施例中的系统,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

在一个实施例中,提供了一种电子设备,该电子设备可以是终端,其内部结构图可以如图3所示。该电子设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该电子设备的处理器用于提供计算和控制能力。该电子设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、近场通信(NFC)或其他技术实现。该计算机程序被处理器执行时以实现一种I2C设备热插拔方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。

本领域技术人员可以理解,图3中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,本申请提供的I2C设备热插拔系统可以实现为一种计算机程序的形式,计算机程序可在如图3所示的电子设备上运行。电子设备的存储器中可存储组成该I2C设备热插拔系统的各个程序模块。

该电子设备中的存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述指令、所述程序、所述代码集或所述指令集由所述处理器加载并执行以实现根据上述任意一个实施例所述的I2C设备热插拔方法。例如实现I2C设备热插拔方法,包括:监测所述I2C设备的插拔状态,所述插拔状态包括插入状态和拔出状态;在确定所述插拔状态为所述插入状态时,向所述控制模块发送插入指令,基于所述控制模块和所述插入指令控制所述I2C设备上电、I2C总线初始化以及I2C设备驱动和所述I2C总线驱动加载;在确定所述插拔状态为所述拔出状态时,向所述控制模块发送拔出指令,基于所述控制模块和所述拔出指令控制控制所述I2C设备下电、I2C总线反初始化以及I2C设备驱动和所述I2C总线驱动卸载。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:监测所述I2C设备的插拔状态,所述插拔状态包括插入状态和拔出状态;在确定所述插拔状态为所述插入状态时,向所述控制模块发送插入指令,基于所述控制模块和所述插入指令控制所述I2C设备上电、I2C总线初始化以及I2C设备驱动和所述I2C总线驱动加载;在确定所述插拔状态为所述拔出状态时,向所述控制模块发送拔出指令,基于所述控制模块和所述拔出指令控制控制所述I2C设备下电、I2C总线反初始化以及I2C设备驱动和所述I2C总线驱动卸载。

在一个实施例中,提供了一种计算机程序产品,当计算机程序产品中的指令由移动终端的处理器执行时,使得移动终端能够执行以下步骤:监测所述I2C设备的插拔状态,所述插拔状态包括插入状态和拔出状态;在确定所述插拔状态为所述插入状态时,向所述控制模块发送插入指令,基于所述控制模块和所述插入指令控制所述I2C设备上电、I2C总线初始化以及I2C设备驱动和所述I2C总线驱动加载;在确定所述插拔状态为所述拔出状态时,向所述控制模块发送拔出指令,基于所述控制模块和所述拔出指令控制控制所述I2C设备下电、I2C总线反初始化以及I2C设备驱动和所述I2C总线驱动卸载。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成的,计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,比如静态随机存取存储器(Static Random Access Memory,SRAM)和动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个的技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

相关技术
  • 一种PCIE设备的热插拔装置、方法、介质及系统
  • 产品数据的协同备份方法、系统、计算机设备及存储介质
  • 一种PCIE Switch产品的产线测试方法、系统、介质及设备
  • 产品生产信息获取方法、系统、存储介质及计算机设备
  • 基金产品筛选方法、系统、计算机设备和存储介质
  • 一种基于安卓系统的I2C设备兼容方法、装置、设备及介质
  • 芯片热插拔的方法、装置及计算机、设备、介质和产品
技术分类

06120115920879