CN117687950A - 一种串行传输方法、电子设备及存储介质 - Google Patents
一种串行传输方法、电子设备及存储介质 Download PDFInfo
- Publication number
- CN117687950A CN117687950A CN202311816571.8A CN202311816571A CN117687950A CN 117687950 A CN117687950 A CN 117687950A CN 202311816571 A CN202311816571 A CN 202311816571A CN 117687950 A CN117687950 A CN 117687950A
- Authority
- CN
- China
- Prior art keywords
- data stream
- data
- host
- transmission
- 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.)
- Pending
Links
- 230000005540 biological transmission Effects 0.000 title claims abstract description 290
- 238000000034 method Methods 0.000 title claims abstract description 84
- 238000012795 verification Methods 0.000 claims abstract description 110
- 238000012790 confirmation Methods 0.000 claims abstract description 22
- 230000004044 response Effects 0.000 claims description 58
- 230000002159 abnormal effect Effects 0.000 claims description 33
- 230000015654 memory Effects 0.000 claims description 11
- 230000002093 peripheral effect Effects 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 6
- 230000006978 adaptation Effects 0.000 abstract description 4
- 230000007246 mechanism Effects 0.000 description 12
- 230000001360 synchronised effect Effects 0.000 description 12
- 230000009471 action Effects 0.000 description 11
- 238000005538 encapsulation Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000013524 data verification Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 238000004806 packaging method and process Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012546 transfer Methods 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
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0002—Serial port, e.g. RS232C
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Communication Control (AREA)
Abstract
本申请实施例提出了一种串行传输方法、电子设备及存储介质,通过在从机中添加对传输数据流的校验流程,使从机执行数据有效性校验并返回校验结果至主机,从而确保传输数据同步性,并降低方案的适配成本。其中,串行传输方法包括:接收来自主机的第一数据流,第一数据流至少携带第一消息字段与第一控制字段,第一控制字段包括主机定义的第一传输属性参数与第一校验参数;根据第一校验参数校验第一消息字段的数据有效性;响应于校验第一消息字段的数据有效,根据第一传输属性参数与预设的校验成功标识码,生成并向主机发送第一确认数据流,第一确认数据流用于指示允许主机发送位于第一数据流之后的其他数据流;接收来自主机的第二数据流。
Description
【技术领域】
本申请实施例涉及通信技术领域,尤其涉及一种串行传输方法、电子设备及存储介质。
【背景技术】
串行外设接口(Serial Peripheral Interface,简称SPI)传输,是一种全双工的同步传输方式,通过时钟信号线、主输出/从输入线、主输入/从输出线和片选线这四根线,实现一台主机与任意台从机之间的数据收发。
但在实际传输的过程中,由于该传输方式过分依赖主机与从机之间的同步性,当出现主机与从机之间的时钟信号不同步等情况时,容易导致数据丢失、数据传输错误的问题发生。
针对这一问题,目前主要通过在主机与从机之间增加一条准备信号线,并在传输数据流开始前向接收方发送一个准备信号来确保传输数据的同步性。但这种方案需要在主机、从机之间添加一条额外的连接线,为了适配该方法,需要对主机、从机的硬件结构进行改动,因而存在改动成本较高的问题。
【发明内容】
本申请实施例提出了一种串行传输方法、电子设备及存储介质,通过在从机中添加对传输数据流的校验流程,使从机能够在接收到数据流时执行数据有效性校验并返回校验结果至主机,从而在确保传输数据同步性的同时,降低方案的适配成本。
第一方面,本申请公开了一种串行传输方法,应用于从机,所述从机与主机电连接,所述主机及所述从机均通过串行外设接口协议执行数据传输,所述方法包括:
接收来自主机的第一数据流,所述第一数据流至少携带第一消息字段与第一控制字段,所述第一消息字段表征所述主机需要传输的内容数据,所述第一控制字段包括所述主机定义的第一传输属性参数与第一校验参数;
根据所述第一校验参数校验所述第一消息字段的数据有效性;
响应于校验所述第一消息字段的数据有效,根据所述第一传输属性参数与预设的校验成功标识码,生成并向所述主机发送第一确认数据流,所述第一确认数据流用于指示允许所述主机发送位于所述第一数据流之后的其他数据流;
接收来自所述主机的第二数据流。
本申请实施例中,通过在从机接收第一消息字段的基础上,额外使从机接收来自主机的、记录有传输属性与校验相关参数的第一控制字段,并在从机收到第一数据流后,根据第一控制字段校验第一消息字段数据有效、传回第一确认数据流的步骤,通知主机所校验的第一消息字段数据有效,不存在传输数据丢失或数据错误,从而在不涉及硬件改动的情况下,有效确保传输数据的同步性,降低方案的适配成本。
可选的,在根据所述第一校验参数校验所述第一消息字段的数据有效性之后,所述方法还包括:
响应于校验所述第一消息字段的数据无效,根据所述第一传输属性参数与预设的校验失败标识码,生成并向所述主机发送校验失败数据流,所述校验失败数据流用于指示所述主机需要再次发送所述第一数据流;
接收来自所述主机的所述第一数据流。
本申请实施例中,通过在从机校验数据无效时,向主机发送对应的校验失败数据流,以告知主机需要再次传输第一数据流,确保在第一数据流的数据存在异常时及时进行数据重传,降低出现数据丢失、数据传输错误的风险。
可选的,所述方法还包括:
向所述主机发送第三数据流,所述第三数据流至少携带第二消息字段与第二控制字段,所述第二消息字段表征所述从机需要传输的内容数据,所述第二控制字段包括所述从机定义的第二传输属性参数与第二校验参数;
响应于接收到来自所述主机的第二确认数据流,向所述主机发送第四数据流,所述第二确认数据流用于指示允许所述从机发送位于所述第三数据流之后的其他数据流。
本申请实施例中,通过在从机向主机传输第二消息字段的基础上,也添加记录有传输属性与校验相关参数的第二控制字段,并使从机收到来自主机校验第二消息字段后生成的、用于通知从机校验有效的第二确认数据流,从而使从机得知本次传输不存在传输数据丢失或数据错误的问题,确保在从机向主机发送数据时,同样能够维持主机、从机之间的传输同步性。
可选的,所述方法还包括:
依次接收来自所述主机的所述第一数据流与至少一个所述第二数据流,其中,所述第一数据流与所述至少一个第二数据流均位于所述主机中的传输队列;
针对所述第一数据流,校验所述第一消息字段的数据有效性;
响应于校验所述第一消息字段的数据无效,根据所述第一传输属性参数与预设的所述校验失败标识码,生成并向所述主机发送所述校验失败数据流,所述校验失败数据流用于指示所述主机需要将所述第一数据流加入异常重传队列进行重新发送;
接收来自所述主机的所述第一数据流。
本申请实施例中,通过在向从机传输数据的主机中添加传输队列,使从机接收到的数据全部来自主机的传输队列;同时,在从机向主机发送校验失败数据流时,通过校验失败数据流指示主机将对应的第一数据流添加到异常重传队列中重新发送至从机。从而,既通过异步传输的方式进行主机、从机之间的数据传输,减少数据传输中的等待时间;又通过对校验失败的第一数据流重新传输的机制,降低出现数据传输错误、数据丢失的可能性。
可选的,所述第一校验参数至少包括消息字段长度、第一校验码与校验指示码,所述校验指示码表征所述第一消息字段是否需要执行校验,根据所述第一校验参数校验所述第一消息字段的数据有效性,包括:
根据所述校验指示码,确认所述第一消息字段是否需要校验;
响应于所述第一消息字段需要校验,根据所述消息字段长度确认所述第一消息字段的完整性;
响应于确认所述第一消息字段完整,根据所述第一消息字段确定出第二校验码;
响应于所述第一校验码与所述第二校验码匹配,确认所述第一消息字段的数据校验有效;或者,
响应于确认所述第一消息字段非完整,或者确认所述第一消息字段完整且所述第一校验码与所述第二校验码不匹配,确认所述第一消息字段的数据校验无效。
本申请实施例中,通过让从机读取第一控制字段,根据校验指示码得知第一消息字段需要执行校验,随后分别基于消息字段长度确定接收到的第一消息字段的完整性,以及基于第一校验码、第二校验码确认第一消息字段中是否存在异常数据,从而校验第一消息字段的数据有效性,实现接收方对数据传输错误、数据丢失等问题的有效检测。
所述第一传输属性参数至少包括发送序号与第一时间戳,响应于校验所述第一消息字段的数据有效,根据所述第一传输属性参数与预设的校验成功标识码,生成并向所述主机发送第一确认数据流,包括:
响应于校验所述第一消息字段的数据有效,根据所述第一时间戳,确定所述第一确认数据流的发送时间,并将所述发送时间作为所述第一确认数据流对应的第二时间戳;
基于所述第二时间戳、所述发送序号生成第二传输属性参数;
根据所述第二传输属性参数、所述校验成功标识码,生成并向所述主机发送所述第一确认数据流。
本申请实施例中,通过使从机根据第一时间戳生成第二时间戳并确定第一确认数据流的发送时间,以及利用发送序号标明第一确认数据流与第一数据流之间的对应关系,并在打包上述参数与校验成功标识码后向主机发送第一确认数据流,从而使得收到第一确认数据流的主机能够得知第一数据流的校验结果与传输情况,进一步提升传输准确性和传输效率。
第二方面,本申请实施例还提供了一种串行传输方法,应用于主机,所述主机与至少一台从机电连接,所述主机及所述从机均通过串行外设接口协议执行数据传输,所述方法包括:
向从机发送第一数据流,所述第一数据流至少携带第一消息字段与第一控制字段,所述第一消息字段表征所述主机需要传输的内容数据,所述第一控制字段包括所述主机定义的第一传输属性参数与第一校验参数,所述第一校验参数用于使所述从机校验所述第一消息字段的数据有效性,所述第一传输属性参数用于使所述从机在数据有效性校验通过后,生成发送至所述主机的第一确认数据流,所述第一确认数据流用于指示允许所述主机发送位于所述第一数据流之后的其他数据流;
响应于接收到来自所述从机的所述第一确认数据流,向所述从机发送第二数据流。
可选的,在向从机发送第一数据流之后,所述方法还包括:
响应于接收到来自所述从机的校验失败数据流,向所述从机重新发送所述第一数据流,所述校验失败数据流用于指示所述主机需要再次发送所述第一数据流。
可选的,所述方法还包括:
接收来自所述从机的第三数据流,所述第三数据流至少携带第二消息字段与第二控制字段,所述第二消息字段表征所述从机需要传输的内容数据,所述第二控制字段包括所述从机定义的第二传输属性参数与第二校验参数;
根据第二校验参数校验第二消息字段的数据有效性;
响应于校验所述第二消息字段的数据有效,根据所述第二传输属性参数与预设的校验成功标识码,生成并向所述从机发送第二确认数据流,所述第二确认数据流用于指示允许所述从机发送位于所述第三数据流之后的其他数据流;
接收来自所述从机的第四数据流。
可选的,所述主机内预设有传输队列与异常数据队列,所述第一数据流与至少一个所述第二数据流按发送顺序排列于所述传输队列中,所述方法还包括:
向所述从机依次发送所述传输队列中的全部数据流;
响应于接收到来自所述从机的校验失败数据流,将所述第一数据流加入所述异常数据队列,并检测所述传输队列中当前是否有正在发送的所述第二数据流;
响应于所述传输队列中没有正在发送的所述第二数据流,发送所述异常数据队列中的所述第一数据流,并在所述异常数据队列中的所述第一数据流发送完成后,发送所述传输队列中剩余的所述第二数据流;或者,
响应于所述传输队列中有正在发送的所述第二数据流,等待正在发送的所述第二数据流发送完成后,发送所述异常数据队列中的所述第一数据流,并在所述异常数据队列中的所述第一数据流发送完成后,发送所述传输队列中剩余的所述第二数据流。
第三方面,本申请实施例提供了一种串行传输系统,所述系统包括:主机,以及与所述主机电连接的至少一台从机,所述主机及所述从机均通过串行外设接口协议执行数据传输;
所述主机,用于向所述从机发送第一数据流,所述第一数据流至少携带第一消息字段与第一控制字段,所述第一消息字段表征所述主机需要传输的内容数据,所述第一控制字段包括所述主机定义的第一传输属性参数与第一校验参数;
所述从机,用于接收所述第一数据流,并根据所述第一校验参数校验所述第一消息字段的数据有效性;
所述从机,还用于响应于校验所述第一消息字段的数据有效,根据所述第一传输属性参数与预设的校验成功标识码,生成并向所述主机发送第一确认数据流,所述第一确认数据流用于指示允许所述主机发送位于所述第一数据流之后的其他数据流;
所述主机,还用于响应于接收到所述第一确认数据流,向所述从机发送第二数据流。
可选的,所述从机,还用于响应于校验所述第一消息字段的数据无效,根据所述第一传输属性参数与预设的校验失败标识码,生成并向所述主机发送校验失败数据流,所述校验失败数据流用于指示所述主机需要再次发送所述第一数据流;
所述主机,还用于响应于接收到所述校验失败数据流,向所述从机重新发送所述第一数据流。
可选的,所述从机,还用于向所述主机发送第三数据流,所述第三数据流至少携带第二消息字段与第二控制字段,所述第二消息字段表征所述从机需要传输的内容数据,所述第二控制字段包括所述从机定义的第二传输属性参数与第二校验参数;
所述主机,还用于接收所述第三数据流,并根据所述第二校验参数校验所述第二消息字段的数据有效性;
所述主机,还用于响应于校验所述第二消息字段的数据有效,根据所述第二传输属性参数与预设的所述校验成功标识码,生成并向所述从机发送第二确认数据流,所述第二确认数据流用于指示允许所述从机发送位于所述第三数据流之后的其他数据流;
所述从机,还用于响应于接收到所述第二确认数据流,向所述主机发送第四数据流。
可选的,所述主机内预设有传输队列与异常重传队列,所述第一数据流与至少一个所述第二数据流按发送顺序排列于所述传输队列中;
所述主机,还用于向所述从机依次发送所述传输队列中的全部数据流;
所述从机,还用于响应于接收到所述第一数据流,校验所述第一消息字段的数据有效性;
所述从机,还用于响应于校验所述第一消息字段的数据无效,根据所述第一传输属性参数与预设的所述校验失败标识码,生成并向所述主机发送所述校验失败数据流;
所述主机,还用于响应于接收到所述校验失败数据流,将所述第一数据流加入所述异常数据队列,并检测所述传输队列中当前是否有正在发送的所述第二数据流;
所述主机,还用于响应于所述传输队列中没有正在发送的所述第二数据流,发送所述异常数据队列中的所述第一数据流,并在所述第一数据流发送完成后,发送所述传输队列中剩余的所述第二数据流;或者,
所述主机,还用于响应于所述传输队列中有正在发送的所述第二数据流,等待正在发送的所述第二数据流发送完成后,发送所述异常数据队列中的所述第一数据流,并在所述第一数据流发送完成后,发送所述传输队列中剩余的所述第二数据流。
可选的,所述第一校验参数至少包括消息字段长度、第一校验码与校验指示码,所述校验指示码表征所述第一消息字段是否需要执行校验,所述从机具体用于:
根据所述校验指示码,确认所述第一消息字段是否需要校验;
响应于所述第一消息字段需要校验,根据所述消息字段长度确认所述第一消息字段的完整性;
响应于确认所述第一消息字段完整,根据所述第一消息字段确定出第二校验码;
响应于所述第一校验码与所述第二校验码匹配,确认所述第一消息字段的数据校验有效;
响应于确认所述第一消息字段非完整,或确认所述第一消息字段完整且所述第一校验码与所述第二校验码不匹配,确认所述第一消息字段的数据校验无效。
可选的,所述第一传输属性参数至少包括发送序号与第一时间戳,所述从机具体用于:
响应于校验所述第一消息字段的数据有效,根据所述第一时间戳,确定所述第一确认数据流的发送时间,并将所述发送时间作为所述第一确认数据流对应的第二时间戳;
基于所述第二时间戳、所述发送序号生成第二传输属性参数;
根据所述第二传输属性参数、所述校验成功标识码,生成并向所述主机发送所述第一确认数据流。
第四方面,本申请实施例提供了一种电子设备,所述电子设备包括至少一个处理器以及与所述至少一个处理器连接的存储器,所述至少一个处理器用于执行存储器中存储的计算机程序时实现如第一、二方面所述方法的步骤。
第五方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一、二方面所述方法的步骤。
应当理解的是,本申请实施例的第二至第五方面与本申请实施例的第一方面的技术方案一致,各方面及对应的可行实施方式所取得的有益效果相似,不再赘述。
【附图说明】
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本申请实施例提供的一种串行传输系统的结构示意图;
图2为本申请实施例提供的一种串行传输方法的流程示意图;
图3为本申请实施例提供的一种第一消息字段校验方法的流程示意图;
图4为本申请实施例提供的另一种第一消息字段校验方法的流程示意图;
图5为本申请实施例提供的另一种第一消息字段校验方法的流程示意图;
图6本申请实施例提供的一种第一确认数据流发送方法的流程示意图;
图7为本申请实施例提供的一种第一消息字段校验失败重传方法的流程示意图;
图8为本申请实施例提供的另一种串行传输方法的流程示意图;
图9为本申请实施例提供的一种基于异步传输的串行传输方法的流程示意图;
图10为本申请实施例提供的另一种基于异步传输的串行传输方法的流程示意图;
图11为本申请实施例提供的一种发送线程异常重传方法的流程示意图;
图12为本申请实施例提供的一种串行传输方法的传输总流程示意图;
图13为本申请实施例提供的一种主机内部的同步传输方法的流程示意图;
图14为本申请实施例提供的一种主机内部的异步传输方法的流程示意图;
图15为本申请实施例提供的一种电子设备的结构示意图。
【具体实施方式】
为了更好的理解本说明书的技术方案,下面结合附图对本申请实施例进行详细描述。
应当明确,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本说明书保护的范围。
在本申请实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本申请实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
经本申请发明人研究发现,串行外设接口(Serial Peripheral Interface,简称SPI)传输,是一种全双工的同步传输方式,通过时钟信号线、主输出/从输入线、主输入/从输出线和片选线这四根线,实现一台主机与任意台从机之间的数据收发。
但在实际传输的过程中,由于该传输方式过分依赖主机与从机之间的同步性,当出现主机与从机之间的时钟信号不同步等情况时,容易导致数据丢失、数据传输错误的问题发生。
针对这一问题,目前主要通过在主机与从机之间增加一条准备信号线,并在传输数据流开始前向接收方发送一个准备信号来确保传输数据的同步性。但这种方案需要在主机、从机之间添加一条额外的连接线,为了适配该方法,需要对主机、从机的硬件结构进行改动,因而存在改动成本较高的问题。
鉴于此,本申请实施例提出了一种串行传输方法,通过在从机中添加对传输数据流的校验流程,使从机能够在接收到数据流时执行数据有效性校验并返回校验结果至主机,从而在确保传输数据同步性的同时,降低方案的适配成本。
下面结合附图,对本申请实施例所提供的方案进行介绍:
请参见图1,是本申请实施例提供的一种串行传输系统的结构示意图。该系统主要包括:主机101,以及与主机101电连接的至少一台从机102,主机101及从机102均通过串行外设接口协议执行数据传输。
应理解的是,本申请实施例中所公开的串行传输系统遵循SPI传输协议规范,即图1中的主机101实际上可以同时与任意多台从机102之间建立电连接,并且主机101与任意多台从机102之间的通信连接均基于与正常SPI传输方式相同的时钟信号线、主输出/从输入线、主输入/从输出线和片选线这四条线缆建立。
同时,在主机、从机的软件层中,除了本申请实施例所公开的改进部分,其余传输细节均与SPI传输协议规范中所规定的传输流程相同,能够执行正常的SPI数据收发。
而为了便于理解,本申请实施例仅针对该串行传输系统中的主机101与其中一台从机102,以及上述主机101、从机102之间的数据传输过程进行示例性阐释。
图2是本申请实施例提供的一种串行传输方法的流程示意图。该系统的运行流程如下:
步骤201:主机101向从机102发送第一数据流,第一数据流至少携带第一消息字段与第一控制字段,第一消息字段表征主机101需要传输的内容数据,第一控制字段包括主机101定义的第一传输属性参数与第一校验参数。
本申请实施例中,为了在软件层面维持主机101与从机102的传输数据同步性,一种可行的方式是实现从机102对数据流的校验、校验结果传回主机101这两个步骤。为此,主机101向从机102传输的第一数据流中至少需要包括两个元素:(1)用于使从机102执行正常数据处理与交互的第一消息字段。(2)用于通知从机102与本次传输过程、第一消息字段相关的具体属性参数的第一控制字段。
其中,第一传输属性参数是第一控制字段中用于通知从机102关于本次传输具体属性(如第一数据流的具体发送时间、发送顺序)的重要参数;而第一校验参数则是第一控制字段中,供从机102对第一消息字段执行数据有效性校验(如完整性校验、正确性校验)的重要参数。
在一些实施例中,第一控制字段被添加于第一数据流的头部(即第一消息字段之前),使其在第一数据流中作为最先被完整传输至从机102的部分,使从机102能够在接收第一数据流后,最先对第一控制字段进行解析,从而第一时间安排后续的校验与数据传回动作。
在一些实施例中,第一控制字段内除了第一传输属性参数、第一校验参数外,还可以添加保留参数,该保留参数可被用于写入调用特定程序、执行特定处理操作的系统函数调用码、用于进一步区分不同数据流类型的特殊标识码,或被用于进行其它功能扩展。
例如,在主机101基于SPI传输向从机102发送第一数据流时,如果SPI传输协议本身需要支持多种数据流格式、版本,则可以在保留字段中添加一个标识码,用于区分不同数据流之间的格式或版本。
或者,假设主机101需要在第一数据流中添加需要从机102执行的特定命令,使其执行如系统更新、对第一消息字段进行缓存、对系统配置参数执行更改、读取或写入某项预设参数等操作,则可以在保留字段中写入这一特定命令对应的系统函数调用码。
又或者,假设主机101通过一项新的功能扩展,能够向从机102发送不同类型的第一数据流,其类型包括正常数据流(用于与从机102之间执行正常的数据交互处理)、命令数据流(用于发送特定命令至从机102,使其执行如系统更新等操作)、配置数据流(用于配置从机102的某项参数或设置),则可以将用于区分这些数据流类型的标识码添加至保留字段中,使从机通过解析第一控制字段得知第一数据流的具体类型与用途,从而适应这项新的功能扩展。
步骤202:从机102接收第一数据流,并根据第一校验参数校验第一消息字段的数据有效性。
在从机102接收到第一数据流后,将会根据第一控制字段中携带的第一校验参数,确定是否对第一消息字段执行校验,以及具体使用什么数据作为对第一消息字段进行校验的参考数据。
图3是本申请实施例提供的一种第一消息字段校验方法的流程示意图。作为一种可能的实施方式,第一校验参数至少包括消息字段长度、第一校验码与校验指示码,校验指示码表征第一消息字段是否需要执行校验,步骤202可以通过执行子步骤2021至2024来进一步实现。
步骤2021:从机102根据校验指示码,确认第一消息字段是否需要校验。
本申请实施例中,校验指示码可以是任何形式的编码,包括单个比特、字符或字符串,用以规定是否需要对第一消息字段执行校验。例如,对于从机102接收到的一个单比特的校验指示码,“0”可以代表该校验指示码对应的第一消息字段不需要校验,而“1”则可以表示对应的第一消息字段需要校验。
在一些实施例中,校验指示码还可以进一步用于规定具体需要执行的校验动作。例如,对于一个两比特的校验指示码,“00”可以代表该校验指示码对应的第一消息字段不需要校验,“01”可以代表对应的第一消息字段需要执行数据完整性校验,“10”可以代表该第一消息字段需要执行数据正确性校验,“11”可以代表该第一消息字段需要同时执行数据完整性、正确性校验。
步骤2022:从机102响应于第一消息字段需要校验,根据消息字段长度确认第一消息字段的完整性。
本申请实施例中,在根据校验指示码确定需要校验第一消息字段后,即可根据消息字段长度的数值,验证第一消息字段的数据完整性是否正常。
具体来说,在第一消息字段的长度与消息字段长度的数值相等时,即可认为在主机101向从机102发送第一数据流的过程中未发生数据丢失问题,初步确认第一消息字段完整;同时,在第一消息字段的长度与消息字段长度的数值不等时,可初步确认第一消息字段不完整。
例如,当从机解析第一控制字段后,通过消息字段长度得知第一消息字段的长度应当为100bit,且从机实际解析第一消息字段后所得到的数据内容也为100bit,则确认第一消息字段完整性正常。
又或者,当从机通过消息字段长度得知第一消息字段的长度应当为100bit,但从机实际解析第一消息字段后所得到的数据内容却只有98bit,则认为主机在向从机传输数据时可能出现了数据丢失或者数据被篡改的情况,确认第一消息字段的数据长度非完整。
步骤2023:从机102响应于确认第一消息字段完整,根据第一消息字段确定出第二校验码。
在初步确认第一消息字段完整之后,即可继续执行下一步的数据正确性校验。而对于数据正确性校验,本申请实施例所公开的一种可行方式是:根据第一消息字段中的数据,采用预设的校验算法计算出第二校验码,并判断第一控制字段中携带的第一校验码与从机102计算出的第二校验码是否匹配。
而对于预设的校验算法,其主要用途是通过计算第一消息字段中的数据内容,得出与该第一消息字段对应的一串唯一性数据,并将该唯一性数据作为第二校验码。具体来说,该校验算法可以采用包括累加和算法、奇偶校验算法、循环冗余校验算法、散列校验算法在内的任意一种常用校验算法。
步骤2024:从机102响应于第一校验码与第二校验码匹配,确认第一消息字段的数据校验有效。
本申请实施例中,对于第一校验码、第二校验码是否匹配,一种基于校验算法的、最简单的判断方式是:当第一校验码与计算出的第二校验码内容相同时,即可认为从机102接收到的第一消息字段的内容,与主机101发出时完全一致,也即第一消息字段的数据正确性校验通过。
而由于第一消息字段已经先后通过了数据完整性、数据正确性的校验,因此可以确保从机102所接收到的第一消息字段是有效可读取的。
或者,图4是本申请实施例提供的另一种第一消息字段校验方法的流程示意图,步骤202也可以通过执行子步骤2021至2022,以及子步骤2025来进一步实现。
步骤2025:从机102响应于确认第一消息字段非完整,确认第一消息字段的数据校验无效。
本申请实施例中,对于第一消息字段的总数据长度不符合消息字段长度的情况,可以认为其未通过数据的完整性校验,进而,也未通过第一消息字段的数据有效性检验。
或者,图5是本申请实施例提供的另一种第一消息字段校验方法的流程示意图,步骤202也可以通过执行子步骤2021至2023,以及子步骤2026来进一步实现。
步骤2026:从机响应于第一校验码与第二校验码不匹配,确认第一消息字段的数据校验无效。
本申请实施例中,对于第一消息字段的总数据长度符合消息字段长度,但第一校验码与第二校验码不匹配的情况,则可以认为其未通过数据的正确性校验,而对于上述情况,同样可以视为第一消息字段的数据有效性校验失败。
步骤203:从机102响应于校验第一消息字段的数据有效,根据第一传输属性参数与预设的校验成功标识码,生成并向主机101发送第一确认数据流,第一确认数据流用于指示允许主机101发送位于第一数据流之后的其他数据流。
本申请实施例中,当校验第一消息字段的数据有效时,即可认为主机101发送的第一数据流被从机102完整无误地接收,从而将预设的校验成功标识码与第一传输属性参数作为生成第一确认数据流的依据,生成并向主机101发送第一确认数据流,使主机101得知自身发送的第一确认数据流校验通过,可以继续执行下一个数据流的发送动作。
而对于预设的校验成功标识码,其同样可以由单个比特、一个字符或字符串或其它编码形式组成,用于标识第一消息字段的数据校验有效。
例如,在需要将校验成功标识码设置为单个比特时,可以直接以“0”作为校验成功标识码,添加到第一确认数据流的固定位置当中,以使接收第一确认数据流并读取到该固定位置的主机101得知第一消息字段的校验成功。
图6是本申请实施例提供的一种第一确认数据流发送方法的流程示意图。作为一种可能的实施方式,第一传输属性参数至少包括发送序号与第一时间戳,步骤203可以通过子步骤2031至2033来进一步实现:
步骤2031:从机102响应于校验第一消息字段的数据有效,根据第一时间戳,确定第一确认数据流的发送时间,并将发送时间作为第一确认数据流对应的第二时间戳。
本申请实施例中,第一传输属性参数中包括发送序号与第一时间戳,其中发送序号用于标明第一数据流的发送顺序,第一时间戳则用于标明第一数据流发送的具体时间点。
在一些实施例中,当建立SPI传输之后,随着发送数据流的数量累积,发送序号也会以从小到大的顺序递增。例如,对于主机在0:30发送的第一数据流,其对应的发送序号可以是00001,而对于紧跟第一数据流之后、在0:32发送的第二数据流,其对应的发送序号可以是00002。
而对于第一时间戳,由于其可以标明第一数据流发送的具体时间点,并且从机在收到第一数据流后生成对应第一确认数据流的生成时间也相对固定,因而,从机可以根据第一时间戳与生成时间,计算出第一确认数据流传回主机101的发送时间。并且,可以将计算得到的发送时间作为第二时间戳添加到第一确认数据流的内容当中。
在一些实施例中,第一时间戳与发送序号也可以被作为第一校验参数中的一部分使用。
具体来说,当第一时间戳被用于校验时,从机102需要比对接收到第一数据流的具体时间点与第一数据流中的第一时间戳,并判断两个时间值之间的差值是否符合设定的时间阈值(该时间阈值用于判断数据发送是否超时)。
若该差值大于设定的时间阈值,则认为数据从发送到接收的总传输时间不符合预期,可能存在数据被篡改、数据传输错误的风险,因此可判定第一消息字段的数据校验无效。
类似的,当发送序号被用于校验时,从机102需要读取之前接收到的有限个数据流,获取这些数据流分别对应的历史发送序号,并比对这些历史发送序号与第一控制字段中所携带的发送序号是否连续。
由于主机101在发送数据流时是按照事先安排好的顺序进行发送的,因此发送序号应当是连续的(例如最后一个接收到的历史发送序号为01001,则第一控制字段中的发送序号应当为01002);若这些序号之间无法构成连续(如发送序号不是01002而是01000或09999),则认为数据流可能存在丢失或乱序的情况,因此同样可判定第一消息字段的数据校验无效。
步骤2032:从机102基于第二时间戳、发送序号生成第二传输属性参数。
本申请实施例中,通过第二时间戳与发送序号生成第二传输属性参数,目的是为了使主机101知晓所接收的数据流为第一数据流所对应的第一确认数据流,并且能够确认第一确认数据流的具体发送时间、发送顺序。
步骤2033:从机102根据第二传输属性参数、校验成功标识码,生成并向主机101发送第一确认数据流。
本申请实施例中,由于传统的SPI传输方式会对每个所接收到的数据流都进行常规的解包读取流程,而在改动原有传输机制,增加了第一确认数据流的发送机制后,由于第一确认数据流中并不包含实际的消息字段,如果继续让主机101对接收到的第一确认数据流执行解包读取流程,会增加不必要的算力消耗。
因此,出于减少算力消耗,以及尽可能减少SPI传输机制改动、降低操作繁琐程度的考虑,一种通过第二传输属性参数、校验成功标识码来生成第一确认数据流的可行方式如下:
对主机101所发送数据流对应的校验参数格式进行统一更改,增加两个预留的比特位,其中一个用于标明某个数据流是包含消息字段的正常数据流,还是不包含任何消息字段、仅用于通知校验结果的确认数据流,另一个则是预留给校验成功标识码的比特位。
通过这种更改,第一确认数据流将会具有和第一数据流一致的校验参数格式。进而,由于第一确认数据流具备了与第一数据流一致的校验参数格式,并且第一确认数据流也具有第二传输属性参数,则可以认为第一确认数据流拥有了类似第一数据流的控制字段格式。
并且,由于通过上述对传输机制的更改,使第一确认数据流具有了和第一数据流一致的控制字段格式,进一步减少了对主机101软件层发送机制改动的繁琐程度。
同时,在主机101接收到第一确认数据流的时候,可以像解析正常数据流一样先读取位于头部的校验参数,从而立刻知晓所接收的数据流类型是否为“确认数据流”,是否需要执行后续针对消息字段的解包读取流程,通过区分数据流类型减少不必要的算力消耗。
具体来说,一种第一数据流所对应的第一校验参数的格式可以是:
一个具有固定比特长度的参数。其中,第一位是用于标明数据流类型的比特位(“0”代表所接收到的数据流为正常数据流,“1”代表所接收到的为确认数据流)。
第二位是预留给第一数据流添加校验指示码的比特位(“0”代表不需要校验,而“1”代表需要校验,第一确认数据流恒为“0”)。
第三位是预留给第一确认数据流添加预设的校验成功标识码(假设其为单比特“0”)的比特位(当第二位为“0”时,默认不解析第三位的数据内容;只有当第二位为“1”时,才读取并解析第三位的数据内容),
第四位之后的有限个比特位(例如,5个比特位),则是预留给第一数据流写入消息字段长度的比特位,由于第一确认数据流不包括有效的消息字段,此处的值同样恒为“0”。
而在写入消息字段长度的比特位之后,也就是控制字段格式中的最后的一位到若干位,则是预留给第一数据流,用于写入第一校验码的比特位,而在第一确认数据流中,这一部分比特位的数据恒为“0”。
基于上述方法,主机101在接收到从机102传回的第一确认数据流时,可以像解析正常数据流的控制字段一样,解析第一确认数据流中携带的校验成功标识码、第二传输属性参数。
而通过上述发送机制的更改,一种可在正常数据流与确认数据流之间通用的控制字段格式示例如下:
1、0x53504948#该参数在SPI传输中,通常被用作起始标识符或帧同步标识符。
2、Bit0#该位的值为“0”代表所接收到的数据流为正常数据流,为“1”代表所接收到的为确认数据流。
3、Bit1#该位的值为“0”代表不需要校验,而“1”代表需要校验,第一确认数据流恒为“0”。
4、Bit2#该位预留给校验成功标识码。
5、Length#有限个比特位的消息字段长度预留位,第一确认数据流的长度值恒为“0”。
6、CheckSum#校验码预留位。
7、Sequence#发送序号预留位。
8、Timestamp#时间戳预留位。
9、Reserved#前文所述的保留参数的预留位。
基于上述控制字段的具体格式,即可实现减少对软件层发送机制改动繁琐程度,降低系统的修改成本的效果,同时减少因第一确认数据流引起的、不必要的算力消耗。
步骤204:主机101响应于接收到第一确认数据流,向从机102发送第二数据流。
本申请实施例中,主机101采用同步传输的方式发送第一数据流,即当主机101发送完成第一数据流后,会一直处于等待状态,直到接收到第一确认数据流,并根据第一确认数据流得知第一数据流通过数据有效性校验后,即可停止等待状态,继续向从机102发送第二数据流。
而为了配合同步传输的数据流传输方式,主机101内部会设置两个线程,其中一个线程为主线程,负责对第一数据流进行数据封装,即在第一消息字段前添加第一控制字段。而另一个线程则为发送线程,负责从主线程获取待发送的第一数据流的详细参数,并根据该详细参数对封装好的第一数据流执行发送。
当主线程封装好第一数据流,并将第一数据流传给发送线程进行发送后,将会执行等待动作。该等待动作会一直持续到发送流程接收到第一确认数据流,并由发送线向主线程发送解除等待的指令。随后,收到解除等待指令的主线程停止等待动作,并开始执行第二数据流的封装。
图7是本申请实施例提供的一种第一消息字段校验失败重传方法的流程示意图。作为一种可能的实施方式,在步骤202之后,还可以进一步执行步骤205至206。
步骤205:从机102响应于校验第一消息字段的数据无效,根据第一传输属性参数与预设的校验失败标识码,生成并向主机101发送校验失败数据流,校验失败数据流用于指示主机101需要再次发送第一数据流。
本申请实施例中,对于第一消息字段数据有效性校验失败的情况,通过校验失败标识码与第一传输属性参数,参照上述第一确认数据流的生成格式,生成并向主机101发送校验失败数据流。而对于从机102如何认定第一消息字段的数据有效性校验失败,将在下文中给出具体的方案阐释。
其中,为了区分预设的校验成功标识码、校验失败标识码,一种可行的方式是将校验成功标识码设置为“0”,而校验失败标识码则对应设置为“1”。从而,在上述校验参数的格式中,预留给校验成功标识码的第三位比特同样可以填入校验失败标识码,用于告知主机101第一消息字段的校验失败。
类似的,在校验参数格式里的其它比特位,校验失败数据流同样可以沿用第一确认数据流的设置方式。
例如,对于预留给第一数据流添加校验指示码的第一位比特,校验失败数据流的比特值同样恒为“0”;对于用于标明数据流类型的第二位比特,“1”代表所接收到的为第一确认数据流或校验失败数据;而在校验参数格式中的最后的一位到若干位,在校验失败数据流中,这一部分比特位的数据同样恒为“0”。
步骤206:主机101响应于接收到校验失败数据流,向从机102重新发送第一数据流。
本申请实施例中,如前文所述,当主机101发送完成第一数据流后,会一直处于等待状态。而与第一确认数据流的接收流程类似的,当主机101接收到校验失败数据流并解析完成后,即会根据第一数据流的数据校验未通过这一情况,重新生成并向从机102发送第一数据流,从而尽可能避免数据传输错误、数据丢失的问题。
图8是本申请实施例提供的另一种串行传输方法的流程示意图。作为一种可能的实施方式,该方法还包括步骤207至210。
步骤207:从机102向主机101发送第三数据流,第三数据流至少携带第二消息字段与第二控制字段,第二消息字段表征从机102需要传输的内容数据,第二控制字段包括从机102定义的第二传输属性参数与第二校验参数。
本申请实施例中,由于SPI传输是一种全双工串行传输方式,从机102同样具备向主机101发送数据流的能力,因此从机102需要像主机101一样,在软件层添加定义控制字段格式与内容的具体机制。
而由于第三数据流自从机102发往主机101的过程,与前文中第一数据流从主机101发往从机102的过程类似,故此处对第三数据流的生成、发送与接收细节不再赘述。
步骤208:主机101接收第三数据流,并根据第二校验参数校验第二消息字段的数据有效性。
同样的,主机101在接收到第三数据流之后,也需要像从机102一样校验所接收第三数据流的数据有效性,因此主机101的软件层同样要像从机102一样,添加对于第二控制字段的解析机制,以及对于第二消息字段的校验机制。
步骤209:主机101响应于校验第二消息字段的数据有效,根据第二传输属性参数与预设的校验成功标识码,生成并向从机102发送第二确认数据流,第二确认数据流用于指示允许从机102发送位于第三数据流之后的其他数据流。
本申请实施例中,由于主机101校验第二消息字段的数据有效,需要向从机102发送第二确认数据流,而第二确认数据流的生成与发送过程与前文中的第一数据流基本一致,故此处同样不再赘述。
步骤210:从机102响应于接收到第二确认数据流,向主机101发送第四数据流。
当从机102发出第二数据流并接收到第二确认数据流前,同样需要进入等待状态。直到接收到第二确认数据流、得知第二数据流的数据校验有效后,才可以继续执行后续第四数据流的发送。
图9是本申请实施例提供的一种基于异步传输的串行传输方法的流程示意图。作为一种可能的实施方式,主机101内预设有传输队列与异常重传队列,第一数据流与至少一个第二数据流按发送顺序排列于传输队列中,该方法还包括步骤211至步骤215。
步骤211:主机101向从机102依次发送传输队列中的全部数据流。
本申请实施例中,前文所公开的第一数据流传输方式为同步传输,即主机101在发送第一数据流后一直等待,直至接收到第一确认数据流,认定发送的第一数据流有效后才会继续发送第二数据流。
而由于这种同步传输方式需要在每次发送第一数据流后,等待接收对应的第一确认数据流,两次数据流的发送之间存在一定的时间间隔,会拖慢主机101与从机102之间的传输速度。
因此,一种较可行的改进方法,就是将需要发送的所有数据流(包括第一数据流与至少一个第二数据流)全部加入主机101的传输队列中,由一个线程持续不间断地进行发送,而不是在发送一个第一数据流之后立刻执行等待状态(即采取异步传输的方式发送所有数据流),缩短传输过程中的时间延迟。
步骤212:从机102响应于接收到第一数据流,校验第一消息字段的数据有效性。
对于这种主机101的异步传输方式,从机102的数据流校验机制则不需要执行任何改动。只需像前文所述的方法一样,在从机102接收到主机101发来的第一数据流之后,正常针对第一消息字段执行数据有效性校验即可。
步骤213:从机102响应于校验第一消息字段的数据无效,根据第一传输属性参数与预设的校验失败标识码,生成并向主机101发送校验失败数据流。
由于从机102发送校验失败数据流的方式也与前文一致,故此处不再赘述。
步骤214:主机101响应于接收到校验失败数据流,将第一数据流加入异常数据队列,并检测传输队列中当前是否有正在发送的第二数据流。
本申请实施例中,当接收到从机102用于通知第一消息字段的数据校验无效的校验失败数据流时,为了避免发送数据流的动作出现冲突,主机101不再像前文一样采用立即重传的方式,而是将第一数据流重新生成并加入到异常重传队列当中,并在需要发送第一数据流之前,检查主机101当前是否有第二数据流在发送中。
步骤215:主机101响应于传输队列中没有正在发送的第二数据流,发送异常数据队列中的第一数据流,并在第一数据流发送完成后,发送传输队列中剩余的第二数据流。
或者,图10是本申请实施例提供的另一种基于异步传输的串行传输方法的流程示意图,该方法还可以包括步骤211至214以及步骤216。
步骤216:主机101响应于传输队列中有正在发送的第二数据流,等待正在发送的第二数据流发送完成后,发送异常数据队列中的第一数据流,并在第一数据流发送完成后,发送传输队列中剩余的第二数据流。
在主机101中,异常重传队列的发送优先级默认高于传输队列,也即是说,当第一数据流被加入异常重传队列中时,主机101会在发送剩余所有未发送的第二数据流之前,优先执行第一数据流的发送。
当检测到传输队列中没有第二数据流待发送时,则此时发送第一数据流,不会引发传输数据出现冲突的问题,可以正常执行第一数据流的优先发送;当检测到传输队列中有第二数据流待发送,则为了避免传输数据出现冲突,需等待正在发送的第二数据流发送完成后,再正常执行第一数据流的优先发送。
而为了配合上述异步传输的发送方式,主机101内同样设置有主线程与发送线程这两个线程。但与同步传输不同的是,在主线程封装数据流后并不会马上进行等待,(即不会立刻等待第一确认数据流的传回),而是会继续封装至少一个第二数据流,并继续将这至少一个第二数据流交由发送线程进行发送。
同时,发送线程负责控制传输队列与异常重传队列中的数据传输动作。其中,异常重传队列为专门用于异常数据流重传的队列,平时处于空闲状态。而一旦有任何数据流被加入其中,在满足发送条件(即没有正在执行发送的数据流)的前提下,该数据流均会被优先发送至从机。
而在异常重传队列被清空后(即其中所有被添加的数据流都发送完成后),才会继续执行对于传输队列中数据流的发送动作。
也即是说,当有第一数据流被添加至异常重传队列时,会先于传输队列中剩余的第二数据流发送。
首先,在正常情况下,发送线程会负责依次发送传输队列中的第一数据流与至少一个第二数据流,并在队列中的数据流总数到达传输队列的设定上限时,向主线程发送等待指令,使主线程暂时停止数据封装;直到传输队列因为数据流发送而空出后,再向主线程发送解除等待的指令,使其继续对将要发送的数据进行封装。
而当主机101的发送线程接收到校验失败数据流时,即第一数据流在从机中的数据有效性校验未通过。此时,发送线程会重新将第一数据流添加至异常重传队列,并在当前无第二数据流发送时立刻优先执行异常重传队列中第一数据流的发送。
而当发送线程接收到第一确认数据流时,一种可行的方法是直接将第一数据流从发送线程中释放,避免第一数据流继续占用主机101的缓存空间。
例如,如图11所示的发送线程异常重传方法,假设第一数据流1与第二数据流41、42、43的传输均需要5秒。在发送线程于0:28收到校验失败数据流后,会立即将第一数据流1加入异常重传队列2,并在传输队列3中正在发送的第二数据流41(假设该第二数据流41已于0:25开始发送)发送完成后,立即于0:30发送异常重传队列2中的第一数据流1,随后再发送剩余未发送的第二数据流42(于0:35发送)与第二数据流43(于0:40发送)。
通过上述方式,即可在采取异步传输方式的前提下,显著缩短数据传输时长,同时维持主机101与从机102之间的数据传输同步性。
在一些实施例中,从机102同样可以采用上述异步传输方式向主机101发送数据,使得从机102向主机101发送数据的总传输时间同样被缩短,由于异步传输的具体执行方式在前文中已有较详细的解释,因此此处不再赘述。
图12是本申请实施例提供的一种串行传输方法的传输总流程示意图。作为一种可能的实施方式,在主机101向从机102传输第一数据流时,首先由主机101执行第一数据流的封装操作,用以将第一控制字段与第一消息字段封装为需要发送的第一数据流。随后,向从机102发送第一数据流,并进入等待状态。
与此同时,从机102接收到第一数据流,并对第一数据流进行解包、数据有效性校验,最后根据校验结果向主机101传回第一确认数据流或校验失败数据流。
而在收到第一确认数据流或校验失败数据流后,主机101解除等待,解析所收到的第一确认数据流或校验失败数据流,并根据解析得到的校验成功标识码采取第二数据流的发送动作,或根据得到的校验失败标识码采取第一数据流的重发动作。
图13是本申请实施例提供的一种主机101内部的同步传输方法的流程示意图。作为一种可能的实施方式,在主机101以同步传输方式向从机102发送第一数据流时,首先以主线程先启动数据封装,并将封装完成后的第一数据流发送给发送线程,随后进入等待状态。
而在发送线程接收到封装的第一数据流后,首先根据从主线程获取的第一数据流传输所需的传输模式、传输顺序、传输位数等参数,执行第一数据流的发送动作。随后,接收到第一数据流对应的第一确认数据流或校验失败数据流,并将所接收到的第一确认数据流或校验失败数据流传回给主线程,以解除主线程的等待状态。
而主线程在解析第一确认数据流或校验失败数据流后,将会获知第一数据流的数据校验是否有效,若有效则完成本次第一数据流的发送,若无效则重新执行第一数据流的发送。
图14是本申请实施例提供的一种主机101内部的异步传输方法的流程示意图。作为一种可能的实施方式,在主机101以异步传输方式向从机102发送第一数据流时,同样先以主线程先启动数据封装,并将封装完成后的第一数据流发送给发送线程,但并不立刻进入等待状态,而是继续启动至少一个第二数据流的数据封装,直到接收到发送线程关于传输队列已满的等待指令,才会暂停数据流封装,并等待发送线程发出停止等待的指令。
相对的,发送线程会依次对传输队列中的所有数据流进行发送,同时周期性检测传输队列中的数据流是否已满。当检测到传输队列已满时,发送线程会立刻就传输队列无空位的情况向主线程发送暂停封装的等待指令,并持续监测传输队列是否出现空位。而在传输队列出现空位时,会再次向主线程发送停止等待指令,以使主线程继续执行数据封装。
此外,在发送线程接收到第一数据流的校验失败数据流时,会将第一数据流添加至异常重传队列进行优先发送。或者,在接收到第一数据流对应的第一确认数据流时,会将第一数据流从发送线程中释放。
请参见图15,基于同一发明构思,本申请实施例还提供了一种电子设备300,该电子设备300可以包括至少一个处理器,该至少一个处理器用于执行存储器中存储的计算机程序,实现本申请实施例提供的如图2-图10、图12-图14所示的串行传输方法的步骤。
可选的,上述处理器具体可以是中央处理器、特定ASIC,可以是一个或多个用于控制程序执行的集成电路。
可选的,该电子设备还可以包括与至少一个处理器301连接的存储器302,存储器302可以包括ROM、RAM和磁盘存储器。存储器302用于存储处理器301运行时所需的数据,即存储有可被至少一个处理器301执行的指令,至少一个处理器301通过执行存储器302存储的指令,执行如图2-图10、图12-图14所示的方法。其中,存储器302的数量为一个或多个。
此外,本申请实施例还提供一种计算机存储介质,其中,计算机存储介质存储有计算机指令,当计算机指令在计算机上运行时,使得计算机执行图2-图10、图12-图14中所述的方法。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。
Claims (12)
1.一种串行传输方法,其特征在于,应用于从机,所述从机与主机电连接,所述主机及所述从机均通过串行外设接口协议执行数据传输,所述方法包括:
接收来自主机的第一数据流,所述第一数据流至少携带第一消息字段与第一控制字段,所述第一消息字段表征所述主机需要传输的内容数据,所述第一控制字段包括所述主机定义的第一传输属性参数与第一校验参数;
根据所述第一校验参数校验所述第一消息字段的数据有效性;
响应于校验所述第一消息字段的数据有效,根据所述第一传输属性参数与预设的校验成功标识码,生成并向所述主机发送第一确认数据流,所述第一确认数据流用于指示允许所述主机发送位于所述第一数据流之后的其他数据流;
接收来自所述主机的第二数据流。
2.根据权利要求1所述的方法,其特征在于,在根据所述第一校验参数校验所述第一消息字段的数据有效性之后,所述方法还包括:
响应于校验所述第一消息字段的数据无效,根据所述第一传输属性参数与预设的校验失败标识码,生成并向所述主机发送校验失败数据流,所述校验失败数据流用于指示所述主机需要再次发送所述第一数据流;
接收来自所述主机的所述第一数据流。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
向所述主机发送第三数据流,所述第三数据流至少携带第二消息字段与第二控制字段,所述第二消息字段表征所述从机需要传输的内容数据,所述第二控制字段包括所述从机定义的第二传输属性参数与第二校验参数;
响应于接收到来自所述主机的第二确认数据流,向所述主机发送第四数据流,所述第二确认数据流用于指示允许所述从机发送位于所述第三数据流之后的其他数据流。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
依次接收来自所述主机的所述第一数据流与至少一个所述第二数据流,其中,所述第一数据流与所述至少一个第二数据流均位于所述主机中的传输队列;
针对所述第一数据流,校验所述第一消息字段的数据有效性;
响应于校验所述第一消息字段的数据无效,根据所述第一传输属性参数与预设的所述校验失败标识码,生成并向所述主机发送所述校验失败数据流,所述校验失败数据流用于指示所述主机需要将所述第一数据流加入异常重传队列进行重新发送;
接收来自所述主机的所述第一数据流。
5.根据权利要求1、2或4所述的方法,其特征在于,所述第一校验参数至少包括消息字段长度、第一校验码与校验指示码,所述校验指示码表征所述第一消息字段是否需要执行校验,根据所述第一校验参数校验所述第一消息字段的数据有效性,包括:
根据所述校验指示码,确认所述第一消息字段是否需要校验;
响应于所述第一消息字段需要校验,根据所述消息字段长度确认所述第一消息字段的完整性;
响应于确认所述第一消息字段完整,根据所述第一消息字段确定出第二校验码;
响应于所述第一校验码与所述第二校验码匹配,确认所述第一消息字段的数据校验有效;或者,
响应于确认所述第一消息字段非完整,或者确认所述第一消息字段完整且所述第一校验码与所述第二校验码不匹配,确认所述第一消息字段的数据校验无效。
6.根据权利要求1、2或4所述的方法,其特征在于,所述第一传输属性参数至少包括发送序号与第一时间戳,响应于校验所述第一消息字段的数据有效,根据所述第一传输属性参数与预设的校验成功标识码,生成并向所述主机发送第一确认数据流,包括:
响应于校验所述第一消息字段的数据有效,根据所述第一时间戳,确定所述第一确认数据流的发送时间,并将所述发送时间作为所述第一确认数据流对应的第二时间戳;
基于所述第二时间戳、所述发送序号生成第二传输属性参数;
根据所述第二传输属性参数、所述校验成功标识码,生成并向所述主机发送所述第一确认数据流。
7.一种串行传输方法,其特征在于,应用于主机,所述主机与至少一台从机电连接,所述主机及所述从机均通过串行外设接口协议执行数据传输,所述方法包括:
向从机发送第一数据流,所述第一数据流至少携带第一消息字段与第一控制字段,所述第一消息字段表征所述主机需要传输的内容数据,所述第一控制字段包括所述主机定义的第一传输属性参数与第一校验参数,所述第一校验参数用于使所述从机校验所述第一消息字段的数据有效性,所述第一传输属性参数用于使所述从机在数据有效性校验通过后,生成发送至所述主机的第一确认数据流,所述第一确认数据流用于指示允许所述主机发送位于所述第一数据流之后的其他数据流;
响应于接收到来自所述从机的所述第一确认数据流,向所述从机发送第二数据流。
8.根据权利要求7所述的方法,其特征在于,在向从机发送第一数据流之后,所述方法还包括:
响应于接收到来自所述从机的校验失败数据流,向所述从机重新发送所述第一数据流,所述校验失败数据流用于指示所述主机需要再次发送所述第一数据流。
9.根据权利要求7或8所述的方法,其特征在于,所述方法还包括:
接收来自所述从机的第三数据流,所述第三数据流至少携带第二消息字段与第二控制字段,所述第二消息字段表征所述从机需要传输的内容数据,所述第二控制字段包括所述从机定义的第二传输属性参数与第二校验参数;
根据第二校验参数校验第二消息字段的数据有效性;
响应于校验所述第二消息字段的数据有效,根据所述第二传输属性参数与预设的校验成功标识码,生成并向所述从机发送第二确认数据流,所述第二确认数据流用于指示允许所述从机发送位于所述第三数据流之后的其他数据流;
接收来自所述从机的第四数据流。
10.根据权利要求8所述的方法,其特征在于,所述主机内预设有传输队列与异常数据队列,所述第一数据流与至少一个所述第二数据流按发送顺序排列于所述传输队列中,所述方法还包括:
向所述从机依次发送所述传输队列中的全部数据流;
响应于接收到来自所述从机的校验失败数据流,将所述第一数据流加入所述异常数据队列,并检测所述传输队列中当前是否有正在发送的所述第二数据流;
响应于所述传输队列中没有正在发送的所述第二数据流,发送所述异常数据队列中的所述第一数据流,并在所述异常数据队列中的所述第一数据流发送完成后,发送所述传输队列中剩余的所述第二数据流;或者,
响应于所述传输队列中有正在发送的所述第二数据流,等待正在发送的所述第二数据流发送完成后,发送所述异常数据队列中的所述第一数据流,并在所述异常数据队列中的所述第一数据流发送完成后,发送所述传输队列中剩余的所述第二数据流。
11.一种电子设备,其特征在于,所述电子设备包括至少一个处理器以及与所述至少一个处理器连接的存储器,所述至少一个处理器用于执行存储器中存储的计算机程序时实现如权利要求1-10任一项所述方法的步骤。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-10任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311816571.8A CN117687950A (zh) | 2023-12-25 | 2023-12-25 | 一种串行传输方法、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311816571.8A CN117687950A (zh) | 2023-12-25 | 2023-12-25 | 一种串行传输方法、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117687950A true CN117687950A (zh) | 2024-03-12 |
Family
ID=90135205
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311816571.8A Pending CN117687950A (zh) | 2023-12-25 | 2023-12-25 | 一种串行传输方法、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117687950A (zh) |
-
2023
- 2023-12-25 CN CN202311816571.8A patent/CN117687950A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5377188A (en) | Communication system capable of detecting missed messages | |
RU2596582C2 (ru) | Способ и устройство для адаптируемой к размерам памяти последовательной передачи данных | |
CN105786753A (zh) | 一种i2c总线上的主从设备间的传输数据的方法及设备 | |
KR101001074B1 (ko) | 버스 상에 데이터를 전송하기 위한 방법 | |
CN107425943A (zh) | 报文数据传输方法、装置、电子设备及计算机存储介质 | |
CN111752579B (zh) | 蓝牙终端升级方法、装置、存储介质与电子设备 | |
JP3996928B2 (ja) | 破損データを処理する方法 | |
CN109450912B (zh) | 数据传输方法、装置和设备 | |
CN112769939B (zh) | 一种用于实时通讯的大数据可靠传输方法 | |
CN109039552B (zh) | 一种数据恢复方法及装置 | |
US7783964B2 (en) | Redundant 3-wire communication system and method | |
CN102436430B (zh) | 存储设备、主机控制器和存储系统 | |
CN105472377A (zh) | 电视机调试方法及装置 | |
US6977901B2 (en) | Packet transmission/reception processor | |
WO2024131009A1 (zh) | 芯片间通信方法及存储介质 | |
JP2009244991A (ja) | データ通信方法、データ通信システム、電子制御ユニット、及び回路基板 | |
CN116578521B (zh) | 一种单总线通信方法、装置、系统及设备 | |
CN107181657B (zh) | 一种wtb链路层接口适配器及其实现方法 | |
CN117687950A (zh) | 一种串行传输方法、电子设备及存储介质 | |
CN114968876B (zh) | 数据通信方法、系统、电子装置和存储介质 | |
CN101425877A (zh) | 一种模块间通讯的方法 | |
US7334040B2 (en) | Method of transmission between two processors of a radio communication unit | |
CN218941111U (zh) | 一种微控制器、电子设备和车辆 | |
CN111917531B (zh) | 一种单线双向通信系统及其通信方法 | |
CN114978426A (zh) | 数据传输方法及系统 |
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 |