一种I2C总线的位识别方法、装置、系统及电子设备与流程

文档序号:21629022发布日期:2020-07-29 02:37阅读:218来源:国知局
一种I2C总线的位识别方法、装置、系统及电子设备与流程

本发明涉及通信技术领域,更具体地说,涉及一种i2c总线的位识别方法、装置、系统及电子设备。



背景技术:

参见图1所示的i2c总线的物理拓扑结构。i2c总线在物理连接上非常简单,由sda信号线(串行数据线)、scl信号线(串行时钟线)和上拉电阻组成。其通信原理是,通过控制scl信号线和sda信号线的高低电平时序,来产生i2c总线协议所需的信号,以完成数据的传递。

目前,i2c总线的位识别方法主要依靠时钟线下降沿判断位时间。但i2c总线容易受到外界干扰,时钟线出现一些毛刺会影响到位识别,严重时会导致整帧接收错误。



技术实现要素:

有鉴于此,为解决上述问题,本发明提供一种i2c总线的位识别方法、装置、系统及电子设备。技术方案如下:

一种i2c总线的位识别方法,所述位识别方法包括:

通过电压采样分别还原scl信号线传输的scl波形和sda信号线传输的sda波形;

根据所述i2c总线的波特率计算所述sda波形传输一个比特位的单位时长;

按照所述单位时长进行比特位的计时,并在计时的过程中,利用所述scl波形的时钟线上升沿校准计时结果,校准后的计时结果是分割所述sda波形的基础或依据。

可选的,所述按照所述单位时长进行比特位的计时,包括:

根据所述scl波形和所述sda波形识别所述i2c总线传输的开始位;

当监测到所述scl波形中位于所述开始位后的第一个时钟线下降沿时,启动当前比特位的计时,并在计时结果到达所述单位时长时,结束计时,并进入下一比特位的计时。

可选的,所述利用所述scl波形的时钟线上升沿校准计时结果,包括:

确定待校准的目标比特位;

当当前计时的比特位为所述目标比特位时,监测所述scl波形中的时钟线上升沿,并将监测到所述scl波形的时钟线上升沿时的计时结果调整为所述单位时长的一半。

可选的,所述方法还包括:

获取分割所述sda波形所得到的多个比特位对应的子波形,一个比特位对应一个子波形;

将所述多个比特位的子波形组包为至少一个字节,一个字节由连续的八个比特位的子波形组包而成。

可选的,所述方法还包括:

输出所述至少一个字节。

一种i2c总线的位识别装置,所述位识别装置包括:

波形还原模块,用于通过电压采样分别还原scl信号线传输的scl波形和sda信号线传输的sda波形;

计算模块,用于根据所述i2c总线的波特率计算所述sda波形传输一个比特位的单位时长;

计时模块,用于按照所述单位时长进行比特位的计时,并在计时的过程中,利用所述scl波形的时钟线上升沿校准计时结果,校准后的计时结果是分割所述sda波形的基础或依据。

一种i2c总线的位识别系统,所述位识别系统包括:接入scl信号线的第一总线接入点,与所述第一总线接入点连接的第一高速采集电路,接入sda信号线的第二总线接入点,与所述第二总线接入点连接的第二高速采集电路,分别与所述第一高速采集电路和所述第二高速采集电路连接的芯片;

所述第一高速采集电路,用于通过电压采样所述第一总线接入点还原所述scl信号线传输的scl波形,并发送至所述芯片;

所述第二高速采集电路,用于通过电压采样所述第二总线接入点还原所述sda信号线传输的sda波形,并发送至所述芯片;

所述芯片,用于接收所述scl波形和所述sda波形;根据所述i2c总线的波特率计算所述sda波形传输一个比特位的单位时长;按照所述单位时长进行比特位的计时,并在计时的过程中,利用所述scl波形的时钟线上升沿校准计时结果,校准后的计时结果是分割所述sda波形的基础或依据。

可选的,所述位识别系统还包括:与所述芯片连接的存储器;

所述芯片,还用于获取分割所述sda波形所得到的多个比特位对应的子波形,一个比特位对应一个子波形;将所述多个比特位的子波形在所述存储器中组包为至少一个字节,一个字节由连续的八个比特位的子波形组包而成。

可选的,所述位识别系统还包括:与所述芯片连接的总线接口;

所述芯片,还用于通过所述总线接口输出所述至少一个字节。

一种电子设备,所述设备包括:如上述任一项所述的位识别系统。

本发明提供的i2c总线的位识别方法、装置、系统及电子设备,可以通过电压采样还原scl波形和sda波形,进一步根据i2c总线的波特率计算sda波形传输一个比特位的单位时长,并在按照单位时长进行比特位的计时的过程中,利用scl波形的时钟线上升沿校准计时结果,校准后的计时结果是分割sda波形的基础或依据。本发明以i2c总线的波特率和scl波形的时钟线上升沿相结合的方式进行位识别,可以减少甚至避免i2c总线受到外界干扰所造成的帧接收错误,大幅提高了i2c总线接收的准确率和稳定性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例提供的i2c总线的物理拓扑结构;

图2为本发明实施例提供的数据传输示意图;

图3为本发明实施例提供的i2c总线的位识别方法的方法流程图;

图4为本发明实施例提供的i2c总线的位识别装置的结构示意图;

图5为本发明实施例提供的i2c总线的位识别系统的结构示意图;

图6为本发明实施例提供的i2c总线的位识别系统的结构示意图;

图7为本发明实施例提供的i2c总线的位识别系统的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在本发明中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

继续参见图1所示的i2c总线的物理拓扑结构。i2c总线的通信原理是,通过控制scl信号线和sda信号线的高低电平时序,来产生i2c总线协议所需的信号,以完成数据的传递。在i2c总线处于空闲状态时,scl信号线和sda信号线的电平被各自对应的上拉电阻拉高,保持着高电平。需要说明的是,图1中vcc表示供电电压。

i2c协议规定,i2c总线上数据的传输必须以一个起始信号作为传输的起始条件、以一个结束信号作为传输的停止条件。i2c总线处于空闲状态时,scl信号线和sda信号线都保持着高电平,当scl信号线处于高电平、而sda信号线产生由高电平到低电平的跳变,则表示产生了一个起始信号;当scl信号线处于高电平、而sda信号线产生由低电平到高电平的跳变,则表示产生了一个结束信号。

参见图2所示的数据传输示意图。i2c总线上数据的传输以字节为单位。主设备(比如,图1中的s3c2440mcu)在scl信号线每产生一个时钟脉冲的过程中将在sda信号线上传输一个比特位,并且,当按照比特位由高位到低位的顺序传输完一个字节的数据后,从设备(比如,图1中的其他i2c接口器件)将拉低sda信号线,回传给主设备一个应答位。此时,才认为一个字节真正被传输完成。其中,需要说明的是图2中msb是mostsignificantbit的缩写,指最高有效位,lsb是linuxstandardsbase的缩写,指最低有效位。ack的全称为acknowledgecharacter,即确认字符(也叫应答位),表示接收到的字符无错误。

现阶段,i2c总线的位识别主要包括检测i2c总线上传输数据的开始位、以及基于sda信号线的时钟线下降沿监测比特位。

具体的,i2c总线处于空闲状态时,scl信号线和sda信号线都保持着高电平,一旦检测到sda信号线上出现由高电平到低电平的跳变(即时钟线下降沿),而此时scl信号线依然处于高电平,则认定检测到开始位(即图2中的起始条件,以s表示)。此时,开始一个字节的接收。

进一步,在开始接收字节后,sda信号线会出现一个时钟线下降沿,此后继续监测sda信号线的电平,sda信号线每出现一次时钟线下降沿,即认定sda信号线上接收到一个比特位的数据。

但i2c总线容易受到外界干扰,sda信号线的时钟线会出现毛刺,这就会影响比特位识别的准确性,严重时会导致整帧接收错误。

为解决上述问题,本发明提供一种i2c总线的位识别方法,该方法的方法流程图如图3所示,包括如下步骤:

s10,通过电压采样分别还原scl信号线传输的scl波形和sda信号线传输的sda波形。

本发明实施例中,可以按照一定的采样率和采样间隔,对scl信号线和sda信号线的电压进行采样,经过ad转换将scl信号线的电压转换为scl波形、将sda信号线的电压转换为sda波形。scl波形和sda波形的示例可参见图2。

以采样率为200msps、采样间隔为5ns、i2c总线的波特率为100kbps为例,通过电压采样,可以实现一个比特位采集200个点,从而对波形进行很好的还原。

s20,根据i2c总线的波特率计算sda波形传输一个比特位的单位时长。

本发明实施例中,可以将i2c总线的波特率的倒数作为一个比特位的单位时长。比如,i2c总线的波特率设置为100kbps时,比特位的单位时长为10us;再比如,i2c总线的波特率设置为400kbps时,比特位的单位时长为2.5us。

s30,按照单位时长进行比特位的计时,并在计时的过程中,利用scl波形的时钟线上升沿校准计时结果,校准后的计时结果是分割sda波形的基础或依据。

本发明实施例中,如果检测到i2c总线上传输的起始条件,即scl信号线处于高电平、而sda信号线产生由高电平到低电平的跳变,认定检测到开始位,开始一个字节的接收。

进一步,启动内置的计时器进行计时,该计时器一次计时的时间可以设置为单位时长,即计时器的计时结果每到一次单位时长即认定接收到sda信号线传输的一个比特位。计时器翻转则开始下一比特位的计时。

继续参见图2所示的数据传输示意图。scl波形出现时钟线上升沿的位置对应着sda波形传输一个比特位的中间位置。因此,在计时器计时的过程中,同时监测scl波形的时钟脉冲。如果监测到scl波形出现时钟线上升沿,则将计时器的计时结果调整为单位时长的一半,这样在字节传输中将针对比特位的计时结果与sda波形进行了同步校准,保证了i2c总线解析时序的正确性。

在其他一些实施例中,为提高比特位计时的准确性,步骤s30中“按照单位时长进行比特位的计时”可以采用如下步骤:

根据scl波形和sda波形识别i2c总线传输的开始位;当监测到scl波形中位于开始位后的第一个时钟线下降沿时,启动当前比特位的计时,并在计时结果到达单位时长时,结束计时,并进入下一比特位的计时。

本发明实施例中,识别i2c总线传输的开始位可以参见以上描述,在此不再赘述。

继续参见图2所示的数据传输示意图。当检测开始位的时刻sda信号线还未开始传输数据,此时开始计时存在一定的同步校准误差。因此,本发明实施例中,在检测到开始位后,继续监测scl波形,当监测到scl波形中第一个时钟线下降沿后,再启动计时器计时,进入第一个比特位的计时,通过计时器翻转完成所有比特位的计时。

在其他一些实施例中,为降低数据运算量,步骤s30中“利用scl波形的时钟线上升沿校准计时结果”可以采用如下步骤:

确定待校准的目标比特位;当当前计时的比特位为目标比特位时,监测scl波形中的时钟线上升沿,并将监测到scl波形的时钟线上升沿时的计时结果调整为单位时长的一半。

本发明实施例中,可以由预先指定用于同步校准的比特位,比如字节的最高比特位。以最高比特位作为待校准的目标比特位为例,在每次监测到sda波形当前所传输的比特位为最高比特位、即计时器当前计时的比特位为最高比特位后,如果监测到scl波形出现时钟线上升沿,则将计时器针对该最高比特位的计时结果调整为单位时长的一半。

需要说明的是,scl波形出现时钟线上升沿为一个连续过程,即scl波形由低电平到高电平的跳变过程。为精确调整计时器计时结果的时机,可以指定scl波形由低电平到高电平跳变过程中出现某个电平点,比如电平值为高电平一半的电平点的时刻为调整计时器计时结果的时刻。这样就严格保证了计时结果与sda波形同步校准的精准性。

在其他一些实施例中,为获得sda信号线传输的字节,本发明实施例提供的i2c总线的位识别方法还包括如下步骤:

获取分割sda波形所得到的多个比特位对应的子波形,一个比特位对应一个子波形;将多个比特位的子波形组包为至少一个字节,一个字节由连续的八个比特位的子波形组包而成。

本发明实施例中,由于一个字节由八个比特位的数据构成、且每个字节传输后都跟随一个停止位(即图2中的停止条件,以p表示),因此在按照校准后的计时结果将sda波形分割为各比特位对应的子波形后,可以按照数据传输时序将连续的8个比特位的子波形组包为一个字节的数据。

在此基础上,还可以进一步输出至少一个字节,以实现数据展示。

本发明实施例提供的i2c总线的位识别方法,以i2c总线的波特率和scl波形的时钟线上升沿相结合的方式进行位识别,可以减少甚至避免i2c总线受到外界干扰所造成的帧接收错误,大幅提高了i2c总线接收的准确率和稳定性。

基于上述实施例提供的i2c总线的位识别方法,本发明实施例则对应提供一种执行上述i2c总线的位识别方法的装置,该装置的结构示意图如图4所示,包括:

波形还原模块101,用于通过电压采样分别还原scl信号线传输的scl波形和sda信号线传输的sda波形。

计算模块102,用于根据i2c总线的波特率计算sda波形传输一个比特位的单位时长。

计时模块103,用于按照单位时长进行比特位的计时,并在计时的过程中,利用scl波形的时钟线上升沿校准计时结果,校准后的计时结果是分割sda波形的基础或依据。

可选的,用于按照单位时长进行比特位的计时的计时模块103,具体用于:

根据scl波形和sda波形识别i2c总线传输的开始位;当监测到scl波形中位于开始位后的第一个时钟线下降沿时,启动当前比特位的计时,并在计时结果到达单位时长时,结束计时,并进入下一比特位的计时。

可选的,用于利用scl波形的时钟线上升沿校准计时结果的计时模块103,具体用于:

确定待校准的目标比特位;当当前计时的比特位为目标比特位时,监测scl波形中的时钟线上升沿,并将监测到scl波形的时钟线上升沿时的计时结果调整为单位时长的一半。

可选的,上述i2c总线的位识别装置还包括:

组包模块,用于获取分割sda波形所得到的多个比特位对应的子波形,一个比特位对应一个子波形;将多个比特位的子波形组包为至少一个字节,一个字节由连续的八个比特位的子波形组包而成。

可选的,组包模块,还用于:

输出至少一个字节。

本发明实施例提供的i2c总线的位识别装置,以i2c总线的波特率和scl波形的时钟线上升沿相结合的方式进行位识别,可以减少甚至避免i2c总线受到外界干扰所造成的帧接收错误,大幅提高了i2c总线接收的准确率和稳定性。

基于上述实施例提供的i2c总线的位识别方法及装置,本发明实施例还提供一种i2c总线的位识别系统,该系统的结构示意图如图5所示,包括:

接入scl信号线的第一总线接入点201,与第一总线接入点连接的第一高速采集电路202,接入sda信号线的第二总线接入点203,与第二总线接入点连接的第二高速采集电路204,分别与第一高速采集电路和第二高速采集电路连接的芯片205。

第一高速采集电路202,用于通过电压采样第一总线接入点201还原scl信号线传输的scl波形,并发送至芯片205。

第二高速采集电路204,用于通过电压采样第二总线接入点203还原sda信号线传输的sda波形,并发送至芯片205。

芯片205,用于接收scl波形和sda波形;根据i2c总线的波特率计算sda波形传输一个比特位的单位时长;按照单位时长进行比特位的计时,并在计时的过程中,利用scl波形的时钟线上升沿校准计时结果,校准后的计时结果是分割sda波形的基础或依据。

本发明实施例中,第一高速采集电路202和第二高速采集电路204均由一个信号调理电路和两个ad芯片构成。芯片205可以采用的xilinxv7系列的fpga,在完成从第一高速采集电路202和第二高速采集电路204各自的ad芯片接收信号后,根据i2c总线的特征对scl波形和sda波形进行电气层和协议层分析。

可选的,芯片205按照单位时长进行比特位的计时的过程,包括:

根据scl波形和sda波形识别i2c总线传输的开始位;当监测到scl波形中位于开始位后的第一个时钟线下降沿时,启动当前比特位的计时,并在计时结果到达单位时长时,结束计时,并进入下一比特位的计时。

可选的,芯片205利用scl波形的时钟线上升沿校准计时结果的过程,包括:

确定待校准的目标比特位;当当前计时的比特位为目标比特位时,监测scl波形中的时钟线上升沿,并将监测到scl波形的时钟线上升沿时的计时结果调整为单位时长的一半。

可选的,参见图6所示的i2c总线的位识别系统,本发明实施例提供的i2c总线的位识别系统还包括:与芯片205连接的存储器206;

芯片205,还用于获取分割sda波形所得到的多个比特位对应的子波形,一个比特位对应一个子波形;将多个比特位的子波形在存储器206中组包为至少一个字节,一个字节由连续的八个比特位的子波形组包而成。

本发明实施例中,存储器206可以为ddr存储器。

可选的,参见图7所示的i2c总线的位识别系统,本发明实施例提供的i2c总线的位识别系统还包括:与芯片205连接的总线接口207;

芯片205,还用于通过总线接口207输出至少一个字节。

本发明实施例中,总线接口207可以为pcie(peripheralcomponentinterconnectexpress,高速串行计算机扩展总线标准)接口。芯片205将比特位的子波形在ddr中组包后,通过pcie接口上传给上位机,由上位机进行数据展示。

本发明实施例提供的i2c总线的位识别系统,以i2c总线的波特率和scl波形的时钟线上升沿相结合的方式进行位识别,可以减少甚至避免i2c总线受到外界干扰所造成的帧接收错误,大幅提高了i2c总线接收的准确率和稳定性。

基于上述实施例提供的i2c总线的位识别系统,本发明实施例还提供一种电子设备,该电子设备包括上述任一i2c总线的位识别系统。

需要说明的是,以上i2c总线的位识别装置和i2c总线的位识别系统的技术方案细化过程,可以参见i2c总线的位识别方法的描述。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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