CN109408447A - 一种基于spi的数据传输方法、装置及电子设备 - Google Patents
一种基于spi的数据传输方法、装置及电子设备 Download PDFInfo
- Publication number
- CN109408447A CN109408447A CN201811511706.9A CN201811511706A CN109408447A CN 109408447 A CN109408447 A CN 109408447A CN 201811511706 A CN201811511706 A CN 201811511706A CN 109408447 A CN109408447 A CN 109408447A
- Authority
- CN
- China
- Prior art keywords
- data
- equipment
- data packet
- business datum
- length
- 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
Links
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
Abstract
公开了一种基于SPI的数据传输方法及装置,应用于第一设备,其中所述方法包括向第二设备发送第一数据包以及获取来自所述第二设备发送的第二数据包,其中,所述第一数据包中包含有业务数据以及用于支持所述第一数据包传输的协议数据,所述第二数据包中包含有基于所述业务数据和所述协议数据确定的检测结果。通过在第一设备和第二设备的传输过程中设置通信协议,保证了第一设备与第二设备通过SPI总线传输数据的同步,同时,第二设备基于对第一数据包中的业务数据和协议数据的检测结果向第一设备发送第二数据包,保证了传输的第一数据包的正确性。
Description
技术领域
本发明涉及芯片之间数据传输的技术领域,具体涉及一种基于SPI的芯片之间的数据传输方法和装置、及电子设备、计算机可读存储介质。
背景技术
随着移动技术的发展,系统级芯片(System on Chip,简称SoC),也称片上系统,是一个产品,是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容,同时它又是一种技术,用以实现从确定系统功能开始,到软/硬件划分,并完成设计的整个过程。SoC将会是集成电路发展的必然趋势,是技术发展的必然,也是IC产业未来的发展。
SoC之间的通信可采用的总线只有串行外设接口(Serial PeripheralInterface,简称SPI)、以太网等有限几种,现有的多采用SPI总线直接传输数据,然而,SPI总线不带校验机制,无法保证传输的数据的正确性。
发明内容
为了解决上述技术问题,提出了本申请。本申请的实施例提供了一种基于SPI的数据传输方法,通过在第一设备与第二设备端建立数据协议,保证传输数据的准确性。
根据本申请的一个方面,提供了一种基于SPI的数据传输方法,应用于第一设备,其中所述方法包括:向第二设备发送第一数据包,其中,所述第一数据包中包含有业务数据以及用于支持所述第一数据包传输的协议数据;以及获取来自所述第二设备发送的第二数据包,其中,所述第二数据包中包含有基于所述业务数据和所述协议数据确定的检测结果。
在一实施例中,所述方法还包括:检测所述业务数据的长度;若所述业务数据的长度大于预设长度,将所述业务数据进行分片,得到多个分片业务数据;以及将所述多个分片业务数据的每一个分片业务数据封装为所述第一数据包,并执行所述向所述第二设备发送所述第一数据包的步骤。
在一实施例中,所述协议数据包括以下内容中的任一种或多种的组合:开始字段、数据长度字段、循环冗余校验码字段、结束字段。
在一实施例中,所述数据长度字段包括所述业务数据的长度、所述分片业务数据的分片序号。
在一实施例中,所述方法还包括:当所述业务数据中存在与所述开始字段或所述结束字段相同的字段时,在所述业务数据的所述相同的字段中加入零字符串。
在一实施例中,所述方法还包括:若接收到来自所述第二设备的同步信号,向所述第二设备发送时钟信号;以及接收所述第二设备基于所述时钟信号发送的所述第二数据包。
在一实施例中,所述同步信号包括:维持所述第二设备的通用输入端与输出端在预设时间段内为高电平状态。
根据本申请的另一个方面,提供了一种基于SPI的数据传输装置,应用于数据通信系统中的第一设备,所述数据通信系统包括通信连接的所述第一设备和第二设备,其中装置包括:传输模块,用于向所述第二设备发送第一数据包,其中,所述第一数据包中包含有业务数据以及用于支持所述第一数据包传输的协议数据;以及获取模块,用于获取来自所述第二设备发送的第二数据包,其中,所述第二数据包中包含有基于所述业务数据和所述协议数据确定的检测结果。
根据本申请的另一个方面,提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行上述任一所述的方法。
根据本申请的另一个方面,提供了一种电子设备,所述电子设备包括:处理器;用于存储所述处理器可执行指令的存储器;所述处理器,用于执行上述任一所述的方法。
本申请提供的一种基于SPI的数据传输方法,应用于第一设备,其中所述方法包括向第二设备发送第一数据包以及获取来自所述第二设备发送的第二数据包,其中,所述第一数据包中包含有业务数据以及用于支持所述第一数据包传输的协议数据,所述第二数据包中包含有基于所述业务数据和所述协议数据确定的检测结果。通过在第一设备和第二设备的传输过程中设置通信协议,保证了第一设备与第二设备通过SPI总线传输数据的同步,同时,第二设备基于对第一数据包中的业务数据和协议数据的检测结果向第一设备发送第二数据包,保证了传输的第一数据包的正确性。
附图说明
通过结合附图对本申请实施例进行更详细的描述,本申请的上述以及其他目的、特征和优势将变得更加明显。附图用来提供对本申请实施例的进一步理解,并且构成说明书的一部分,与本申请实施例一起用于解释本申请,并不构成对本申请的限制。在附图中,相同的参考标号通常代表相同部件或步骤。
图1是本申请所适用的系统结构示意图。
图2是本申请一示例性实施例提供的基于SPI的数据传输方法的流程示意图。
图3是本申请一示例性实施例提供的第一数据包的结构图。
图4是本申请一示例性实施例提供的分片业务数据的结构图。
图5是本申请另一示例性实施例提供的基于SPI的数据传输方法的流程示意图。
图6是本申请另一示例性实施例提供的基于SPI的数据传输方法的流程示意图。
图7是本申请一示例性实施例提供的业务数据分片方法的流程示意图。
图8是本申请另一示例性实施例提供的业务数据分片方法的流程示意图。
图9是本申请另一实施例提供的适用的系统结构示意图。
图10是本申请一示例性实施例提供的基于SPI的数据传输装置的结构图。
图11是本申请另一示例性实施例提供的基于SPI的数据传输装置的结构图。
图12是本申请另一示例性实施例提供的基于SPI的数据传输装置的结构图。
图13是本申请另一示例性实施例提供的基于SPI的数据传输装置的结构图。
图14是本申请一示例性实施例提供的电子设备的结构图。
具体实施方式
下面,将参考附图详细地描述根据本申请的示例实施例。显然,所描述的实施例仅仅是本申请的一部分实施例,而不是本申请的全部实施例,应理解,本申请不受这里描述的示例实施例的限制。
申请概述
系统芯片(System-on-chip,缩写SoC,其他译名有芯片系统、系统级芯片、片上系统)是将电脑的一部分,或是加上部份的电路,放入一颗芯片内,这颗芯片会包含数位电路、类比电路、混合讯号及射频电路在内,包含在其中的应用程式通常会称为嵌入式系统。可以降低系统板上因信号在多个芯片之间进出带来的延迟而导致的性能局限,它也提高了系统的可靠性和降低了总的系统成本。此外,在PCB板空间特别紧张和将低功耗视为第一设计目标的应用中,如手机,SoC常常是唯一的高性价比解决方案。
SoC之间的通信可采用的总线只有串行外设接口(Serial PeripheralInterface,简称SPI)、以太网等有限几种,现有的多采用SPI总线直接传输数据,然而,SPI总线不带校验机制,无法保证传输的数据的正确性。并且,SPI总线分为主数据端和从数据端,主动传输只能由主数据端发出,从数据端无法向主数据端发起主动传输。
出于解决上述问题,本申请实施例提供了一种基于SPI的数据传输方法,该方法应用于第一设备,用以实现第一设备基于SPI总线向第二设备传输数据,其中方法包括:向第二设备发送第一数据包,其中,第一数据包中包含有业务数据以及用于支持第一数据包传输的协议数据;并且获取来自第二设备发送的第二数据包,其中,第二数据包中包含有基于第一数据包中的业务数据和协议数据确定的检测结果。
通过在SPI总线两端的第一设备与第二设备上设置通信协议,针对第一设备传输的第一数据包中的业务数据设置协议数据,并且在第二设备发送的第二数据包中设置对第一数据包的检测结果,以保证第一设备传输的第一数据的准确性。
示例性系统
图1是本申请所适用的系统结构示意图。如图1所示,本申请实施例应用于包括多个系统芯片的嵌入式系统,本申请实施例的方法用于实现多个系统芯片间的数据传输,其中多个系统芯片通过SPI总线通信连接并实现数据的传输。为了描述简单,本申请所示出的示意图中只展示了包括两个系统芯片SoC1、SoC2的嵌入式系统,其中,系统芯片SoC1和SoC2通过SPI总线连接,为了描述简单,在本申请中,设定SoC1为第一设备、SoC2为第二设备。
应当理解,图1只是示例性的展示出了包括两个系统芯片的嵌入式系统,而在实际应用场景中,本申请实施例的嵌入式系统可以包括多个系统芯片;并且第一设备与第二设备只是为了描述方便,不存在顺序及功能的限定。
示例性方法
图2是本申请一示例性实施例提供的基于SPI的数据传输方法的流程示意图。本实施例可应用上述嵌入式系统中的第一设备,该嵌入式系统包括通信连接的第一设备和第二设备,如图2所示,包括如下步骤:
步骤210:向第二设备发送第一数据包,其中,第一数据包中包含有业务数据以及用于支持第一数据包传输的协议数据。
在数据通信系统中,第一设备和第二设备通过SPI总线通信连接,其中,可以是第一设备为SPI总线的主数据端、第二设备为从数据端,或者也可以是第二设备为SPI总线的主数据端、第一设备为从数据端。以第一设备为SPI总线的主数据端、第二设备为从数据端为例,在第一设备向第二设备发送数据时,第一设备所发送的第一数据包包括业务数据和协议数据,其中,业务数据为第一设备所发送的第一数据包中与具体业务相关的数据,而协议数据为支持第一数据包传输的相关数据。如图3所示为本申请实施例所示出的第一数据包的结构图,第一数据包分为两层:业务数据层和协议数据层,其中协议数据层封装在业务数据层外围。协议数据可以包括第一数据包的相关信息,例如第一数据包的长度、校验值等。
步骤220:获取来自第二设备发送的第二数据包,其中,第二数据包中包含有基于业务数据和协议数据确定的检测结果。
在第一设备向第二设备发送第一数据包后,第二设备基于业务数据和协议数据对第一数据包的内容进行检测,并将包括检测结果的第二数据包发送至第一设备。当第二设备检测结果为第一数据包符合传输数据的预设条件时,确定第一数据包的内容准确无误,则第二设备发送包含第一数据包接收成功信息的第二数据包至第一设备,第一设备接收第二数据包后,当前第一数据包的传输任务结束;当第二设备检测结果为第一数据包不符合传输数据的预设条件时,确定第一数据包的内容存在错误,则第二设备发送包含第一数据包接收失败信息及失败类型的第二数据包至第一设备,第一设备接收第二数据包后,当前第一数据包的传输任务结束。
本申请实施例通过在SPI总线两端的第一设备与第二设备上设置通信协议,针对第一设备传输的第一数据包中的业务数据设置协议数据,并且在第二设备发送的第二数据包中设置对第一数据包中业务数据和协议数据的检测结果,以保证第一设备传输的第一数据的准确性。
在一实施例中,在第一设备接收到包含接收失败信息后,第一设备可以基于第二数据包的接收失败信息和失败类型对该第一数据包的内容进行修改,并将修改后的第一数据包作为新的第一数据包,再次执行步骤210和步骤220,直至第一设备接收到的第二数据包中包含接收成功信息。或者,第一设备也可以重新构建数据得到新的第一数据包,并再次执行步骤210和步骤220,直至第一设备接收到的第二数据包中包含接收成功信息。
在传输数据失败后,通过对所传输的第一数据包进行修改得到修改后的第一数据包或者重新构建数据得到新的第一数据包,并再次发送修改后的第一数据包或新的第一数据包至第二设备,保证了传输的第一数据包的准确性。
图4是本申请一示例性实施例提供的分片业务数据的结构图。如图4所示,一帧数据的总长度为64字节,其中业务数据为52字节,在业务数据的外围设置包括开始字段、数据长度字段、循环冗余校验码字段、结束字段的协议数据。其中,开始字段设置于分片业务数据的开头位置,开始字段可以为4字节,可以设置为“0xaa,0xaa,0xaa,0xaa”;数据长度字段可以设置在开始字段之后、业务数据之前,数据长度字段可以为2字节,数据长度字段可以包括分片业务数据的总长度、分片业务数据的分片序号;循环冗余校验码字段可以设置于业务数据之后,循环冗余校验码字段的长度可以为2字节;结束字节可以为4字节,可以设置为“0xbb,0xbb,0xbb,0xbb”。
应当理解,图4所示的分片业务数据的结构图,包括各个字段的长度、位置及形式,只是本申请实施例所示出的一个示例,本申请实施例可以根据实际的应用场景的需求而对分片业务数据的结构做出改变,只要分片业务数据的结构能够实现数据的准确传输即可,本申请实施例对于分片业务数据的具体结构不做限定。
图5是本申请另一示例性实施例提供的基于SPI的数据传输方法的流程示意图。如图5所示,在步骤210之前还可以包括:
步骤230:检测业务数据的长度。
传输的数据都有其特定的帧格式,每一种帧格式所能容纳的数据量是不一样的,该数据量的最大值被称为最大传输单元(maximum transmission unit,简称MTU),一帧数据的长度只有小于或等于最大传输单元时,才能被传输。因此,本申请实施例中在构建第一数据包时,在第一数据包的长度超过最大传输单元时,需要对第一数据包做相应的处理以符合传输的要求,由于协议数据的长度为定值,因此,只需检测业务数据的长度即可得知第一数据包的长度。
步骤240:判断业务数据的长度是否大于预设长度;当业务数据的长度大于预设长度时,转步骤250。
如上所述,通过检测业务数据的长度即可得知第一数据包的长度,因此,判断业务数据的长度与预设长度(最大传输单元减去协议数据的长度)的大小也可以得知第一数据包的长度是否超过最大传输单元。
步骤250:将业务数据进行分片,得到多个分片业务数据。
在本申请实施例中SPI总线上传输的一帧数据的长度为64字节,当第一数据包中的业务数据和协议数据的总长度超过64字节时,可以对业务数据进行分片,以得到多个分片业务数据,其中每个分片业务数据的长度均小于或等于预设长度。由于协议数据的长度通常为定值,例如可以设定协议数据的长度为12字节,则每一帧数据中的业务数据的长度必须小于或等于52字节,因此,预设长度可以设定为52字节,当业务数据的长度大于52字节时,将业务数据分片为多个分片业务数据,且每个分片业务数据的长度均小于或等于52字节。
步骤260:将多个分片业务数据的每一个分片业务数据封装为第一数据包。
将多个分片业务数据中的每个分片业务数据进行协议封装,即在每个分片业务数据外围封装上对应的协议数据,构成第一数据包。以上述一帧数据的长度为64字节为例,每个分片业务数据的长度小于或等于52字节,且每个分片业务数据外围封装上12字节的协议数据,所有封装的分片业务数据构成第一数据包。对于封装分片业务数据分片业务数据的长度小于52字节,即分片业务数据和协议数据的总长度小于64字节时,在协议数据的结束字段后加入零字符串,使得封装后的第一数据包的长度等于64字节,从而实现了每个第一数据包的总长度都是64字节,避免字节的残留而增加分片及后续的整合处理的难度。
应当理解,本申请实施例可以根据实际的应用场景而选取不同的最大传输单元以及预设长度,只要所选取的最大传输单元以及预设长度能够实现SPI总线的数据传输即可,本申请实施例对于最大传输单元以及预设长度的具体取值不做限定。
通过对业务数据的长度进行检测,若业务数据的长度大于预设长度时,对业务数据进行分片,使得第一数据包符合SPI总线对于传输数据的要求,保证了第一数据包的传输过程。
图6是本申请另一示例性实施例提供的基于SPI的数据传输方法的流程示意图。如图6所示,上述实施例可包括如下步骤:
步骤270:当业务数据的长度小于预设长度时,在协议数据的结束字段后加入零字符串。
当业务数据的长度小于预设长度时,则不需要对业务数据进行分片操作,而是需要在协议数据的结束字段后加入零字符串,使得封装后的第一数据包的长度等于最大传输单元,避免字节的残留而增加分片及后续的整合处理的难度。
此外,当业务数据的长度等于预设长度时,则直接将业务数据和协议数据封装为第一数据包。
图7是本申请一示例性实施例提供的业务数据分片方法的流程示意图。如图7所示,步骤250可包括如下子步骤:
步骤251:将业务数据按照预设长度拆分出一个分片业务数据。
当需要对业务数据进行分片时,以上述预设长度为拆分长度,拆分出一个分片业务数据,以保证拆分出的分片业务数据的长度为预设长度。并且,本申请实施例中还可以在拆分出一个分片业务数据后,对拆分出的分片业务数据进行协议封装,以得到最大传输单元的封装分片业务数据。
步骤252:判断拆分出一个分片业务数据后的业务数据的长度是否大于预设长度,当拆分出一个分片业务数据后的业务数据的长度大于预设长度时,转步骤251;否则,结束分片。
当拆分出一个分片业务数据后,对拆分出一个分片业务数据后的业务数据的长度进行判断,若拆分出一个分片业务数据后的业务数据的长度仍然大于预设长度,则对拆分出一个分片业务数据后的业务数据再次拆分;若拆分出一个分片业务数据后的业务数据的长度小于或等于预设长度时,说明每一个分片业务数据的长度都小于或等于预设长度,此时结束分片。
图8是本申请另一示例性实施例提供的业务数据分片方法的流程示意图。如图8所示,上述实施例可包括如下步骤:
步骤253:当拆分出一个分片业务数据后的业务数据的长度小于预设长度时,在协议数据的结束字段后加入零字符串。
当拆分出一个分片业务数据后的业务数据的长度小于预设长度时,即得到的最后一个分片业务数据的长度小于预设长度,则在协议数据的结束字段后加入零字符串,从而实现了封装后的第一数据包的数据长度等于最大传输单元,避免字节的残留而增加分片及后续的整合处理的难度。
在一实施例中,协议数据可包括以下内容中的任一种或多种的组合:开始字段、数据长度字段、循环冗余校验码字段、结束字段。
循环冗余校验码(Cyclic Redundancy Check,简称CRC),是一种常用的、具有检错、纠错能力的校验码。循环冗余校验码常用于外存储器和计算机同步通信的数据校验,通过某种数学运算来建立数据位和校验位的约定关系,从而实现数据的校验。
在一实施例中,在步骤210之前,上述方法还可以包括:当业务数据中存在与开始字段或结束字段相同的字段时,在业务数据的相同的字段中加入零字符串。即当业务数据中存在上述示例中的“0xaa,0xaa,0xaa,0xaa”或“0xbb,0xbb,0xbb,0xbb”字段时,可以通过在该相同的字段中加入零字符串加以区分。例如,当业务数据中存在“0xaa,0xaa,0xaa,0xaa”字段时,可以在该字段中加入零字符串得到新的字段“0xaa,0xaa,0xaa,0x00,0xaa”。
应当理解,本申请实施例可以根据不同的应用场景的需求而选取加入零字符串的具体位置,例如上述的“0x00”加入第三个“0xaa”和第四个“0xaa”之间,只要能够区分该字段与具有特殊含义的字段即可,本申请实施例对于加入零字符串的具体位置不做限定。
在一实施例中,方法还可包括:若接收到来自第二设备的同步信号,向第二设备发送时钟信号;以及接收第二设备基于时钟信号发送的第二数据包。
当第一设备为SPI总线的主数据端、第二设备为SPI总线的从数据端时,第二设备无法主动发起数据的传输,因此,当第二设备在接收了第一设备发送的第一数据包后,需要向第一设备发送第二数据包时,第二设备需要向第一设备发起同步信号,在第一设备接收到同步信号后,会向第二设备发送时钟信号,第一设备接收第二设备基于时钟信号发送的第二数据。通过第一设备发送时钟信号来获取第二设备的第二数据包,保证了第一设备和第二设备的之间的时钟同步。
其中,第二数据包中包含有基于业务数据和协议数据确定的检测结果。该检测结果包括对第一数据包中的协议数据的检测,如开始字段的检测、结束字段的检测、第一数据包中数据的总长度以及针对第一数据包中数据的循环冗余校验码检测,只有当所有的检测结果都符合预设的条件时,才能确定所传输的第一数据包为准确的传输数据,第二数据包中将包含传输成功信息。反之,若存在一项检测结果不符合预设条件,确定所传输的第一数据包不准确,第二数据包中将包含传输失败信息及失败的类型。
在一实施例中,第一设备为SPI总线的主数据端、第二设备为SPI总线的从数据端时,当第二设备需要向第一设备发送新的数据包(并非针对第一数据包的第二数据包)时,第二设备也可以向第一设备发起同步信号,在第一设备接收到同步信号后,会向第二设备发送时钟信号,第一设备基于第二设备基于时钟信号发送的新的数据包至第一设备,并且第一设备在接收新的数据包后对该数据包的内容进行检测,并将包含检测结果的数据包发送至第二设备,数据包的传输方法及结构与上述实施例相同,此处不再赘述。
图9是本申请另一实施例提供的适用的系统结构示意图。如图9所示,同步信号可包括:维持第二设备的通用输入端与输出端在预设时间段内为高电平状态。第二设备发起的同步信号可以是第二设备的通用输入端与输出端(即General Purpose Input Output,简称GPIO)在预设时间段内为高电平状态,即第二设备会在一定时间段内(例如3微秒)拉高GPIO的电压以给出需要发送数据的同步信号。
应当理解,本申请实施例可以根据不同的应用场景的需求而选取不同的同步信号,只要选取的同步信号可以为第一设备所接收并唯一识别即可,本申请实施例对于同步信号的具体形式不做限定。
示例性装置
为了实现上述数据传输的方法,本申请还提供了对应的基于SPI的数据传输装置,应用于数据通信系统中的第一设备,数据通信系统包括通信连接的第一设备和第二设备。图10是本申请一示例性实施例提供的基于SPI的数据传输装置的结构图。如图10所示,该装置包括:传输模块91,用于向第二设备发送第一数据包,其中,第一数据包中包含有业务数据以及用于支持第一数据包传输的协议数据;以及获取模块92,用于获取来自第二设备发送的第二数据包,其中,第二数据包中包含有基于业务数据和协议数据确定的检测结果。
第一数据包分为两层:业务数据层和协议数据层,其中协议数据层封装在业务数据层外围。协议数据可以包括第一数据包的相关信息,例如第一数据包的长度、校验值等。在第一设备向第二设备发送第一数据包后,第二设备基于业务数据和协议数据对第一数据包的内容进行检测,并将包括检测结果的第二数据包发送至第一设备。当第二设备检测结果为第一数据包符合传输数据的预设条件时,确定第一数据包的内容准确无误,则第二设备发送包含第一数据包接收成功信息的第二数据包至第一设备,第一设备接收第二数据包后,当前第一数据包的传输任务结束;当第二设备检测结果为第一数据包不符合传输数据的预设条件时,确定第一数据包的内容存在错误,则第二设备发送包含第一数据包接收失败信息及失败类型的第二数据包至第一设备,第一设备接收第二数据包后,当前第一数据包的传输任务结束。
本申请实施例通过在SPI总线两端的第一设备与第二设备上设置通信协议,针对第一设备传输的第一数据包中的业务数据设置协议数据,并且在第二设备发送的第二数据包中设置对第一数据包中业务数据和协议数据的检测结果,以保证第一设备传输的第一数据的准确性。
图11是本申请另一示例性实施例提供的基于SPI的数据传输装置的结构图。如图11所示,该装置还可包括:分片模块93,用于检测业务数据的长度;若业务数据的长度大于预设长度,将业务数据进行分片,得到多个分片业务数据;以及将多个分片业务数据的每一个分片业务数据封装为第一数据包。
数据在传输时,每一种帧格式所能容纳的数据量(即最大传输单元),一帧数据的长度只有小于或等于最大传输单元时,才能被传输。因此,本申请实施例中在构建第一数据包时,在第一数据包的长度超过最大传输单元时,需要对第一数据包做相应的处理以符合传输的要求,可以对业务数据进行分片,并在每个分片业务数据外围封装上对应的协议数据,构成第一数据包。
通过对业务数据的长度进行检测,若业务数据的长度大于预设长度时,对业务数据进行分片,使得第一数据包符合SPI总线对于传输数据的要求,保证了第一数据包的传输过程。
在一实施例中,协议数据包括以下内容中的任一种或多种的组合:开始字段、数据长度字段、循环冗余校验码字段、结束字段;其中,数据长度字段包括业务数据的长度、分片业务数据的分片序号。
图12是本申请另一示例性实施例提供的基于SPI的数据传输装置的结构图。如图12所示,该装置还包括:预处理模块94,用于当业务数据中存在与开始字段或结束字段相同的字段时,在业务数据的相同的字段中加入零字符串。当业务数据中存在与具有特殊含义的字段相同的字段时,对该相同的字段进行处理,例如在该相同的字段中加入零字符串以改变该字段使其与具有特殊含义的字段不同即可。
图13是本申请另一示例性实施例提供的基于SPI的数据传输装置的结构图。如图13所示,该装置还包括:接收模块95,用于当接收到来自第二设备的同步信号,向第二设备发送时钟信号;以及接收第二设备基于时钟信号发送的第二数据包。当第一设备为SPI总线的主数据端、第二设备为SPI总线的从数据端时,第二设备无法主动发起数据的传输,因此,通过第二设备在接收了第一设备发送的第一数据包后,需要向第一设备发送第二数据包时,第二设备需要向第一设备发起同步信号,在第一设备接收到同步信号后,会向第二设备发送时钟信号,由该时钟信号带走第二设备需要发送的第二数据包至第一设备。通过第一设备发送时钟信号来获取第二设备的第二数据包,保证了第一设备和第二设备的之间的时钟同步。
其中,第二数据包中包含有基于业务数据和协议数据确定的检测结果。该检测结果包括对第一数据包中的协议数据的检测,如开始字段的检测、结束字段的检测、第一数据包中数据的总长度以及针对第一数据包中数据的循环冗余校验码检测,只有当所有的检测结果都符合预设的条件时,才能确定所传输的第一数据包为准确的传输数据,则第二数据包中会包含传输成功信息。反之,若存在一项检测结果不符合预设条件,确定所传输的第一数据包不准确,则第二数据包中会包含传输失败信息及失败的类型。
在一实施例中,同步信号可包括:维持第二设备的通用输入端与输出端在预设时间段内为高电平状态。第二设备发起的同步信号可以是第二设备的GPIO在预设时间段内为高电平状态,即第二设备会在一定时间段内(例如3微秒)拉高GPIO的电压以给出需要发送数据的同步信号。
示例性电子设备
下面,参考图14来描述根据本申请实施例的电子设备。该电子设备可以是第一设备和第二设备中的任一个或两者、或与它们独立的单机设备,该单机设备可以与第一设备和第二设备进行通信,以实现第一设备和第二设备相互传输数据。
图14图示了根据本申请实施例的电子设备的框图。
如图14所示,电子设备10包括一个或多个处理器11和存储器12。
处理器11可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备10中的其他组件以执行期望的功能。
存储器12可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器11可以运行所述程序指令,以实现上文所述的本申请的各个实施例的基于SPI的数据传输方法以及/或者其他期望的功能。在所述计算机可读存储介质中还可以存储诸如输入信号、信号分量、噪声分量等各种内容。
在一个示例中,电子设备10还可以包括:输入装置13和输出装置14,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。
例如,在该电子设备是第一设备或第二设备时,该输入装置13可以是上述的键盘、鼠标等,用于获取传输数据。在该电子设备是单机设备时,该输入装置13可以是通信网络连接器,用于从第一设备和第二设备接收所采集的输入信号。
该输出装置14可以向外部输出各种信息,包括确定出的距离信息、方向信息等。该输出设备14可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
当然,为了简化,图14中仅示出了该电子设备10中与本申请有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备10还可以包括任何其他适当的组件。
示例性计算机程序产品和计算机可读存储介质
除了上述方法和设备以外,本申请的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本申请各种实施例的基于SPI的数据传输方法中的步骤。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本申请实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本申请的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本申请各种实施例的基于SPI的数据传输方法中的步骤。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
以上结合具体实施例描述了本申请的基本原理,但是,需要指出的是,在本申请中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本申请的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本申请为必须采用上述具体的细节来实现。
本申请中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
还需要指出的是,在本申请的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本申请的等效方案。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本申请。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本申请的范围。因此,本申请不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本申请的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。
Claims (10)
1.一种基于SPI的数据传输方法,应用于第一设备,其中所述方法包括:
向第二设备发送第一数据包,其中,所述第一数据包中包含有业务数据以及用于支持所述第一数据包传输的协议数据;以及
获取来自所述第二设备发送的第二数据包,其中,所述第二数据包中包含有基于所述业务数据和所述协议数据确定的检测结果。
2.根据权利要求1所述的方法,其中,所述方法还包括:
检测所述业务数据的长度;
若所述业务数据的长度大于预设长度,将所述业务数据进行分片,得到多个分片业务数据;以及
将所述多个分片业务数据的每一个分片业务数据封装为所述第一数据包,并执行所述向所述第二设备发送所述第一数据包的步骤。
3.根据权利要求1所述的方法,其中,所述协议数据包括以下内容中的任一种或多种的组合:开始字段、数据长度字段、循环冗余校验码字段、结束字段。
4.根据权利要求3所述的方法,其中,所述数据长度字段包括所述业务数据的长度、所述分片业务数据的分片序号。
5.根据权利要求3所述的方法,其中,所述方法还包括:
当所述业务数据中存在与所述开始字段或所述结束字段相同的字段时,在所述业务数据的所述相同的字段中加入零字符串。
6.根据权利要求1所述的方法,所述方法还包括:
若接收到来自所述第二设备的同步信号,向所述第二设备发送时钟信号;以及
接收所述第二设备基于所述时钟信号发送的所述第二数据包。
7.根据权利要求6所述的方法,其中,所述同步信号包括:维持所述第二设备的通用输入端与输出端在预设时间段内为高电平状态。
8.一种基于SPI的数据传输装置,应用于数据通信系统中的第一设备,所述数据通信系统包括通信连接的所述第一设备和第二设备,其中装置包括:
传输模块,用于向所述第二设备发送第一数据包,其中,所述第一数据包中包含有业务数据以及用于支持所述第一数据包传输的协议数据;以及
获取模块,用于获取来自所述第二设备发送的第二数据包,其中,所述第二数据包中包含有基于所述业务数据和所述协议数据确定的检测结果。
9.一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行上述权利要求1-7任一所述的方法。
10.一种电子设备,所述电子设备包括:
处理器;
用于存储所述处理器可执行指令的存储器;
所述处理器,用于执行上述权利要求1-7任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811511706.9A CN109408447A (zh) | 2018-12-11 | 2018-12-11 | 一种基于spi的数据传输方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811511706.9A CN109408447A (zh) | 2018-12-11 | 2018-12-11 | 一种基于spi的数据传输方法、装置及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109408447A true CN109408447A (zh) | 2019-03-01 |
Family
ID=65458466
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811511706.9A Pending CN109408447A (zh) | 2018-12-11 | 2018-12-11 | 一种基于spi的数据传输方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109408447A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110417514A (zh) * | 2019-07-22 | 2019-11-05 | 北京地平线机器人技术研发有限公司 | 数据发送方法和装置、数据接收方法和装置 |
CN111427815A (zh) * | 2020-03-05 | 2020-07-17 | 深圳震有科技股份有限公司 | 一种基于spi接口的核间通讯方法、终端及存储介质 |
CN111641638A (zh) * | 2020-05-28 | 2020-09-08 | 浪潮(北京)电子信息产业有限公司 | 一种数据传输方法及相关装置 |
CN111737175A (zh) * | 2020-06-12 | 2020-10-02 | 明见(厦门)技术有限公司 | 一种高速spi主从机通信方法、终端设备及存储介质 |
CN114327261A (zh) * | 2021-12-06 | 2022-04-12 | 神州融安数字科技(北京)有限公司 | 数据文件的存储方法及数据安全代理 |
CN114415935A (zh) * | 2021-12-02 | 2022-04-29 | 深圳市乐升半导体有限公司 | 数据传输芯片、方法和电子设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080044012A1 (en) * | 2006-08-15 | 2008-02-21 | Nokia Corporation | Reducing Security Protocol Overhead In Low Data Rate Applications Over A Wireless Link |
CN101414922A (zh) * | 2007-10-16 | 2009-04-22 | 华为技术有限公司 | 实现ip数据包发送、接收的方法及装置 |
CN103631740A (zh) * | 2012-08-24 | 2014-03-12 | 上海华虹集成电路有限责任公司 | Sd卡在spi模式下传输自适应字节对齐的方法及电路 |
CN104298630A (zh) * | 2013-07-17 | 2015-01-21 | 展讯通信(上海)有限公司 | 基于串行外设接口的通信方法、装置和设备 |
CN105528325A (zh) * | 2014-09-29 | 2016-04-27 | 安凯(广州)微电子技术有限公司 | 一种标准spi协议高速传输的保护方法及系统 |
CN108470013A (zh) * | 2018-01-24 | 2018-08-31 | 中国科学院宁波材料技术与工程研究所 | 一种实现双mcu数据传输的spi通信方法 |
-
2018
- 2018-12-11 CN CN201811511706.9A patent/CN109408447A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080044012A1 (en) * | 2006-08-15 | 2008-02-21 | Nokia Corporation | Reducing Security Protocol Overhead In Low Data Rate Applications Over A Wireless Link |
CN101414922A (zh) * | 2007-10-16 | 2009-04-22 | 华为技术有限公司 | 实现ip数据包发送、接收的方法及装置 |
CN103631740A (zh) * | 2012-08-24 | 2014-03-12 | 上海华虹集成电路有限责任公司 | Sd卡在spi模式下传输自适应字节对齐的方法及电路 |
CN104298630A (zh) * | 2013-07-17 | 2015-01-21 | 展讯通信(上海)有限公司 | 基于串行外设接口的通信方法、装置和设备 |
CN105528325A (zh) * | 2014-09-29 | 2016-04-27 | 安凯(广州)微电子技术有限公司 | 一种标准spi协议高速传输的保护方法及系统 |
CN108470013A (zh) * | 2018-01-24 | 2018-08-31 | 中国科学院宁波材料技术与工程研究所 | 一种实现双mcu数据传输的spi通信方法 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110417514A (zh) * | 2019-07-22 | 2019-11-05 | 北京地平线机器人技术研发有限公司 | 数据发送方法和装置、数据接收方法和装置 |
CN110417514B (zh) * | 2019-07-22 | 2022-02-01 | 北京地平线机器人技术研发有限公司 | 数据发送方法和装置、数据接收方法和装置 |
CN111427815A (zh) * | 2020-03-05 | 2020-07-17 | 深圳震有科技股份有限公司 | 一种基于spi接口的核间通讯方法、终端及存储介质 |
CN111641638A (zh) * | 2020-05-28 | 2020-09-08 | 浪潮(北京)电子信息产业有限公司 | 一种数据传输方法及相关装置 |
CN111737175A (zh) * | 2020-06-12 | 2020-10-02 | 明见(厦门)技术有限公司 | 一种高速spi主从机通信方法、终端设备及存储介质 |
CN111737175B (zh) * | 2020-06-12 | 2022-03-18 | 明见(厦门)技术有限公司 | 一种高速spi主从机通信方法、终端设备及存储介质 |
CN114415935A (zh) * | 2021-12-02 | 2022-04-29 | 深圳市乐升半导体有限公司 | 数据传输芯片、方法和电子设备 |
CN114415935B (zh) * | 2021-12-02 | 2024-03-12 | 深圳市乐升半导体有限公司 | 数据传输芯片、方法和电子设备 |
CN114327261A (zh) * | 2021-12-06 | 2022-04-12 | 神州融安数字科技(北京)有限公司 | 数据文件的存储方法及数据安全代理 |
CN114327261B (zh) * | 2021-12-06 | 2022-10-28 | 神州融安数字科技(北京)有限公司 | 数据文件的存储方法及数据安全代理 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109408447A (zh) | 一种基于spi的数据传输方法、装置及电子设备 | |
KR101771910B1 (ko) | 통합 프로토콜 통신에서 에러 정보를 교환하는 장치, 방법 및 시스템 | |
CN105262627B (zh) | 一种固件升级方法、装置及系统 | |
CN102820959A (zh) | 在Modbus主站与从站之间进行大数据量通信的方法 | |
CN104469501B (zh) | 一种基于串口通信协议的机顶盒自动设置方法 | |
WO2017032112A1 (zh) | 一种与无中央处理器单板通讯的方法及通讯设备 | |
CN104780123B (zh) | 一种网络包收发处理装置及其设计方法 | |
JP5732806B2 (ja) | データ転送装置及びデータ転送方法 | |
CN109032693A (zh) | 一种加载展示信息方法、装置、电子设备及可读存储介质 | |
CN112527678A (zh) | 用于测试协议的方法、装置、设备以及存储介质 | |
CN102998994B (zh) | 嵌入式血液分析仪控制系统及其控制方法 | |
CN102884744B (zh) | 用于保护有待于通过接口传输的数据包的方法和设备 | |
CN113535578B (zh) | 一种cts测试方法、装置及测试设备 | |
CN107122326B (zh) | 外部组件连接接口的验证装置 | |
CN108776621A (zh) | 软件架构中层级间的通信方法及装置 | |
US20180095844A1 (en) | Protocol Aware Testing Engine for High Speed Link Integrity Testing | |
CN109800202B (zh) | 一种基于pcie的数据传输系统、方法及装置 | |
US20120093024A1 (en) | Method for ascertaining a transmissible telegram data length | |
CN111371799A (zh) | Mctp控制器收发数据的控制方法、装置及设备 | |
CN104331281B (zh) | 一种为lxi模块提供远程控制功能的代理服务系统及方法 | |
CN102455970B (zh) | 带可靠性检测功能的多外设boot实现方法、设备及系统 | |
CN103995475A (zh) | 一种柔性嵌入式被测设备模拟器 | |
CN116796671A (zh) | 总线装置、设计方法、电子设备和计算机可读存储介质 | |
CN111030907B (zh) | 一种机器人串口总线的多设备数据解析及管理方法 | |
CN112737872B (zh) | 一种arinc664p7端系统跨网测试系统和方法 |
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 |