CN113986803B - 一种i2c总线控制方法、装置、器件及存储介质 - Google Patents
一种i2c总线控制方法、装置、器件及存储介质 Download PDFInfo
- Publication number
- CN113986803B CN113986803B CN202111226321.XA CN202111226321A CN113986803B CN 113986803 B CN113986803 B CN 113986803B CN 202111226321 A CN202111226321 A CN 202111226321A CN 113986803 B CN113986803 B CN 113986803B
- Authority
- CN
- China
- Prior art keywords
- polling
- operation data
- polling list
- read
- slave
- 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
- 238000000034 method Methods 0.000 title claims abstract description 41
- 230000007958 sleep Effects 0.000 claims abstract description 42
- 238000004891 communication Methods 0.000 claims description 40
- 230000005059 dormancy Effects 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 10
- 238000011217 control strategy Methods 0.000 abstract description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000004377 microelectronic Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000002618 waking effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
-
- 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)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Small-Scale Networks (AREA)
- Power Sources (AREA)
Abstract
本申请公开了一种I2C总线控制方法、装置、器件及存储介质,包括:按照轮询表中操作数据行的排列顺序依次控制各操作数据行的从器件切换至唤醒模式,以使主器件对从器件执行对应的读写操作;当读写操作完成后,控制从器件切换至休眠模式并根据与操作数据行对应的轮询周期及轮询持续时间确定新的剩余时间;轮询周期为两次读写操作之间的时间间隔,轮询持续时间为一次读写操作的持续时间,剩余时间为距离开始下次读写操作的时间;利用新的剩余时间对轮询表中相应剩余时间进行更新,并根据更新后的剩余时间对轮询表中的操作数据行进行重新排列。根据轮询表中自适应控制策略控制从器件进行规律性唤醒和休眠,从而降低I2C总线功耗,提高系统鲁棒性。
Description
技术领域
本发明涉及通信技术领域,特别涉及一种I2C总线控制方法、装置、器件及存储介质。
背景技术
I2C(Inter-Integrated Circuit)总线是用于连接微控制器及其外围设备两线式串行总线,I2C协议是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口线少、控制方式简单、器件封装形式小、通信速率较高等优点。I2C通过串行数据(SDA)线和串行时钟(SCL)线在连接到总线的器件间传递信息。每个器件都有一个唯一的地址识别,而且都可以作为一个发送器或接收器(由器件的功能决定)。主器件是初始化总线的数据传输并产生允许传输的时钟信号的器件。此时,任何被寻址的器件都被认为是从器件。在I2C总线中,从器件通常处于时刻检测总线通信的待机状态,对于器件众多、总线复杂的服务器来说是一笔不小的功耗开支,尽管目前有多种不同方式尝试降低I2C总线功耗,但针对服务器I2C总线来说往往效果不佳或者实现复杂。
因此,如何降低I2C总线功耗以提高系统鲁棒性是本领域技术人员亟待解决的技术问题。
发明内容
有鉴于此,本发明的目的在于提供一种I2C总线控制方法、装置、器件及存储介质,能够根据轮询表中自适应控制策略控制从器件进行规律性唤醒和休眠,从而降低I2C总线功耗,提高系统鲁棒性。其具体方案如下:
本申请的第一方面提供了一种I2C总线控制方法,包括:
按照轮询表中操作数据行的排列顺序依次控制各所述操作数据行的从器件切换至唤醒模式,以使主器件对所述从器件执行与所述操作数据行对应的读写操作;其中,所述轮询表中的各所述操作数据行表征I2C总线中所述主器件与所述从器件之间的通信请求;
当读写操作完成后,则控制所述从器件切换至休眠模式并根据与所述操作数据行对应的轮询周期及轮询持续时间确定新的剩余时间;其中,所述轮询周期为两次读写操作之间的时间间隔,所述轮询持续时间为一次读写操作的持续时间,所述剩余时间为距离开始下次读写操作的时间;
利用新的剩余时间对所述轮询表中相应的所述剩余时间进行更新,并根据更新后的所述剩余时间对轮询表中的所述操作数据行的位置进行重新排列。
可选的,所述按照轮询表中操作数据行的排列顺序依次控制各所述操作数据行的从器件切换至唤醒模式之前,还包括:
预先创建包含从器件地址字段、内部寄存器地址、轮询持续时间字段、轮询周期字段及剩余时间字段的空白轮询表;
根据所述I2C总线中所述主器件与所述从器件之间的全部通信请求对空白轮询表进行配置,以得到具有不同所述操作数据行的所述轮询表。
可选的,所述根据所述I2C总线中所述主器件与所述从器件之间的全部通信请求对空白轮询表进行配置之后,还包括:
根据所述从器件地址字段对配置后的所述轮询表中的所述操作数据行排列顺序进行自适应调整,以使具有相同从器件地址的所述操作数据行相邻排列。
可选的,所述轮询表中还包括表征模式切换方式的器件状态字段;其中,所述模式切换方式为中断休眠、计时器休眠或写寄存器休眠。
可选的,所述根据所述从器件地址字段对配置后的所述轮询表中的所述操作数据行排列顺序进行自适应调整之前,还包括:
根据与各所述操作数据行对应的所述器件状态字段判断对应的所述从设备是否使能轮询休眠,如果是,则执行自适应调整的步骤,如果否,则不执行自适应调整的步骤。
可选的,控制各所述操作数据行的从器件切换至唤醒模式,包括:
控制各所述操作数据行的从器件按照与所述操作数据行对应的所述器件状态字段表征的所述模式切换方式切换至唤醒模式。
可选的,所述轮询表位于底层,上层应用程序通过预设接口对所述轮询表进行操作。
本申请的第二方面提供了一种I2C总线控制装置,包括:
唤醒模块,用于按照轮询表中操作数据行的排列顺序依次控制各所述操作数据行的从器件切换至唤醒模式,以使主器件对所述从器件执行与所述操作数据行对应的读写操作;其中,所述轮询表中的各所述操作数据行表征I2C总线中所述主器件与所述从器件之间的通信请求;
休眠模块,用于当读写操作完成后,则控制所述从器件切换至休眠模式并根据与所述操作数据行对应的轮询周期及轮询持续时间确定新的剩余时间;其中,所述轮询周期为两次读写操作之间的时间间隔,所述轮询持续时间为一次读写操作的持续时间,所述剩余时间为距离开始下次读写操作的时间;
更新模块,用于利用新的剩余时间对所述轮询表中相应的所述剩余时间进行更新,并根据更新后的所述剩余时间对轮询表中的所述操作数据行的位置进行重新排列。
本申请的第三方面提供了一种电子器件,所述电子器件包括处理器和存储器;其中所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行以实现前述I2C总线控制方法。
本申请的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现前述I2C总线控制方法。
本申请中,先按照轮询表中操作数据行的排列顺序依次控制各所述操作数据行的从器件切换至唤醒模式,以使主器件对所述从器件执行与所述操作数据行对应的读写操作;其中,所述轮询表中的各所述操作数据行表征I2C总线中所述主器件与所述从器件之间的通信请求;然后当读写操作完成后,则控制所述从器件切换至休眠模式并根据与所述操作数据行对应的轮询周期及轮询持续时间确定新的剩余时间;其中,所述轮询周期为两次读写操作之间的时间间隔,所述轮询持续时间为一次读写操作的持续时间,所述剩余时间为距离开始下次读写操作的时间;最后利用新的剩余时间对所述轮询表中相应的所述剩余时间进行更新,并根据更新后的所述剩余时间对轮询表中的所述操作数据行的位置进行重新排列。可见,本申请按照行顺序唤醒轮询表中每个操作数据行的从器件以执行读写操作,执行完后即切换至休眠模式,同时根据轮询周期及轮询持续时间确定出距离下次执行该行数据的读写操作的剩余时间,以对轮询表中的数据行进行重新排列。上述步骤根据轮询表中自适应控制策略控制从器件进行规律性唤醒和休眠,从而降低I2C总线功耗,提高系统鲁棒性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请提供的一种I2C总线控制方法流程图;
图2为本申请提供的一种具体的I2C总线内部结构图;
图3为本申请提供的一种读寄存器标准流程图;
图4为本申请提供的一种写寄存器标准流程图;
图5为本申请提供的一种轮询表示例图;
图6为本申请提供的一种具体的I2C总线整体架构图;
图7为本申请提供的一种具体的轮询表示例图;
图8为本申请提供的一种具体的自适应调整后的轮询表示例图;
图9为本申请提供的一种I2C总线控制装置结构示意图;
图10为本申请提供的一种I2C总线控制电子器件结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在I2C总线中,从器件通常处于时刻检测总线通信的待机状态,对于器件众多、总线复杂的服务器来说是一笔不小的功耗开支,尽管目前有多种不同方式尝试降低I2C总线功耗,但针对服务器I2C总线来说往往效果不佳或者实现复杂。针对上述技术缺陷,本申请提供一种I2C总线控制方案,按照行顺序唤醒轮询表中每个操作数据行的从器件以执行读写操作,执行完后即切换至休眠模式,同时根据轮询周期及轮询持续时间确定出距离下次执行该行数据的读写操作的剩余时间,以对轮询表中的数据行进行重新排列。上述步骤根据轮询表中自适应控制策略控制从器件进行规律性唤醒和休眠,从而降低I2C总线功耗,提高系统鲁棒性。
图1为本申请实施例提供的一种I2C总线控制方法流程图。参见图1所示,该I2C总线控制方法包括:
S11:按照轮询表中操作数据行的排列顺序依次控制各所述操作数据行的从器件切换至唤醒模式,以使主器件对所述从器件执行与所述操作数据行对应的读写操作;其中,所述轮询表中的各所述操作数据行表征I2C总线中所述主器件与所述从器件之间的通信请求。
本实施例中,按照轮询表中操作数据行的排列顺序依次控制各所述操作数据行的从器件切换至唤醒模式,以使主器件对所述从器件执行与所述操作数据行对应的读写操作;其中,所述轮询表中的各所述操作数据行表征I2C总线中所述主器件与所述从器件之间的通信请求。所述轮询表位于底层,上层应用程序通过预设接口对所述轮询表进行操作,例如,上层应用程序可以使用其它高速接口访问该轮询表,如图2所示。
读寄存器的标准流程如图3所示,主器件Master发送I2C addr(7bit)和w操作1(1bit),等待ACK;从器件Slave发送ACK;Master发送reg addr(8bit),等待ACK;Slave发送ACK;Master发起START;Master发送I2Caddr(7bit)和r操作1(1bit),等待ACK;Slave发送ACK;Slave发送data(8bit),即寄存器里的值;Master发送ACK;第8步和第9步可以重复多次,即顺序读多个寄存器。写寄存器的标准流程如图4所示,Master发起START;Master发送I2C addr(7bit)和w操作0(1bit),等待ACK;Slave发送ACK;Master发送reg addr(8bit),等待ACK;Slave发送ACK;Master发送data(8bit),即要写入寄存器中的数据,等待ACK;Slave发送ACK;第6步和第7步可以重复多次,即顺序写多个寄存器;Master发起STOP。
在此之前需要构建轮询表,首先预先创建包含从器件地址字段、内部寄存器地址、轮询持续时间字段、轮询周期字段及剩余时间字段的空白轮询表。可以理解,读写操作是针对从器件的内部寄存器而言的,所以从器件地址字段、内部寄存器地址是每条I2C通信指令的基础;所述轮询周期为两次读写操作之间的时间间隔,也即上层需要定期获取信息的间隔;所述轮询持续时间为一次读写操作的持续时间,所述轮询持续时间字段可以利用通信字节数计算得出,因此所述轮询持续时间在轮询表中的直接表现为通信字节数。所述剩余时间为距离开始下次读写操作的时间,记录了距离下一次读/写操作的剩余时间,该时间由该模块内置的计时器计算,上层在获取一次后,同步进行倒计时操作,可以通过增加访问次数,获得更精确的计时时间。不难理解,所述轮询表中还可以设置编号字段以方便排序,每个编号代表了一种I2C读写操作,本实施例设计了8位2进制数用于记录,上限共计256种操作,远远大于一条I2C总线的常规操作数。
进一步的,本实施例中所述轮询表还包括表征模式切换方式的器件状态字段,所述模式切换方式为中断休眠、计时器休眠或写寄存器休眠。如果从器件支持中断休眠,则在指定时间进行唤醒;如果从器件内置计时器,则该器件在通信结束后,自动获取该轮询表的轮询周期和剩余时间,在休眠状态中借助内部计时器进行固定时长的休眠,到时自动唤醒;如果从器件支持写寄存器控制休眠唤醒,则主器件会在通信结束后发起一个写寄存器操作,用于控制该器件进入休眠,而在轮询结束后,主器件会使用写寄存器操作实现休眠的唤醒。当然,上述过程均是基于从器件“使能轮询休眠”,也即该从器件可肯局轮询表被控制进行唤醒模式和休眠模式的切换。一般来说,轮询表中的从器件均“使能轮询休眠”,如果“禁止轮询休眠”,则其一直处于唤醒模式。为便于表示,器件状态预设了四位分别用于区分不同器件,为此采取不同的休眠控制策略,四位分别是使能/禁止轮询休眠、支持/不支持中断休眠、支持/不支持计时器休眠、支持/不支持写寄存器休眠。
基于此,根据所述I2C总线中所述主器件与所述从器件之间的全部通信请求对空白轮询表进行配置,以得到具有不同所述操作数据行的所述轮询表。另外,为了避免相同的从器件被重复唤醒,可以进一步根据所述从器件地址字段对配置后的所述轮询表中的所述操作数据行排列顺序进行自适应调整,以使具有相同从器件地址的所述操作数据行相邻排列。将所有I2C总线的通信请求进行自适应地整理和分类,将面向同一器件的读写请求放在一起,其它器件可以在此时进入休眠状态。图5为本实施例给出的一种通过上述设置得到的轮询表示例,在此种设置模式下,如果有突发的读写操作,则会绕开该轮询表,直接进入I2C总线进行通信,相应的,轮询表的时间也会对应进行推延。由于服务器本身环境较为稳定,所有器件的通信均有一定规律和周期,因此该非周期突发操作不会频繁影响休眠/恢复的时间周期。该设计的另一个好处是,当一条I2C链路中有两个以上的主器件时,多个主器件将可以按照同一个轮询表进行工作,器件依然可以无缝适应,自动地在休眠/唤醒中进行切换。
S12:当读写操作完成后,则控制所述从器件切换至休眠模式并根据与所述操作数据行对应的轮询周期及轮询持续时间确定新的剩余时间;其中,所述轮询周期为两次读写操作之间的时间间隔,所述轮询持续时间为一次读写操作的持续时间,所述剩余时间为距离开始下次读写操作的时间。
S13:利用新的剩余时间对所述轮询表中相应的所述剩余时间进行更新,并根据更新后的所述剩余时间对轮询表中的所述操作数据行的位置进行重新排列。
本实施例中,以图6所示的主从器件架构进行具体说明,如图6所示,I2C总线上有一个主器件,两个从器件A和B,从器件A和从器件B的地址为0X33、0X34。假定主器件与从器件A内部寄存器0x01有写0x88的操作,轮询周期两秒;对从器件B内部寄存器0x2有读2byte的操作,轮询周期三秒;与从器件A内部寄存器0x01有写0x88的操作,轮询周期两秒;对从器件B内部寄存器0x3有读3byte的操作,轮询周期三秒。本实施例中上层通过配置形成的轮询表如图7所示,初始化时表中剩余时间为只读数据,由内部处理逻辑在对操作分析后自动生成,在录入后,会对相同从器件的操作进行合并,即将编号“00000011”的操作与编号“00000001”的操作放在一起进行,调整为图8所示的轮询表。然后按照图8中的顺序进行读写执行,当执行完编号“00000001”的操作后计算出相应的剩余时间,将表中对应的剩余时间进行更新后按照剩余时间的先后顺序对表中四个操作数据行的顺序进行调整,接着执行编号“00000011”的操作,以相同的方式循环轮询访问。其中,由于编号00000100操作的器件状态禁用了轮询休眠,该操作不会进行自适应调整,保证该操作不受影响。
需要注意,放在一起的从器件之间器件状态应该是不支持模式切换的,这样才能达到相同的从器件不用重复进行状态切换,一次切换即可执行该从器件的全部读写操作。如图8中的第一行的器件状态后三位均为0,而第二行的器件状态至少有一位不为0。也即从器件A在执行完第一行操作后不进入休眠状态继续执行第二行操作,执行完第二行操作后才切换至休眠状态。上述过程完全由底层逻辑自动实现排序和睡眠/唤醒,不需要额外的人力介入,实现了I2C总线通信的精细化控制。
可见,本申请实施例先按照轮询表中操作数据行的排列顺序依次控制各所述操作数据行的从器件切换至唤醒模式,以使主器件对所述从器件执行与所述操作数据行对应的读写操作;其中,所述轮询表中的各所述操作数据行表征I2C总线中所述主器件与所述从器件之间的通信请求;然后当读写操作完成后,则控制所述从器件切换至休眠模式并根据与所述操作数据行对应的轮询周期及轮询持续时间确定新的剩余时间;其中,所述轮询周期为两次读写操作之间的时间间隔,所述轮询持续时间为一次读写操作的持续时间,所述剩余时间为距离开始下次读写操作的时间;最后利用新的剩余时间对所述轮询表中相应的所述剩余时间进行更新,并根据更新后的所述剩余时间对轮询表中的所述操作数据行的位置进行重新排列。本申请实施例按照行顺序唤醒轮询表中每个操作数据行的从器件以执行读写操作,执行完后即切换至休眠模式,同时根据轮询周期及轮询持续时间确定出距离下次执行该行数据的读写操作的剩余时间,以对轮询表中的数据行进行重新排列。上述步骤根据轮询表中自适应控制策略控制从器件进行规律性唤醒和休眠,从而降低I2C总线功耗,提高系统鲁棒性。
参见图9所示,本申请实施例还相应公开了一种I2C总线控制装置,包括:
唤醒模块11,用于按照轮询表中操作数据行的排列顺序依次控制各所述操作数据行的从器件切换至唤醒模式,以使主器件对所述从器件执行与所述操作数据行对应的读写操作;其中,所述轮询表中的各所述操作数据行表征I2C总线中所述主器件与所述从器件之间的通信请求;
休眠模块12,用于当读写操作完成后,则控制所述从器件切换至休眠模式并根据与所述操作数据行对应的轮询周期及轮询持续时间确定新的剩余时间;其中,所述轮询周期为两次读写操作之间的时间间隔,所述轮询持续时间为一次读写操作的持续时间,所述剩余时间为距离开始下次读写操作的时间;
更新模块13,用于利用新的剩余时间对所述轮询表中相应的所述剩余时间进行更新,并根据更新后的所述剩余时间对轮询表中的所述操作数据行的位置进行重新排列。
可见,本申请实施例先按照轮询表中操作数据行的排列顺序依次控制各所述操作数据行的从器件切换至唤醒模式,以使主器件对所述从器件执行与所述操作数据行对应的读写操作;其中,所述轮询表中的各所述操作数据行表征I2C总线中所述主器件与所述从器件之间的通信请求;然后当读写操作完成后,则控制所述从器件切换至休眠模式并根据与所述操作数据行对应的轮询周期及轮询持续时间确定新的剩余时间;其中,所述轮询周期为两次读写操作之间的时间间隔,所述轮询持续时间为一次读写操作的持续时间,所述剩余时间为距离开始下次读写操作的时间;最后利用新的剩余时间对所述轮询表中相应的所述剩余时间进行更新,并根据更新后的所述剩余时间对轮询表中的所述操作数据行的位置进行重新排列。本申请实施例按照行顺序唤醒轮询表中每个操作数据行的从器件以执行读写操作,执行完后即切换至休眠模式,同时根据轮询周期及轮询持续时间确定出距离下次执行该行数据的读写操作的剩余时间,以对轮询表中的数据行进行自适应排列。上述步骤根据轮询表中自适应控制策略控制从器件进行规律性唤醒和休眠,从而降低I2C总线功耗,提高系统鲁棒性。
在一些具体实施例中,所述唤醒模块11,具体用于控制各所述操作数据行的从器件按照与所述操作数据行对应的所述器件状态字段表征的所述模式切换方式切换至唤醒模式。
在一些具体实施例中,所述I2C总线控制装置还包括:
创建模块,用于预先创建包含从器件地址字段、内部寄存器地址、轮询持续时间字段、轮询周期字段及剩余时间字段的空白轮询表;
配置模块,用于根据所述I2C总线中所述主器件与所述从器件之间的全部通信请求对空白轮询表进行配置,以得到具有不同所述操作数据行的所述轮询表;
判断模块,用于根据与各所述操作数据行对应的所述器件状态字段判断对应的所述从设备是否使能轮询休眠,如果是,则执行自适应调整的步骤,如果否,则不执行自适应调整的步骤;
调整模块,用于根据所述从器件地址字段对配置后的所述轮询表中的所述操作数据行排列顺序进行自适应调整,以使具有相同从器件地址的所述操作数据行相邻排列。
进一步的,本申请实施例还提供了一种电子器件。图10是根据一示例性实施例示出的电子器件20结构图,图中的内容不能认为是对本申请的使用范围的任何限制。
图10为本申请实施例提供的一种电子器件20的结构示意图。该电子器件20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的I2C总线控制方法中的相关步骤。
本实施例中,电源23用于为电子器件20上的各硬件器件提供工作电压;通信接口24能够为电子器件20创建与外界器件之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源可以包括操作系统221、计算机程序222及数据223等,存储方式可以是短暂存储或者永久存储。
其中,操作系统221用于管理与控制电子器件20上的各硬件器件以及计算机程序222,以实现处理器21对存储器22中海量数据223的运算与处理,其可以是Windows Server、Netware、Unix、Linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子器件20执行的I2C总线控制方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。数据223可以包括电子器件20收集到的通信请求。
进一步的,本申请实施例还公开了一种存储介质,所述存储介质中存储有计算机程序,所述计算机程序被处理器加载并执行时,实现前述任一实施例公开的I2C总线控制方法步骤。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者器件不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者器件所固有的要素。在没有更多限制的情况下,由语句“包括一个…”限定的要素,并不排除在包括所述要素的过程、方法、物品或者器件中还存在另外的相同要素。
以上对本发明所提供的I2C总线控制方法、装置、器件及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (8)
1.一种I2C总线控制方法,其特征在于,包括:
按照轮询表中操作数据行的排列顺序依次控制各所述操作数据行的从器件切换至唤醒模式,以使主器件对所述从器件执行与所述操作数据行对应的读写操作;其中,所述轮询表中的各所述操作数据行表征I2C总线中所述主器件与所述从器件之间的通信请求;
当读写操作完成后,则控制所述从器件切换至休眠模式并根据与所述操作数据行对应的轮询周期及轮询持续时间确定新的剩余时间;其中,所述轮询周期为两次读写操作之间的时间间隔,所述轮询持续时间为一次读写操作的持续时间,所述剩余时间为距离开始下次读写操作的时间,记录距离下一次读/写操作的剩余时间,由内置的计时器计算,上层在获取一次后,同步进行倒计时操作;
利用新的剩余时间对所述轮询表中相应的所述剩余时间进行更新,并根据更新后的所述剩余时间对轮询表中的所述操作数据行的位置进行重新排列;
对应地,所述按照轮询表中操作数据行的排列顺序依次控制各所述操作数据行的从器件切换至唤醒模式之前,还包括:
预先创建包含从器件地址字段、内部寄存器地址、轮询持续时间字段、轮询周期字段及剩余时间字段的空白轮询表;
根据所述I2C总线中所述主器件与所述从器件之间的全部通信请求对空白轮询表进行配置,以得到具有不同所述操作数据行的所述轮询表;
对应地,所述根据所述I2C总线中所述主器件与所述从器件之间的全部通信请求对空白轮询表进行配置之后,还包括:
根据所述从器件地址字段对配置后的所述轮询表中的所述操作数据行排列顺序进行自适应调整,以使具有相同从器件地址的所述操作数据行相邻排列;放在一起的从器件之间器件状态不支持模式切换,以达到相同的从器件不用重复进行状态切换。
2.根据权利要求1所述的I2C总线控制方法,其特征在于,所述轮询表中还包括表征模式切换方式的器件状态字段;其中,所述模式切换方式为中断休眠、计时器休眠或写寄存器休眠。
3.根据权利要求2所述的I2C总线控制方法,其特征在于,所述根据所述从器件地址字段对配置后的所述轮询表中的所述操作数据行排列顺序进行自适应调整之前,还包括:
根据与各所述操作数据行对应的所述器件状态字段判断对应的所述从器件是否使能轮询休眠,如果是,则执行自适应调整的步骤,如果否,则不执行自适应调整的步骤。
4.根据权利要求2所述的I2C总线控制方法,其特征在于,控制各所述操作数据行的从器件切换至唤醒模式,包括:
控制各所述操作数据行的从器件按照与所述操作数据行对应的所述器件状态字段表征的所述模式切换方式切换至唤醒模式。
5.根据权利要求1至4任一项所述的I2C总线控制方法,其特征在于,所述轮询表位于底层,上层应用程序通过预设接口对所述轮询表进行操作。
6.一种I2C总线控制装置,其特征在于,包括:
唤醒模块,用于按照轮询表中操作数据行的排列顺序依次控制各所述操作数据行的从器件切换至唤醒模式,以使主器件对所述从器件执行与所述操作数据行对应的读写操作;其中,所述轮询表中的各所述操作数据行表征I2C总线中所述主器件与所述从器件之间的通信请求;
休眠模块,用于当读写操作完成后,则控制所述从器件切换至休眠模式并根据与所述操作数据行对应的轮询周期及轮询持续时间确定新的剩余时间;其中,所述轮询周期为两次读写操作之间的时间间隔,所述轮询持续时间为一次读写操作的持续时间,所述剩余时间为距离开始下次读写操作的时间,记录距离下一次读/写操作的剩余时间,由内置的计时器计算,上层在获取一次后,同步进行倒计时操作;
更新模块,用于利用新的剩余时间对所述轮询表中相应的所述剩余时间进行更新,并根据更新后的所述剩余时间对轮询表中的所述操作数据行的位置进行重新排列;
对应地,所述按照轮询表中操作数据行的排列顺序依次控制各所述操作数据行的从器件切换至唤醒模式之前,还包括:
预先创建包含从器件地址字段、内部寄存器地址、轮询持续时间字段、轮询周期字段及剩余时间字段的空白轮询表;
根据所述I2C总线中所述主器件与所述从器件之间的全部通信请求对空白轮询表进行配置,以得到具有不同所述操作数据行的所述轮询表;
对应地,所述根据所述I2C总线中所述主器件与所述从器件之间的全部通信请求对空白轮询表进行配置之后,还包括:
根据所述从器件地址字段对配置后的所述轮询表中的所述操作数据行排列顺序进行自适应调整,以使具有相同从器件地址的所述操作数据行相邻排列;放在一起的从器件之间器件状态不支持模式切换,以达到相同的从器件不用重复进行状态切换。
7.一种电子器件,其特征在于,所述电子器件包括处理器和存储器;其中所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行以实现如权利要求1至5任一项所述的I2C总线控制方法。
8.一种计算机可读存储介质,其特征在于,用于存储计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如权利要求1至5任一项所述的I2C总线控制方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111226321.XA CN113986803B (zh) | 2021-10-21 | 2021-10-21 | 一种i2c总线控制方法、装置、器件及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111226321.XA CN113986803B (zh) | 2021-10-21 | 2021-10-21 | 一种i2c总线控制方法、装置、器件及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113986803A CN113986803A (zh) | 2022-01-28 |
CN113986803B true CN113986803B (zh) | 2024-05-28 |
Family
ID=79739874
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111226321.XA Active CN113986803B (zh) | 2021-10-21 | 2021-10-21 | 一种i2c总线控制方法、装置、器件及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113986803B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113985837B (zh) * | 2021-09-27 | 2023-10-13 | 上海钧正网络科技有限公司 | 一种总线控制方法、装置及设备 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5774732A (en) * | 1995-04-06 | 1998-06-30 | Bull S.A. | Device for managing cyclic pollings for the supervision of computer resources in a network and a process implemented by such a device |
CN1531273A (zh) * | 2003-01-13 | 2004-09-22 | 三星电子株式会社 | 利用节能轮询表来减少功耗的设备和方法 |
KR20090102152A (ko) * | 2008-03-25 | 2009-09-30 | 경희대학교 산학협력단 | 비콘 비가용 모드의 저전력 지그비 센서 네트워크 시스템및 그에 따른 네트워크 통신 방법 |
CN101855624A (zh) * | 2007-09-17 | 2010-10-06 | 苹果公司 | 用于减少功耗和总线活动的方法与装置 |
CN104950829A (zh) * | 2014-03-31 | 2015-09-30 | 奇点新源国际技术开发(北京)有限公司 | 一种总线系统功耗控制方法及装置 |
CN110958713A (zh) * | 2019-11-29 | 2020-04-03 | 武汉智菱物联科技有限公司 | 基于休眠与唤醒机制的低功耗通信方法 |
CN111083016A (zh) * | 2019-12-30 | 2020-04-28 | 北京和利时系统工程有限公司 | 一种轮询表处理方法及装置、存储介质和设备 |
CN111090600A (zh) * | 2019-12-09 | 2020-05-01 | 苏州浪潮智能科技有限公司 | 一种总线共享的方法 |
CN111737173A (zh) * | 2020-06-24 | 2020-10-02 | 浪潮(北京)电子信息产业有限公司 | I2c总线通信控制方法、装置、系统及可读存储介质 |
CN112948312A (zh) * | 2021-04-19 | 2021-06-11 | 深圳市航顺芯片技术研发有限公司 | 芯片控制方法、装置、智能终端及计算机可读存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7739528B2 (en) * | 2006-06-09 | 2010-06-15 | Broadcom Corporation | Method for managing and controlling the low power modes for an integrated circuit device |
US8364862B2 (en) * | 2009-06-11 | 2013-01-29 | Intel Corporation | Delegating a poll operation to another device |
SG11201509226RA (en) * | 2013-05-10 | 2015-12-30 | Agency Science Tech & Res | Communication methods and communication devices |
US20150095537A1 (en) * | 2013-10-02 | 2015-04-02 | Qualcomm Incorporated | Camera control interface sleep and wake up signaling |
-
2021
- 2021-10-21 CN CN202111226321.XA patent/CN113986803B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5774732A (en) * | 1995-04-06 | 1998-06-30 | Bull S.A. | Device for managing cyclic pollings for the supervision of computer resources in a network and a process implemented by such a device |
CN1531273A (zh) * | 2003-01-13 | 2004-09-22 | 三星电子株式会社 | 利用节能轮询表来减少功耗的设备和方法 |
CN101855624A (zh) * | 2007-09-17 | 2010-10-06 | 苹果公司 | 用于减少功耗和总线活动的方法与装置 |
KR20090102152A (ko) * | 2008-03-25 | 2009-09-30 | 경희대학교 산학협력단 | 비콘 비가용 모드의 저전력 지그비 센서 네트워크 시스템및 그에 따른 네트워크 통신 방법 |
CN104950829A (zh) * | 2014-03-31 | 2015-09-30 | 奇点新源国际技术开发(北京)有限公司 | 一种总线系统功耗控制方法及装置 |
CN110958713A (zh) * | 2019-11-29 | 2020-04-03 | 武汉智菱物联科技有限公司 | 基于休眠与唤醒机制的低功耗通信方法 |
CN111090600A (zh) * | 2019-12-09 | 2020-05-01 | 苏州浪潮智能科技有限公司 | 一种总线共享的方法 |
CN111083016A (zh) * | 2019-12-30 | 2020-04-28 | 北京和利时系统工程有限公司 | 一种轮询表处理方法及装置、存储介质和设备 |
CN111737173A (zh) * | 2020-06-24 | 2020-10-02 | 浪潮(北京)电子信息产业有限公司 | I2c总线通信控制方法、装置、系统及可读存储介质 |
CN112948312A (zh) * | 2021-04-19 | 2021-06-11 | 深圳市航顺芯片技术研发有限公司 | 芯片控制方法、装置、智能终端及计算机可读存储介质 |
Non-Patent Citations (1)
Title |
---|
基于Linux的SC16IS752的串口驱动程序设计;于海彬;王斌;陈兴林;周乃新;;自动化与仪表;20131215(第12期);42-47 * |
Also Published As
Publication number | Publication date |
---|---|
CN113986803A (zh) | 2022-01-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6457095B1 (en) | Method and apparatus for synchronizing dynamic random access memory exiting from a low power state | |
TWI468926B (zh) | 處理器電力管理及方法 | |
KR101467439B1 (ko) | 직접 메모리 액세스 컨트롤러 | |
KR101386128B1 (ko) | 직접 메모리 액세스 컨트롤러 | |
US20150095537A1 (en) | Camera control interface sleep and wake up signaling | |
US8018784B2 (en) | Semiconductor device and data processor | |
WO2002069146A2 (en) | Data processing system having an on-chip background debug system and method therefor | |
TW200921671A (en) | Memory control device and semiconductor processing apparatus | |
CN101089838A (zh) | 一种实现i2c读写时序的方法 | |
CN113986803B (zh) | 一种i2c总线控制方法、装置、器件及存储介质 | |
CN100369156C (zh) | 半导体存储器及其控制方法 | |
JP2009510580A (ja) | 電力の節約 | |
US9710169B2 (en) | Managing wait states for memory access | |
CN112948312B (zh) | 芯片控制方法、装置、智能终端及计算机可读存储介质 | |
CN113093899B (zh) | 一种跨电源域数据传输方法 | |
US20160239456A1 (en) | Electronic device for communicating between a microcontroller unit (mcu) and a host processor and related methods | |
US20050198542A1 (en) | Method and apparatus for a variable memory enable deassertion wait time | |
KR100432700B1 (ko) | 저전력 상태로부터 dram 을 출구하기 위한자기-동기화 방법 및 장치 | |
CN106020332A (zh) | 计时处理方法及系统 | |
CN111459560A (zh) | 基于risc-v架构的多核处理器唤醒系统 | |
CN116450555B (zh) | 通过串行外设接口通信的方法及装置 | |
JP2007052685A (ja) | マイクロコントローラ | |
JP3606852B2 (ja) | バス制御システム | |
JPH08202677A (ja) | マイクロコントローラ | |
JP4190969B2 (ja) | バスシステム及びambaにおけるバス調停システム |
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 |