具体实施方式
为了能够更加详尽地了解本公开实施例的特点与技术内容,下面结合附图对本公开实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本公开实施例。在以下的技术描述中,为方便解释起见,通过多个细节以提供对所披露实施例的充分理解。然而,在没有这些细节的情况下,一个或多个实施例仍然可以实施。在其它情况下,为简化附图,熟知的结构和装置可以简化展示。
本公开实施例的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开实施例的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含。
除非另有说明,术语“多个”表示两个或两个以上。本公开实施例中,字符“/”表示前后对象是一种“或”的关系。例如,A/B表示:A或B。术语“和/或”是一种描述对象的关联关系,表示可以存在三种关系。例如,A和/或B,表示:A或B,或,A和B这三种关系。术语“对应”可以指的是一种关联关系或绑定关系,A与B相对应指的是A与B之间是一种关联关系或绑定关系。
串行***接口SPI的最大时钟频率一般由芯片的PLL(Phase Locked Loop,锁相回路或锁相环)分频得到。PLL时钟一般为200-300M。由于CPU配置移位寄存器(shiftRegitser)按照SPI CLOCK将数据移入或者移出内部缓存区(SPI buffer),通过SPI数据线进行数据传输时,SPI CLOCK 一般由总线时钟分频得到。SPI有四种基本的传输时序,取决于时钟极性CPOL和时钟相位CPHA的组合,例如当CPOL=0,CPHA=0时,数据在第一个跳变沿采样。当SPI的数据传输速率较高时,由于数据存在输入和输出时的路径延迟,导致数据在采样时不准确。本公开实施例通过调整时钟占空比和采样时刻,能够降低路径延迟带来的影响,明显提高数据采样的准确性。
结合图1所示,本公开实施例提供一种用于串行***接口总线数据传输的方法,包括以下步骤:
S101,获得串行***接口总线数据传输的实际路径延迟。
路径延迟也叫路径时间,是指信号从起始断电传播到终止端点所用的时间。实际应用中,获得串行***接口SPI数据传输的实际路径延迟。
S102,在实际路径延迟大于预设路径延迟的情况下,获得时钟分频参数。
预设路径延迟可以是在较高波特率通信下测试到的数据采样较为准确的路径延迟。在该路径延迟下,数据传输的采样失误率在可接受范围内。当获取到的实际路径延迟大于预设路径延迟时,获取时钟分频参数,调整数据传输的占空比和采样时刻,来提高数据采样的准确性。
这里,时钟分频参数包括第一时钟分频参数、第二时钟分频参数和第三时钟分频参数。第一时钟分频参数、第二时钟分频参数和第三时钟分频参数限定一个采样周期,其中,第一时钟分频参数限定采样周期的同步段、第二时钟分频参数限定采样周期的传播段,第三时钟分频参数限定采样周期的缓冲段。
S103,根据时钟分频参数调整数据传输的占空比和采样时刻。
可选地,根据时钟分频参数调整数据传输的占空比,包括按照如下公式计算占空比:
S=EconA/(EconB+EconC)
其中,S为占空比,EconA为第一时钟分频参数,EconB为第二时钟分频参数,EconC为第三时钟分频参数。
结合图4所示,在第一时钟分频参数EconA等于第二时钟分频参数EconB和第三时钟分频参数EconC之和,即EconA=EconB+EconC时,数据传输采样时钟的占空比为50%。在实际应用中,本领域技术人员也可以根据实际需求调整数据传输采样时钟的占空比,在此不作限制。
可选地,根据时钟分频参数调整数据传输的采样时刻,包括:根据第一时钟分频参数确定第一采样时段;根据第二时钟分频参数和第三时钟分频参数确定第二采样时段;其中,第二采样时段位于第一采样时段之后;控制采样时刻处于第二采样时段内。
结合图4所示,当EconA=4,EconB=0,EconC=3时,在同步时间段tQ结束后即进行采样;当EconA=2,EconB=0,EconC=2时,在同步时间段tQ结束后即进行采样;当EconA=4,EconB=1,EconC=3时,在同步时间段tQ结束的第一时间段后进行采样;当EconA=3,EconB=3,EconC=1时,在同步时间段tQ结束后的第三时间段后进行采样;当EconA=1,EconB=0,EconC=1时,在同步时间段tQ结束后即进行采样。
实际应用中,结合图5所示,原数据传输的采样时刻位于每一采样周期的初始阶段。调整数据传输的采样时刻后,结合图6所示,数据传输的采样时刻位于第一采样时段之后,且位于第二采样时段内,即位于第一时钟分频参数EconA后,且位于第二时钟分频参数EconB和第三时钟分频参数EconC之间。其中,SCLKO为接口时钟;MTSR也叫MOSI,为自master输出至slave的数据线(输出数据);MRST也叫MISO,为自slave输出至master的数据线(输出数据);SLSO为片选信号。
采用本公开实施例提供的用于串行***接口总线数据传输的方法,检测串行***接口总线数据传输的实际路径延迟,当实际路径延迟大于预设路径延迟时,根据时钟分频参数来调整数据传输的占空比和采样时刻。这样,当串行***接口SPI的数据传输速率较高时,通过调整数据传输的占空比和采样时刻,降低路径延迟带来的影响,能够明显提高采样准确性。
结合图2所示,本公开实施例提供一种用于串行***接口总线数据传输的方法,其确定时钟分频参数的方式包括以下步骤:
S201,获得数据传输的期望数据传输速率。
S202,根据期望数据传输速率确定时钟分频参数。
可选地,根据期望数据传输速率确定时钟分频参数,包括按照如下公式计算第一时钟分频参数、第二时钟分频参数和第三时钟分频参数:
EconA+EconB+EconC=fper/((GlobalconTQ+1)×(EconQ+1)×BR)-1
即,EconA+EconB+EconC+1=fper/((GlobalconTQ+1)×(EconQ+1)×BR)。
其中,EconA为第一时钟分频参数,EconB为第二时钟分频参数,EconC为第三时钟分频参数,GlobalconTQ为全局时钟分频单元,EconQ为时钟分频量子单元,fper为移位时钟,BR为期望数据传输速率。
实际应用中,(EconA+EconB+EconC+1)×(EconQ+1)≥4。按照上述公式,可以根据基于第一时钟分频参数EconA、第二时钟分频参数EconB和第三时钟分频参数EconC确定的占空比的取值,确定第一时钟分频参数EconA、第二时钟分频参数EconB和第三时钟分频参数EconC。
本公开实施例中,根据期望数据传输速率确定时钟分频参数,在根据时钟分频参数调整数据采样的占空比和采样时刻从而提高数据采样的准确性的同时,可以将数据传输速率控制在符合实际数据传输需求的数据传输速率范围内,避免数据传输波特率过高而对采样准确性造成更大影响。
结合图3所示,本公开实施例提供一种用于串行***接口总线数据传输的方法,包括以下步骤:
S301,获得串行***接口总线数据传输的实际路径延迟。
S302,在实际路径延迟大于预设路径延迟的情况下,获得时钟分频参数。
S303,根据时钟分频参数调整数据传输的占空比和采样时刻。
S304,获得数据传输的实时数据传输进展。
这里,实时数据传输进展包括缓存数据长度和传输数据功能状态。缓存数据长度即缓存数据的数量,例如,缓存数据的数量为2,则缓存数据长度设置为2;传输数据功能状态包括开启或关闭。
S305,根据实时数据传输进展切换当前数据移位请求状态。
结合图7所示,数据移位请求状态包括等待(WAIT)状态、空闲(IDLE)状态、数据前导(LEAD)状态、数据传输(DATA)状态、追踪延时(TRAIL)状态和超时检测(EXPECT)状态。
等待(WAIT)状态:等待写入Tx FIFO,是一个无明确定义的阶段,因此没有预留用户调整的接口。
空闲(IDLE)状态:分为LDLEA状态和LDLEB状态,称为空闲时间,用于SCLK 时钟极性的转换,在LDLEA 结束,LDLEB开始的时刻,时钟线的极性改变。
数据前导(LEAD)状态:数据准备状态,片选信号拉低后,马上进入前导阶段,通过用户配置BACON 寄存器的LEAD 和LPRE 配置LEAD的延时时间。延时时间结束后,SCLK 时钟到来,开始采样。
数据传输(DATA)状态:片选信号拉低,数据根据时钟线极性的变化移位,完成数据的传输。
追踪延时(TRAIL)状态:当一个8bits 或者32bits 数据发送结束后,进入TRAIL状态,等待下一个数据的到来。如果配置的数据未发送完成,该阶段通过用户配置BACON 寄存器的TRAIL 和TPRE 来配置延时时间的长短。
超时检测(EXPECT)状态:用作long data 模式下,或者在continuous模式下,一个数据发送结束后,片选线不拉高,开始进入EXPECT阶段,等待下一个移位数据的到来。延时通过用户配置寄存器GLOBALCON.EXPECT来决定,当等待时间超过EXPECT时间后,将会产生一个error中断,交给CPU 处理。
可选地,根据实时数据传输进展切换当前数据移位请求状态,包括:在缓存数据长度达到空闲长度的情况下,将当前数据移位请求状态切换至数据前导状态;在缓存数据长度达到传输长度的情况下,将当前数据移位请求状态切换至数据传输状态;其中,传输长度大于空闲长度。
可选地,根据实时数据传输进展切换当前数据移位请求状态,包括:在缓存数据长度达到延时长度,且传输数据功能状态为关闭的情况下,将当前数据移位请求状态切换至暂停状态;在缓存数据长度达到延时长度,且数据传输功能状态为开启的情况下,将当前数据移位请求状态切换至等待状态。
实际应用中,结合图8所示,串行***接口SPI的数据传输状态按照如下方式进行切换:
在SPI的当前数据移位请求状态为暂停PAUSE状态的情况下:当SPI模块使能,配置为主模式时,将当前数据移位请求状态切换至等待WAIT状态;当SPI模块使能,配置为从模式,且片选信号为有效状态时,将当前数据移位请求状态切换至从机SLAVES状态。
在SPI的当前数据移位请求状态为等待WAIT状态的情况下:当相位补偿FIFO寄存器TXFIFO为非空时,将当前数据移位请求状态切换至数据前导IDLEA状态;当TXFIFO为空时,将当前数据移位请求状态保持为等待WAIT状态。
在SPI的当前数据移位请求状态为空闲IDLEA状态的情况下:当缓冲数据长度达到配置的空闲IDLE长度时,将当前数据移位请求状态切换至空闲IDLEB状态;当缓冲数据长度未达到配置的空闲长度时,将当前数据移位请求状态保持为空闲IDLEA状态。
在SPI的当前数据移位请求状态为空闲IDLEB状态的情况下:当缓冲数据长度达到配置的空闲IDLE长度,且延迟delayed模式开启时,将当前数据移位请求状态切换至数据前导IEADS状态;当缓冲数据长度达到配置的空闲IDLE长度,且延迟delayed模式开启时,将当前数据移位请求状态切换至数据前导IEAD状态。
在SPI的当前数据移位请求状态为数据前导LEADS状态的情况下:当缓冲数据长度达到配置的准备STROBE长度时,将当前数据移位请求状态切换至数据前导IEAD状态;当缓冲数据长度未达到配置的准备STROBE长度时,将当前数据移位请求状态保持为数据前导IEADS状态。
在SPI的当前数据移位请求状态为数据前导LEAD状态的情况下:当缓冲数据长度达到配置的前导LEAD长度时,将当前数据移位请求状态切换至数据传输DATA状态;当缓冲数据长度未达到配置的前导LEAD长度时,将当前数据移位请求状态保持为数据前导LEAD状态。
在SPI的当前数据移位请求状态为数据传输DATA状态的情况下:当缓冲数据长度达到配置的传输DATA长度,且数据传输完成时,将当前数据移位请求状态切换至追踪延时TRAIL状态;当缓冲数据长度未达到配置的传输DATA长度,且TXFIFO为空时,将当前数据移位请求状态切换至超时检测EXPECT状态。
在SPI的当前数据移位请求状态为追踪延时TRAIL状态的情况下:当缓冲数据长度达到配置的延时TRAIL长度,帧结束或点对点MC模式下缓冲数据长度递减到0,且延迟delayed模式开启时,将当前数据移位请求状态切换至追踪延时TRAILS状态;当缓冲数据长度达到配置的延时TRAIL长度,帧结束或点对点MC模式下缓冲数据长度递减到0,延迟delayed模式关闭且传输数据功能状态为打开时,将当前数据移位请求状态切换至等待WAIT状态;当缓冲数据长度达到配置的延时TRAIL长度,帧结束或点对点MC模式下缓冲数据长度递减到0,延迟delayed模式关闭且传输数据功能状态为关闭时,将当前数据移位请求状态切换至暂停PAUSE状态;当缓冲数据长度达到配置的延时TRAIL长度,帧结束或点对点MC模式下缓冲数据长度递减到0,且TXFIFO为非空时,将当前数据移位请求状态切换至数据传输DATAT状态;当缓冲数据长度达到配置的延时TRAIL长度,帧结束或点对点MC模式下缓冲数据长度递减到0,且TXFIFO为空时,将当前数据移位请求状态切换至超时检测EXPECT状态。
在SPI的当前数据移位请求状态为追踪延时TRAILS状态的情况下:当缓冲数据长度达到配置的延时TRAILS长度,且传输数据功能状态为关闭时,将当前数据移位请求状态切换至暂停PAUSE状态;当缓冲数据长度达到配置的延时TRAILS长度,且传输数据功能状态为开启时,将当前数据移位请求状态切换至等待WAIT状态。
在SPI的当前数据移位请求状态为从机SLAVES状态的情况下:当从机片选无效或传输数据功能状态为关闭时,将当前数据移位请求状态切换至暂停PAUSE状态;当从机片选有效,传输数据功能状态为打开,且检测到从机时钟上升沿时,将当前数据移位请求状态切换至从机SLAVE状态。
在SPI的当前数据移位请求状态为从机SLAVE状态的情况下:当从机片选无效时,将当前数据移位请求状态切换至暂停PAUSE状态;当从机片选有效,且缓冲数据长度达到配置的传输DATA长度时,将当前数据移位请求状态切换至从机SLAVES状态;当从机片选有效,且缓冲数据长度未达到配置的传输DATA长度时,将当前数据移位请求状态保持为从机SLAVE状态。
采用本公开实施例提供的用于串行***接口总线数据传输的方法,当串行***接口SPI(总线)的数据传输速率较高时,通过调整串行***接口总线数据传输的占空比和采样时刻,降低路径延迟带来的影响,能够明显提高采样准确性;同时,根据SPI数据传输的实时数据传输进展切换当前数据移位请求状态,有助于及时完成数据传输,并有效避免数据拥堵,提高数据传输速率。
结合图9所示,本公开实施例提供一种用于串行***接口总线数据传输的装置,包括处理器(processor)90和存储器(memory)91,还可以包括通信接口(CommunicationInterface)92和总线93。其中,处理器90、通信接口92、存储器91可以通过总线93完成相互间的通信。通信接口92可以用于信息传输。处理器90可以调用存储器91中的逻辑指令,以执行上述实施例的用于串行***接口总线数据传输的方法。
此外,上述的存储器91中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
存储器91作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序,如本公开实施例中的方法对应的程序指令/模块。处理器90通过运行存储在存储器91中的程序指令/模块,从而执行功能应用以及数据处理,即实现上述方法实施例中的用于串行***接口总线数据传输的方法。
存储器91可包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序;存储数据区可存储根据终端设备的使用所创建的数据等。此外,存储器91可以包括高速随机存取存储器,还可以包括非易失性存储器。
采用本公开实施例提供的用于串行***接口总线数据传输的装置,检测串行***接口总线数据传输的实际路径延迟,当实际路径延迟大于预设路径延迟时,根据时钟分频参数来调整数据传输的占空比和采样时刻。这样,当串行***接口SPI的数据传输速率较高时,通过调整数据传输的占空比和采样时刻,降低路径延迟带来的影响,能够明显提高采样准确性。
结合图10所示,本公开实施例提供一种用于串行***接口总线数据传输的***,包括数据输入模块1001、数据缓存模块1002、数据输出模块1003、***总线接口模块1004以及调节模块1005,其中:数据输入模块1001被配置为接收数据;数据缓存模块1002与数据输入模块1001电连接,被配置为缓存数据;数据输出模块1003与数据缓存模块1002电连接,被配置为输出数据;***总线接口模块1004与数据输入模块1001、数据缓存模块1002和数据输出模块1003电连接,被配置为数据输入模块1001、数据缓存模块1002和数据输出模块1003提供时钟;调节模块1005,与***总线接口模块1004电连接,包括上述的用于串行***接口总线数据传输的装置。
数据输入模块1001和数据输出模块1003包括用于与外部设备进行主向从MISO、从向主MOSI、片选和时钟通道。对于本公开实施例中的SPI,当SPI作为主机时,支持同时控制16个从设备;当SPI作为从机时,支持同时挂载7个输入设备。SPI可以自动控制多路从机片选,通过写入队列的配置自动切换片选信号。
数据缓存模块1002用于缓存临时数据并将数据存入FIFO(First in first out,先进先出)寄存器,完成数据交换。数据位宽可配置为2-32bits或2-32bytes。主模式下,用户可以通过写入不同的配置实现多种数据格式和延时控制。同时,FIFO支持配置不同的模式来触发DMA(Direct Memory Access,直接存储器访问)或中断来实现数据传输。
***总线接口模块1004为数据输入模块1001、数据缓存模块1002和数据输出模块1003提供时钟。数据缓存模块1002与外设PLL时钟同步,外设PLL时钟最高可达300M,通过SPI的用户接口中的分频寄存器实现分频,最终为SPI数据移位提供时钟。
调节模块1005内置4位的Tx FIFO(相位补偿FIFO)和 Rx FIFO(时钟补偿FIFO),用于双工通信过程中的数据缓冲,还包括前述的用于串行***接口总线数据传输的装置,用于配置数据传输模式并进行时序控制。
结合图11所示,本公开实施例提供了一种电子设备(例如:计算机、服务器等),包含电子设备主体1100;以及上述的用于串行***接口总线数据传输的装置900,被安装于电子设备主体1100。
本公开实施例提供了一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为执行上述用于串行***接口总线数据传输的方法。
本公开实施例提供了一种计算机程序产品,所述计算机程序产品包括存储在计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行上述用于测试报警感测器极限参数的方法。
上述的计算机可读存储介质可以是暂态计算机可读存储介质,也可以是非暂态计算机可读存储介质。
本公开实施例的技术方案可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括一个或多个指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开实施例所述方法的全部或部分步骤。而前述的存储介质可以是非暂态存储介质,包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等多种可以存储程序代码的介质,也可以是暂态存储介质。
以上描述和附图充分地示出了本公开的实施例,以使本领域的技术人员能够实践它们。其他实施例可以包括结构的、逻辑的、电气的、过程的以及其他的改变。实施例仅代表可能的变化。除非明确要求,否则单独的部件和功能是可选的,并且操作的顺序可以变化。一些实施例的部分和特征可以被包括在或替换其他实施例的部分和特征。本公开实施例的范围包括权利要求书的整个范围,以及权利要求书的所有可获得的等同物。当用于本申请中时,虽然术语“第一”、“第二”等可能会在本申请中使用以描述各元件,但这些元件不应受到这些术语的限制。这些术语仅用于将一个元件与另一个元件区别开。例如,在不改变描述的含义的情况下,第一元件可以叫做第二元件,并且同样第,第二元件可以叫做第一元件,只要所有出现的“第一元件”一致重命名并且所有出现的“第二元件”一致重命名即可。第一元件和第二元件都是元件,但可以不是相同的元件。而且,本申请中使用的用词仅用于描述实施例并且不用于限制权利要求。如在实施例以及权利要求的描述中使用的,除非上下文清楚地表明,否则单数形式的“一个”(a)、“一个”(an)和“所述”(the)旨在同样包括复数形式。类似地,如在本申请中所使用的术语“和/或”是指包含一个或一个以上相关联的列出的任何以及所有可能的组合。另外,当用于本申请中时,术语“包括”(comprise)及其变型“包括”(comprises)和/或包括(comprising)等指陈述的特征、整体、步骤、操作、元素,和/或组件的存在,但不排除一个或一个以上其它特征、整体、步骤、操作、元素、组件和/或这些的分组的存在或添加。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法或者设备中还存在另外的相同要素。本文中,每个实施例重点说明的可以是与其他实施例的不同之处,各个实施例之间相同相似部分可以互相参见。对于实施例公开的方法、产品等而言,如果其与实施例公开的方法部分相对应,那么相关之处可以参见方法部分的描述。
本领域技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,可以取决于技术方案的特定应用和设计约束条件。所述技术人员可以对每个特定的应用来使用不同方法以实现所描述的功能,但是这种实现不应认为超出本公开实施例的范围。所述技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本文所披露的实施例中,所揭露的方法、产品(包括但不限于装置、设备等),可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,可以仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例。另外,在本公开实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
附图中的流程图和框图显示了根据本公开实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这可以依所涉及的功能而定。在附图中的流程图和框图所对应的描述中,不同的方框所对应的操作或步骤也可以以不同于描述中所披露的顺序发生,有时不同的操作或步骤之间不存在特定的顺序。例如,两个连续的操作或步骤实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这可以依所涉及的功能而定。框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。