CN115687226A - i2c总线通信方法、装置及可读存储介质 - Google Patents

i2c总线通信方法、装置及可读存储介质 Download PDF

Info

Publication number
CN115687226A
CN115687226A CN202211356342.8A CN202211356342A CN115687226A CN 115687226 A CN115687226 A CN 115687226A CN 202211356342 A CN202211356342 A CN 202211356342A CN 115687226 A CN115687226 A CN 115687226A
Authority
CN
China
Prior art keywords
bus
bus data
slave
data
sending
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.)
Pending
Application number
CN202211356342.8A
Other languages
English (en)
Inventor
王学龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202211356342.8A priority Critical patent/CN115687226A/zh
Publication of CN115687226A publication Critical patent/CN115687226A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Transfer Systems (AREA)

Abstract

本申请实施例提供了一种i2c总线通信方法、装置及可读存储介质,其中,该方法包括:发送i2c总线数据至从设备;获取i2c总线数据的发送次数,并确定发送次数是否大于阈值;确定主设备未成功发送i2c总线数据至从设备,并调整i2c总线的寄存器信息;根据调整后的i2c总线的寄存器信息,重新发送i2c总线数据至从设备,直至主设备成功发送i2c总线数据至从设备。通过本申请,解决了BMC与从设备之间通过i2c通信过程中由于i2c时钟信号的频率不适配或者信息质量差导致的通信失败的问题,降低了硬件修改的成本,提高了i2c通信的稳定性。

Description

i2c总线通信方法、装置及可读存储介质
技术领域
本申请实施例涉及计算机领域,具体而言,涉及一种i2c总线通信方法、装置、计算机可读存储介质与电子设备。
背景技术
BMC是服务器上的基板管理系统,负责服务器的资产信息显示、硬件监控、散热调控、系统配置、远程监控、日志收集、故障诊断、系统维护等重要功能。
i2c总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。
主设备和从设备进行数据传输时遵循以下协议格式。数据通过一条SDA数据线在主设备和从设备之间传输0和1的串行数据。
在一些项目或者有些从设备通信时,通信失败通过修正i2c线路解决,此方法是一次性的,弹性较小,并且只能解决特定的问题,不能作为通用化方案。
因此,亟需一种可以解决BMC与从设备之间通信失败的问题。
发明内容
本申请实施例提供了一种i2c总线通信方法、装置、计算机可读存储介质与电子设备,以至少解决相关技术中BMC与从设备之间通信失败的问题。
根据本申请的一个实施例,提供了一种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总线的SCL信号线的高电平、低电平以及所述高电平与所述低电平电压的所占时钟周期比例。
在一个示例性实施例中,发送所述i2c总线数据至所述从设备之前,包括:对多个启动信号的时钟信号进行采样,将多个所述时钟信号中处于预设电压阈值范围内,且电压阈值持续时间在预设时间范围内的所述启动信号作为目标启动信号,将目标启动信号发送至所述从设备,以激活所述从设备并等待接收所述i2c总线数据。
根据本申请的另一个实施例,提供了一种i2c总线通信装置,应用在主设备中,该装置包括:数据发送单元,用于主设备发送i2c总线数据至从设备;第一确定单元,用于所述主设备获取发送所述i2c总线数据的发送次数,并确定所述发送次数是否大于阈值,则判定所述主设备未成功发送所述i2c总线数据至所述从设备;第二确定单元,用于在所述发送次数是否大于阈值的情况下,确定所述主设备未成功发送所述i2c总线数据至所述从设备,并调整i2c总线的寄存器信息,其中,所述寄存器信息包括i2c总线的时钟信号的频率;数据重新发送单元,用于所述主设备根据调整后的所述i2c总线的寄存器信息,重新发送所述i2c总线数据至所述从设备,直至所述主设备成功发送所述i2c总线数据至所述从设备。
根据本申请的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一种方法实施例中的步骤。
根据本申请的又一个实施例,还提供了一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一种方法。
根据本申请的又一个实施例,还提供了一种i2c总线通信系统,包括电子设备,所述电子设备用于执行上述任一种方法。
通过本申请,由于主设备发送i2c总线数据至从设备;获取所述i2c总线数据的发送次数,并确定所述发送次数是否大于阈值;在所述发送次数是否大于阈值的情况下,确定所述主设备未成功发送所述i2c总线数据至所述从设备,并调整i2c总线的寄存器信息,通过调整i2c总线的寄存器信息实现i2c通信成功,因此,可以解决BMC与从设备之间通过i2c通信过程中由于i2c时钟信号的频率不适配或者信息质量差导致的通信失败的问题,降低了硬件修改的成本,提高了i2c通信的稳定性。
附图说明
图1是根据本申请实施例的一种i2c总线通信方法的移动终端的硬件结构框图;
图2根据本申请实施例的一种i2c总线通信方法的流程图;
图3是根据本申请实施例1的一种i2c总线通信方案的流程图;
图4是根据本申请实施例2的一种i2c总线通信方案的流程图;
图5是根据本申请实施例的一种i2c总线通信装置的结构框图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本申请的实施例。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
本申请实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本申请实施例的一种i2c总线通信方法的移动终端的硬件结构框图。如图1所示,移动终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,其中,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本申请实施例中的一种i2c总线通信方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种运行于上述移动终端的i2c总线通信方法,图2是根据本申请实施例的一种i2c总线通信方法的流程图,如图2所示,该流程包括如下步骤:
步骤S102,发送i2c总线数据至从设备;
步骤S104,获取上述i2c总线数据的发送次数,并确定上述发送次数是否大于阈值;
步骤S106,在上述发送次数大于阈值的情况下,确定上述主设备未成功发送上述i2c总线数据至上述从设备,并调整i2c总线的寄存器信息,其中,上述寄存器信息包括i2c总线的时钟信号的频率;
具体地,通过获取每次发送上述i2c总线数据的发送次数,判断发送次数是否超过了设定阈值,若是超过设定阈值则认为时钟信号的频率不适配,需要调整时钟新型号的频率,实现BMC与从设备之间的正常通信;
步骤S108,根据调整后的上述i2c总线的寄存器信息,重新发送上述i2c总线数据至上述从设备,直至上述主设备成功发送上述i2c总线数据至上述从设备。
通过上述步骤,根据调整后的上述i2c总线的寄存器信息,重新发送上述i2c总线数据至上述从设备,直至上述主设备成功发送上述i2c总线数据至上述从设备。解决了BMC与从设备之间通过i2c通信过程中由于i2c时钟信号的频率不适配或者信息质量差导致的通信失败的问题,降低了硬件修改的成本,提高了i2c通信的稳定性。
其中,上述步骤的执行主体可以为服务器、终端等,但不限于此。
步骤S102和步骤S104的执行顺序是可以互换的,即可以先执行步骤S104,然后再执行S102。
在一个示例性实施例中,获取上述i2c总线数据的发送次数,包括:依次发送上述i2c总线数据的每个字节至上述从设备,并确定上述主设备是否接收到上述从设备反馈的当前字节的有效位;在未接收到上述从设备反馈的当前字节的有效位的情况下,将上述当前字节重新发送,获取上述当前字节的已经发送次数,并确定为上述i2c总线数据的发送次数。
上述方案中,通过从设备反馈的有效ACK,可判断i2c总线数据的每个字节是否发送成功,若发送失败,将上述i2c总线数据的当前字节重新发送,则上述i2c总线数据的每个字节发送次数加1,根据上述i2c总线数据的每个字节发送次数与设定阈值比较,确定i2c总线数据每个字节是否发送失败,通过获取每个字节发送失败的次数确定每个字节是否发送失败,可以减少系统的计算量,获取i2c总线数据是否发送失败的准确性及效率更高,从而进一步保证获取的发送次数较为准确且获取的效率较高。
在一个示例性实施例中,获取上述i2c总线数据的发送次数,包括:依次发送上述i2c总线数据的每个字节至上述从设备,并确定上述主设备是否接收到上述从设备反馈的当前字节的有效位;在接收到上述从设备反馈的所有字节的有效位的情况下,确定上述主设备是否接收到停止信号,在未接收到停止信号的情况下,将所有字节重新发送,获取上述所有字节的已经发送次数,并确定为上述i2c总线数据的发送次数。
具体地,在上述i2c总线数据的每个字节成功发送至从设备后,从设备会反馈停止信号,若没有反馈停止信号,则认为发送i2c总线数据失败,重新发送所有数据,若发送的次数超过设定阈值,例如发送的次数超过三次以上,则判断为时钟信号的频率不适配,需要调整时钟信号,实现BMC与从设备之间的正常通信;通过从设备反馈的停止信号,可判断i2c总线数据是否全部发送成功,若发送失败,将上述i2c总线数据的全部重新发送,则上述i2c总线数据的全部发送次数加1,根据上述i2c总线数据的全部数据发送次数与设定阈值比较,确定i2c总线数据的全部数据是否发送失败,通过获取全部数据发送失败的次数确定全部数据是否发送失败,减少系统的计算量,获取i2c总线数据是否发送失败的准确性及效率更高。
在一个示例性实施例中,根据调整后的上述i2c总线的寄存器信息,重新发送上述i2c总线数据至上述从设备,直至上述主设备成功发送上述i2c总线数据至上述从设备,包括:根据多个设定值依次调整上述i2c总线的时钟信号的频率,每次调整上述i2c总线的时钟信号的频率后,上述主设备重新发送上述i2c总线数据至上述从设备,直至上述主设备成功发送上述i2c总线数据至上述从设备。
具体地,调整i2c总线的寄存器信息,能够实现时钟信号的频率的调整,解决了时钟信号的频率不适配的问题,从而保证BMC与从设备之间的数据传输。
具体地,调整i2c总线的寄存器信息包括:根据经验值表格修改i2c总线的时钟信号的频率,每次调整完i2c总线的寄存器信息后需要重新发送i2c总线数据,直至i2c总线数据发送成功,则认为调整i2c总线的寄存器信息完成,解决了BMC与从设备由于i2c时钟信号的频率导致i2c通信失败的问题。
在一个示例性实施例中,寄存器信息至少还包括:高电平、低电平以及上述高电平与上述低电平电压的所占时钟周期比例;根据多个设定值依次调整上述i2c总线的寄存器信息,还包括:根据上述设定值调整上述i2c总线的SCL信号线的高电平、低电平以及上述高电平与上述低电平电压的所占时钟周期比例。
具体地,调整i2c总线的寄存器信息包括:根据经验值表格修改i2c总线的,高电平与低电平电压的所占时钟周期比例以及时钟信号上升、下降的速度,每次调整完i2c总线的寄存器信息后需要重新发送i2c总线数据,直至i2c总线数据发送成功,则认为调整i2c总线的寄存器信息完成,通过对寄存器信息的高电平、低电平以及上述高电平与上述低电平电压的所占时钟周期比例的调节,可实现i2c时钟信号的传输质量提高。
其中,经验值表格为多次实验后得到的多个经验数据。
在一个示例性实施例中,发送上述i2c总线数据至上述从设备之前,包括:对多个启动信号的时钟信号进行采样,将多个上述时钟信号中处于预设电压阈值范围内,且电压阈值持续时间在预设时间范围内的上述启动信号作为目标启动信号,将目标启动信号发送至上述从设备,以激活上述从设备并等待接收上述i2c总线数据。
具体地,发送上述启动信号至上述从设备前,需要对多个启动信号的时钟信号进行采样,过滤多个上述启动信号的时钟信号的毛刺或者干扰信号,过滤多个上述启动信号的时钟信号的毛刺或者干扰信号包括:采集多个上述启动信号的时钟信号(时钟信号)的高电平高于设定高电平电压阈值的时钟信号、低电平低于预设低电平电压阈值的时钟信号,其中,时钟信号即为clock信号,且时钟信号的高电平、低电平均处于预设电压阈值的范围内,持续时间处于预设的时间范围内的时钟信号作为目标启动信号,例如采集的时钟信号高电平不能低于3V电压值,低电平不能高于0.3V,且高电平、低电平的持续时间大于或等于时钟信号周期的1/4;若高电平、低电平的持续时间不满足上述条件,则认为该电平持续时间太短属于异常拉高或拉低,则不进行采样,通过对启动信号的采样减少i2c通信失败的概率;通过对启动信号过滤毛刺或者干扰信号,减少启动信号的错误信息,同时减少了i2c通信失败的问题。
实施例1
本申请还提供了一种i2c总线通信方案,如图3所示,该方案包括以下步骤:
步骤S202,BMC发送i2c总线数据至从设备;
步骤S204,BMC获取上述i2c总线数据的发送次数,并确定上述发送次数是否大于阈值;具体包括:第一判断条件:BMC向从设备发送完每个Byte数据的第8个位(bit)后,从设备会反馈有效ACK位,若没有反馈有效ACK位,则认为发送Byte数据失败;则记录发送次数,发送次数超过了三次,则判断为时钟信号的频率不适配;第二判断条件:BMC将每个字节成功发送至从设备后,从设备会反馈停止信号,若没有反馈停止信号,则认为发送i2c总线数据失败,重新发送所有数据,记录发送次数,发送次数超过了三次,则判断为时钟信号的频率不适配;
步骤S206,在上述发送次数超过阈值的情况下,确定上述主设备未成功发送上述i2c总线数据至上述从设备,并调整i2c总线的寄存器信息,根据经验值表格修改i2c总线的时钟信号的频率、高电平与低电平电压的所占时钟周期比例以及时钟信号上升、下降的速度,每次调整完i2c总线的寄存器信息后需要重新发送i2c总线数据,直至i2c总线数据发送成功。
实施例2
本申请还提供了一种i2c总线通信方案,如图4所示,该方案包括以下步骤:
步骤S302,BMC与从设备建立连接,发送目标启动信号至从设备;在发送启动信号值从设备之前,对多个启动信号的时钟信号进行采样,过滤多个上述启动信号的时钟信号的毛刺或者干扰信号,获取目标启动信号;
步骤S304,BMC发送i2c总线数据至从设备;
步骤S306,BMC获取上述i2c总线数据的发送次数,并确定上述发送次数是否大于阈值;具体包括:第一判断条件:BMC向从设备发送完每个Byte数据的第8个位(bit)后,从设备会反馈有效ACK位,若没有反馈有效ACK位,则认为发送Byte数据失败;则记录发送次数,发送次数超过了三次,则判断为时钟信号的频率不适配;第二判断条件:BMC将每个字节成功发送至从设备后,从设备会反馈停止信号,若没有反馈停止信号,则认为发送i2c总线数据失败,重新发送所有数据,记录发送次数,发送次数超过了三次,则判断为时钟信号的频率不适配;
步骤S308,在上述发送次数超过阈值的情况下,确定上述主设备未成功发送上述i2c总线数据至上述从设备,并调整i2c总线的寄存器信息,根据经验值表格修改i2c总线的时钟信号的频率、高电平与低电平电压的所占时钟周期比例以及时钟信号上升、下降的速度,每次调整完i2c总线的寄存器信息后需要重新发送i2c总线数据,直至i2c总线数据发送成功。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例上述的方法。
在本实施例中还提供了一种用于i2c总线数据运行的串行数据序列结构,包括:开始条件,地址位,读写位,应答位,数据位,停止条件;开始条件包括:当主设备决定开始通讯时,需要发送启动信号,需要执行以下动作:先将SDA线从高电平切换到低电平;然后将SCL从高电平切换到低电平;在主设备发送启动信号之后,所有从机即使处于睡眠模式也将变为活动状态,并等待接收地址位;地址位包括:通常地址位占7位数据,主设备如果需要向从设备发送/接收数据,首先要发送对应从设备的地址,然后匹配i2c总线上挂载的从设备的地址;读写位包括:该位指定数据传输的方向;如果主设备需要将数据发送到从设备,则该位设置为0;如果主设备需要接收从设备的数据,则将其设置为1。应答位包括:ACK或NACK,主设备每次发送完数据之后会等待从设备的应答信号ACK;在第9个时钟信号,如果从设备发送应答信号ACK,则SDA会被拉低;若没有应答信号NACK,则SDA会输出为高电平,此过程会引起主设备发生重启或者停止;数据位包括:传输的数据总共有8位,由发送方设置,发送方需要将数据位传输到接收方;发送之后会紧跟一个ACK或NACK位,如果接收方的接收器成功接收到数据,则设置为0;否则,接收方保持逻辑“1”;发送方重复发送,直到数据完全传输为止;停止条件包括:当主设备决定结束通讯时,需要发送停止信号,需要执行以下动作;先将SDA线从低电压电平切换到高电压电平;再将SCL线从高电平拉到低电平。
在本实施例中还提供了一种用于i2c总线数据运行的串行数据序列工作过程,包括以下步骤:
第一步,起始条件:主设备通过将SDA线从高电平切换到低电平,再将SCL线从高电平切换到低电平,来向每个连接的从机发送启动条件;第二步,发送从设备地址:主设备向每个从设备发送要与之通信的从设备的7位或10位地址,以及相应的读/写;第三步,接收应答:每个从设备将主设备发送的地址与其自己的地址进行比较。如果地址匹配,则从设备通过将SDA线拉低一位以表示返回一个ACK位;如果来自主设备的地址与从设备自身的地址不匹配,则从设备将SDA线拉高,表示返回一个NACK位;第四步,收发数据:主设备发送或接收数据到从设备;第五步,接收应答:在传输完每个数据帧后,接收设备将另一个ACK位返回给发送方,以确认已成功接收到该帧;第六步,停止通信:为了停止数据传输,主设备将SCL切换为高电平,然后再将SDA切换为高电平,从而向从设备发送停止信号。
其中,主机在SCL线上输出串行时钟信号,数据在SDA线上进行传输,每传输一个字节(在最高位MSB开始传输)后面跟随一个应答位,一个SCL时钟脉冲传输一个数据位。
在本实施例中还提供了一种i2c总线通信装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图5是根据本申请实施例的一种i2c总线通信装置的结构框图,如图5所示,该装置应用在主设备中,该装置包括:数据发送单元100、第一确定单元200、第二确定单元300、数据重发单元600,数据发送单元100,用于主设备发送i2c总线数据至从设备;第一确定单元200,用于上述主设备获取发送上述i2c总线数据的发送次数,并确定上述发送次数是否大于阈值,则判定上述主设备未成功发送上述i2c总线数据至上述从设备;第二确定单元300,用于在上述发送次数是否大于阈值的情况下,确定上述主设备未成功发送上述i2c总线数据至上述从设备,并调整i2c总线的寄存器信息,其中,上述寄存器信息包括i2c总线的时钟信号;数据重新发送单元,用于上述主设备根据调整后的上述i2c总线的寄存器信息,重新发送上述i2c总线数据至上述从设备,直至上述主设备成功发送上述i2c总线数据至上述从设备。
上述装置中,通过主设备发送i2c总线数据至从设备;获取上述i2c总线数据的发送次数,并确定上述发送次数是否大于阈值;在上述发送次数是否大于阈值的情况下,确定上述主设备未成功发送上述i2c总线数据至上述从设备,并调整i2c总线的寄存器信息,通过调整i2c总线的寄存器信息实现i2c通信成功,因此,可以解决BMC与从设备之间通过i2c通信过程中由于i2c时钟信号的频率不适配或者信息质量差导致的通信失败的问题,降低了硬件修改的成本,提高了i2c通信的稳定性。
在一个示例性实施例中,如图5所示,该装置还包括:第三确定单元400,用于上述主设备依次发送上述i2c总线数据的每个字节至上述从设备,并确定上述主设备是否接收到上述从设备反馈的当前字节的有效位,在上述主设备未接收到上述从设备反馈的当前字节的有效位的情况下,将当前字节重新发送,获取第一发送次数,其中,上述第一次发送次数进行累加,直至上述第一发送次数大于设定阈值,则确定上述主设备未成功发送上述i2c总线数据至上述从设备。
在一个示例性实施例中,如图5所示,该装置还包括:第四确定单元500,上述主设备依次发送上述i2c总线数据的每个字节至上述从设备,并确定上述主设备是否接收到上述从设备反馈的当前字节数据有效位;在上述主设备接收到上述从设备反馈的所有字节的有效位的情况下,确定上述主设备是否接收到停止信号,在上述主设备未接收到停止信号的情况下,将所有字节数据重新发送,获取第二发送次数,其中,上述第二次发送次数进行累加,直至上述第二发送次数大于设定阈值,则确定上述主设备未成功发送上述i2c总线数据至上述从设备。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
本申请的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一种方法实施例中的步骤。
在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本申请的实施例还提供了一种电子设备,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一种方法实施例中的步骤。
在一个示例性实施例中,上述电子设备还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.一种i2c总线通信方法,其特征在于,应用在主设备中,所述方法包括:
发送i2c总线数据至从设备;
获取所述i2c总线数据的发送次数,并确定所述发送次数是否大于阈值;
在所述发送次数大于阈值的情况下,确定所述主设备未成功发送所述i2c总线数据至所述从设备,并调整i2c总线的寄存器信息,其中,所述寄存器信息至少包括i2c总线的时钟信号的频率;
根据调整后的所述i2c总线的寄存器信息,重新发送所述i2c总线数据至所述从设备,直至所述主设备成功发送所述i2c总线数据至所述从设备。
2.根据权利要求1所述的方法,其特征在于,获取所述i2c总线数据的发送次数,包括:
依次发送所述i2c总线数据的每个字节至所述从设备,并确定所述主设备是否接收到所述从设备反馈的当前字节的有效位;
在未接收到所述从设备反馈的当前字节的有效位的情况下,将所述当前字节重新发送,获取所述当前字节的已经发送次数,并确定为所述i2c总线数据的发送次数。
3.根据权利要求1所述的方法,其特征在于,获取所述i2c总线数据的发送次数,包括:
依次发送所述i2c总线数据的每个字节至所述从设备,并确定所述主设备是否接收到所述从设备反馈的当前字节的有效位;
在接收到所述从设备反馈的所有字节的有效位的情况下,确定所述主设备是否接收到停止信号,在未接收到停止信号的情况下,将所有字节重新发送,获取所述所有字节的已经发送次数,并确定为所述i2c总线数据的发送次数。
4.根据权利要求1所述的方法,其特征在于,根据调整后的所述i2c总线的寄存器信息,重新发送所述i2c总线数据至所述从设备,直至所述主设备成功发送所述i2c总线数据至所述从设备,包括:
根据多个设定值依次调整所述i2c总线的时钟信号的频率,每次调整所述i2c总线的时钟信号的频率后,所述主设备重新发送所述i2c总线数据至所述从设备,直至所述主设备成功发送所述i2c总线数据至所述从设备。
5.根据权利要求1所述的方法,其特征在于,所述寄存器信息至少还包括:高电平、低电平以及所述高电平与所述低电平电压的所占时钟周期比例。
6.根据权利要求4所述的方法,其特征在于,调整i2c总线的寄存器信息,还包括:
根据所述设定值调整所述i2c总线的SCL信号线的高电平、低电平以及所述高电平与所述低电平电压的所占时钟周期比例。
7.根据权利要求1至6中任意一项所述的方法,其特征在于,发送所述i2c总线数据至所述从设备之前,包括:
对多个启动信号的时钟信号进行采样,将多个所述时钟信号中处于预设电压阈值范围内,且电压阈值持续时间在预设时间范围内的所述启动信号作为目标启动信号,将目标启动信号发送至所述从设备,以激活所述从设备并等待接收所述i2c总线数据。
8.一种i2c总线通信装置,其特征在于,应用在主设备中,所述装置包括:
数据发送单元,用于主设备发送i2c总线数据至从设备;
第一确定单元,用于所述主设备获取发送所述i2c总线数据的发送次数,并确定所述发送次数是否大于阈值,则判定所述主设备未成功发送所述i2c总线数据至所述从设备;
第二确定单元,用于在所述发送次数是否大于阈值的情况下,确定所述主设备未成功发送所述i2c总线数据至所述从设备,并调整i2c总线的寄存器信息,其中,所述寄存器信息至少包括i2c总线的时钟信号的频率;
数据重新发送单元,用于所述主设备根据调整后的所述i2c总线的寄存器信息,重新发送所述i2c总线数据至所述从设备,直至所述主设备成功发送所述i2c总线数据至所述从设备。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现所述权利要求1至7中任一项所述的方法。
10.一种电子设备,其特征在于,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述权利要求1至7中任一项所述的方法。
CN202211356342.8A 2022-11-01 2022-11-01 i2c总线通信方法、装置及可读存储介质 Pending CN115687226A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211356342.8A CN115687226A (zh) 2022-11-01 2022-11-01 i2c总线通信方法、装置及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211356342.8A CN115687226A (zh) 2022-11-01 2022-11-01 i2c总线通信方法、装置及可读存储介质

Publications (1)

Publication Number Publication Date
CN115687226A true CN115687226A (zh) 2023-02-03

Family

ID=85048907

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211356342.8A Pending CN115687226A (zh) 2022-11-01 2022-11-01 i2c总线通信方法、装置及可读存储介质

Country Status (1)

Country Link
CN (1) CN115687226A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115934450A (zh) * 2023-03-08 2023-04-07 苏州浪潮智能科技有限公司 数据传输质量的检测方法、装置、存储介质及电子装置
CN116754936A (zh) * 2023-06-28 2023-09-15 山东卓海能源科技有限公司 一种无触点开关运行监测分析系统

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115934450A (zh) * 2023-03-08 2023-04-07 苏州浪潮智能科技有限公司 数据传输质量的检测方法、装置、存储介质及电子装置
CN116754936A (zh) * 2023-06-28 2023-09-15 山东卓海能源科技有限公司 一种无触点开关运行监测分析系统
CN116754936B (zh) * 2023-06-28 2023-12-22 山东卓海能源科技有限公司 一种无触点开关运行监测分析系统

Similar Documents

Publication Publication Date Title
CN115687226A (zh) i2c总线通信方法、装置及可读存储介质
CN102546784B (zh) 一种基于can总线进行批量升级设备固件的方法
GB2351884A (en) Data transmission method
CN100365994C (zh) 用于调试以太网的方法和装置
CN111752579B (zh) 蓝牙终端升级方法、装置、存储介质与电子设备
CN110996011A (zh) 多相机同步触发系统
CN113721966A (zh) 节点升级方法、装置、存储介质及电子装置
CN112887416B (zh) 发送保活包的频率调整方法及装置
CN112395237A (zh) 一种至少两个控制器之间通信的方法及其系统
CN112822002B (zh) 基于spi的通信方法及装置、电子设备和存储介质
CN113852445A (zh) 一种提高数据传输可靠性的方法、系统、设备和存储介质
JP7210867B2 (ja) 確認パケット伝送方法および通信デバイス
CN111083016B (zh) 一种轮询表处理方法及装置、存储介质和设备
US8331332B2 (en) Wireless USB host and channel time allocation method
CN107222379A (zh) 一种串口通信的方法和装置
CN108988994B (zh) 报文的重传方法及装置
CN116112121A (zh) 无线通信方法、系统、设备及介质
JP2017152930A (ja) 通信システム、および通信最適化装置
US20230403735A1 (en) Message Transmission Method, Terminal and Storage Medium
CN113746217B (zh) 基于趋势判断的无线设备匹配通讯方法及系统与电子设备
CN106708759B (zh) 控制数字输入输出接口的方法、处理器
CN114157674A (zh) 无线通信方法、装置、系统、服务器以及介质
CN113757932B (zh) 空调通讯故障处理方法、装置、计算机设备及存储介质
KR100905607B1 (ko) 기지국 시스템에서 알람 수집 방법
EP4120092A1 (en) Data transmission method and data transmission apparatus based on inter-integrated circuit protocol

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