一种SPI通信方法、装置及系统与流程

    专利2022-07-07  37


    本发明涉及通信技术领域,更具体的说,是涉及一种spi通信方法、装置及系统。



    背景技术:

    在汽车通信领域,通常参照mpu(microprocessorunit,微处理器) mcu(microcontrollerunit,微控制单元)的架构,将车载通信中的tbox(telematicsbox,智能终端)和网关合并到一个设备中,mpu实现tbox的处理功能(如远程通信等),mcu实现网关的处理功能。由于设备中包含网关,所以报文量比普通tbox大很多,考虑通信效率,在tbox与网关之间,通常会选择spi(seriaperipheralinterface,串行外设接口)通信方式进行数据传输,提高数据传输速率。

    但是目前在tbox与网关之间使用的spi通信方式存在通信可靠性低的问题。



    技术实现要素:

    有鉴于此,本发明提供了一种spi通信方法、装置及系统,以克服现有技术中在tbox与网关之间使用的spi通信方式存在通信可靠性低的问题。

    为实现上述目的,本发明提供如下技术方案:

    一种spi通信方法,所述spi通信方法中的通信双方为tbox与网关,在确定通信双方都处于可正常通信状态并且由tbox一端触发通信开始之后,每次信息交互过程中的信息发送方执行如下操作:

    按照预先设置的有效数据生成规则,生成目标报文的有效数据信息;

    按照预先设置的报头信息生成规则以及有效数据信息,生成目标报文的报头信息,所述报头信息中至少包括:校验标识信息,目标报文的序号信息、有效数据长度信息以及校验值,所述校验标识信息用于指示所述目标报文是否需要所述信息接收方进行校验;

    按照预先设置的报尾信息生成规则,生成目标报文的报尾信息;

    将所述目标报文的报头信息、报尾信息以及有效数据信息组装后,发送给所述信息接收方。

    优选的,所述确定通信双方都处于可正常通信状态包括:

    信息发送方在确定自身处于可正常通信状态之后,向信息接收方发送发送方通信状态指示信息;在接收到信息接收方针对所述发送方通信状态指示信息回复的响应信息之后,确定信息接收方处于可正常通信状态。

    优选的,所述信息发送方在确定自身处于可正常通信状态之后,向信息接收方发送发送方通信状态指示信息包括:

    所述信息发送方在确定自身处于可正常通信状态之后,将自身的流控引脚状态由低电平切换到高电平,触发自身向信息接收方发送发送方通信状态指示信息,使所述信息接收方依据接收到的所述发送方通信状态指示信息,将自身的流控引脚状态由低电平切换到高电平,并向所述信息发送方回复响应信息。

    优选的,在tbox一端向网关一端发送发送方通信状态指示信息之后,经过预设时间段所述tbox一端未接收到所述网关一端针对所述发送方通信状态指示信息回复的响应信息的情况下,所述方法还包括:

    所述tbox一端将自身的流控引脚状态由高电平切回到低电平后,再次将自身的流控引脚状态由低电平重新切换回高电平,并触发自身向所述信息接收方重新发送发送方通信状态指示信息。

    优选的,所述按照预先设置的有效数据生成规则,生成目标报文的有效数据信息包括:

    所述当前信息交互过程中的信息发送方基于上一次信息交互过程中的信息发送方发送的信息,确定所述当前信息交互过程中的信息发送方在历史时间段内最近一次发送出去的报文是否是有效报文;

    在确定所述当前信息交互过程中的信息发送方在历史时间段内最近一次发送出去的报文是有效报文的情况下,依据上一次信息交互过程中的信息发送方发送的信息中的报文校验信息,生成目标报文的有效数据信息;

    在确定所述当前信息交互过程中的信息发送方在历史时间段内最近一次发送出去的报文是无效报文的情况下,获取新的报文,将新的报文作为目标报文,生成目标报文的有效数据信息。

    优选的,所述当前信息交互过程中的信息发送方基于上一次信息交互过程中的信息发送方发送的信息,确定所述当前信息交互过程中的信息发送方在历史时间段内最近一次发送出去的报文是否是有效报文包括:

    当前信息交互过程中的信息发送方基于上一次信息交互过程中的信息发送方发送的信息中的报文校验信息,确定所述当前信息交互过程中的信息发送方在历史时间段内最近一次发送出去的报文是否是有效报文。

    优选的,所述在确定所述当前信息交互过程中的信息发送方在历史时间段内最近一次发送出去的报文是有效报文的情况下,依据上一次信息交互过程中的信息发送方发送的信息中的报文校验信息,生成目标报文的有效数据信息包括:

    在确定所述当前信息交互过程中的信息发送方在历史时间段内最近一次发送出去的报文是有效报文,并且上一次信息交互过程中的信息发送方发送的信息中的报文校验信息为成功的情况下,获取新的报文,将新的报文作为目标报文,生成目标报文的有效数据信息;

    在确定所述当前信息交互过程中的信息发送方在历史时间段内最近一次发送出去的报文是有效报文,并且上一次信息交互过程中的信息发送方发送的信息中的报文校验信息为失败的情况下,将所述当前信息交互过程中的信息发送方在历史时间段内最近一次发送出去的报文重新作为目标报文,生成目标报文的有效数据信息。

    优选的,所述按照预先设置的报尾信息生成规则,生成目标报文的报尾信息包括:

    获取当前信息交互过程中的信息发送方对上一次信息交互过程中的信息发送方发送的报文进行校验的报文校验结果,以及所校验的报文的序号信息;

    依据所述报文校验结果以及所校验的报文的序号信息,生成目标报文的报尾信息。

    一种spi通信装置,所述spi通信装置为通信双方中的tbox或网关,通信双方中的tbox以及网关通过一路spi通信链路以及两个流控引脚进行通信,在确定通信双方都处于可正常通信状态并且由tbox一端触发通信开始之后,每次信息交互过程中的信息发送方包括:

    有效数据信息生成单元,用于按照预先设置的有效数据生成规则,生成目标报文的有效数据信息;

    报头信息生成单元,用于按照预先设置的报头信息生成规则以及有效数据信息,生成目标报文的报头信息,所述报头信息中至少包括:校验标识信息,目标报文的序号信息、有效数据长度信息以及校验值,所述校验标识信息用于指示所述目标报文是否需要所述信息接收方进行校验;

    报尾信息生成单元,用于按照预先设置的报尾信息生成规则,生成目标报文的报尾信息;

    发送单元,用于将所述目标报文的报头信息、报尾信息以及有效数据信息组装后,发送给所述信息接收方。

    一种spi通信系统,所述spi通信系统中的通信双方为tbox与网关,在确定通信双方都处于可正常通信状态并且由tbox一端触发通信开始之后,每次信息交互过程中,所述spi通信系统中的信息发送方执行如下操作:

    按照预先设置的有效数据生成规则,生成目标报文的有效数据信息;

    按照预先设置的报头信息生成规则以及有效数据信息,生成目标报文的报头信息,所述报头信息中至少包括:校验标识信息,目标报文的序号信息、有效数据长度信息以及校验值,所述校验标识信息用于指示所述目标报文是否需要所述信息接收方进行校验;

    按照预先设置的报尾信息生成规则,生成目标报文的报尾信息;

    将所述目标报文的报头信息、报尾信息以及有效数据信息组装后,发送给所述信息接收方。

    经由上述的技术方案可知,与现有技术相比,本发明提供了一种spi通信方法、装置及系统,在确定通信双方都处于可正常通信状态并且由tbox一端触发通信开始之后,每次信息交互过程中的信息发送方执行如下操作:按照预先设置的有效数据生成规则,生成目标报文的有效数据信息;按照预先设置的报头信息生成规则以及有效数据信息,生成目标报文的报头信息,报头信息中至少包括:校验标识信息,目标报文的序号信息、有效数据长度信息以及校验值,校验标识信息用于指示目标报文是否需要信息接收方进行校验;按照预先设置的报尾信息生成规则,生成目标报文的报尾信息;将目标报文的报头信息、报尾信息以及有效数据信息组装后,发送给信息接收方。由于本发明是在确定通信双方都处于可正常通信状态之后才执行的后续信息交互过程,能够避免由于任何一方未处于可正常通信状态之下进行通信导致的通信出错的现象,提高通信可靠性。并且,在目标报文的报头信息中携带的校验标识信息用于指示目标报文是否需要信息接收方进行校验,从而指示信息接收方需要对哪些目标报文进行校验,提高了信息接收方的数据处理效率。

    附图说明

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

    图1为现有技术中提供的两路spi通信方式示意图;

    图2为本发明实施例提供的mpu软件架构图;

    图3为本发明实施例提供的mpu中的spidriver的结构示意图;

    图4为本发明实施例提供的spi通信方法的流程图;

    图5本发明实施例提供的6线spi通信方式示意图;

    图6为本发明实施例提供的另一种spi通信方法的流程图;

    图7为本发明实施例提供的按照预先设置的有效数据生成规则,生成目标报文的有效数据信息的流程图;

    图8为本发明实施例提供的报文组成结构示意图;

    图9为本发明实施例提供的一种spi通信装置的结构框图。

    具体实施方式

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

    在汽车通信领域,通常参照mpu(microprocessorunit,微处理器) mcu(microcontrollerunit,微控制单元)的架构,将车载通信中的tbox(telematicsbox,智能终端)和网关合并到一个设备中,mpu实现tbox的处理功能(如远程通信等),mcu实现网关的处理功能。由于设备中包含网关,所以报文量比普通tbox大很多,考虑通信效率,在tbox与网关之间,通常会选择spi(seriaperipheralinterface,串行外设接口)通信方式进行数据传输,提高数据传输速率。例如:当前spi使用9m通信速率,tbox用的其它串口速率为1m,相比来说,spi通信方式的通信速率比较大。

    spi通信方式的优点为:支持全双工通信,通信简单,数据传输速率快,但是spi通信方式的缺点为:没有指定的流控制(流向控制),没有应答机制确认是否接收到数据,因此,目前在tbox与网关之间使用的spi通信方式存在通信可靠性低的问题。

    发明人通过研究发现,由于spi通信方式没有指定的流控制,目前主要采用两路spi进行通信。相当于把spi当作半双工用,就是同一个时刻,只能允许一个方向的数据进行传输,数据流向只从主端流向从端,如图1所示的两路spi通信方式中,在mpu确定自身处于可正常通信状态之后,mpu为主设备,mcu为从设备,信息只能从mpu端传输给mcu端;相应的,在mcu确定自身处于可正常通信状态之后,mcu为主设备,mpu为从设备,信息只能从mcu端传输给mpu端。两个方向上的数据并不能同时进行传输,这样会导致芯片资源浪费,并且没有应答机制确认是否接收到数据,在一些tbox当中,其芯片不支持两路spi通信方式,因此,两路spi通信方式的应用范围受到限制。

    本发明为了进一步解决上述技术问题,提出了如下一种spi通信方法,在确定通信双方都处于可正常通信状态并且由tbox一端触发通信开始之后,每次信息交互过程中的信息发送方执行如下操作:按照预先设置的有效数据生成规则,生成目标报文的有效数据信息;按照预先设置的报头信息生成规则以及有效数据信息,生成目标报文的报头信息,报头信息中至少包括:校验标识信息,目标报文的序号信息、有效数据长度信息以及校验值,校验标识信息用于指示目标报文是否需要信息接收方进行校验;按照预先设置的报尾信息生成规则,生成目标报文的报尾信息;将目标报文的报头信息、报尾信息以及有效数据信息组装后,发送给信息接收方。由于本发明是在确定通信双方都处于可正常通信状态之后才执行的后续信息交互过程,能够避免由于任何一方未处于可正常通信状态之下进行通信导致的通信出错的现象,提高通信可靠性。并且,在目标报文的报头信息中携带的校验标识信息用于指示目标报文是否需要信息接收方进行校验,从而指示信息接收方需要对哪些目标报文进行校验,提高了信息接收方的数据处理效率。

    下面对本发明实施例提供的spi通信方法进行介绍。spi通信方法中的通信双方为tbox与网关,mpu实现tbox的处理功能,mcu实现网关的处理功能,本发明中的mpu软件分为三层,如图2所示的mpu软件架构图,由上而下分别为:

    接口逻辑层(在用户空间userspace实现):负责为用户提供接口,实现收发逻辑,接收线程提高为实时线程,增大线程调度机会。

    数据交互层(在内核空间实现,kernelspace):负责数据组装,发送,校验,回复ack(应答),数据重传。保证用户数据包的可靠传输,数据交互层启动一个实时内核线程完成数据组装和发送任务,并直接调用底层spi驱动(spidriver)的transmit函数,减小响应时间。如图3所示描述了mpu中的spidriver的结构,linux内核里spidriver是分层的,最底层的叫bus驱动,bus驱动里有个transmit函数负责最终真正把spi数据发送出去,在bus驱动上层有一层公共层,用于收集和排查其它应用想要发送的数据,并把各个驱动dev的数据排队后发送,再往上层是设备驱动层,用于各个业务想要发送的数据。

    两线传输层:两线通信协议/异常处理都是在内核空间实现,也就是说在spidriver(spi驱动)中实现管理与mcu端的两个gpio交互(模拟spi流控),保证单包spi数据的完整传输。

    具体的,图4为本发明实施例提供的spi通信方法的流程图,在确定通信双方都处于可正常通信状态并且由tbox一端触发通信开始之后,参照图4,每次信息交互过程中的信息发送方执行如下操作:

    步骤s100、按照预先设置的有效数据生成规则,生成目标报文的有效数据信息;

    有效数据信息为目标报文中承载有效数据的信息,本发明实施例将待发送数据组装到报文的有效数据信息中,从而生成目标报文的有效数据信息。

    步骤s110、按照预先设置的报头信息生成规则以及有效数据信息,生成目标报文的报头信息,报头信息中至少包括:校验标识信息,目标报文的序号信息、有效数据长度信息以及校验值,校验标识信息用于指示目标报文是否需要信息接收方进行校验;

    由于本发明实施例中的通信双方为tbox与网关,tbox与网关可以采用spi通信方法进行全双工通信,因此,每次信息交互过程中的信息发送方可以为tbox,也可以为网关。

    需要说明的是,校验标识信息用于指示信息接收方是否需要对目标报文进行校验;目标报文的序号信息用于标识目标报文的发送顺序;有效数据长度信息指的是目标报文中所承载的有效数据的长度,校验值中承载的是对目标报文进行校验的校验值。

    步骤s120、按照预先设置的报尾信息生成规则,生成目标报文的报尾信息;

    步骤s130、将目标报文的报头信息、报尾信息以及有效数据信息组装后,发送给信息接收方。

    可选的,本发明实施例在一次信息交互过程中,信息发送方向信息接收方发送报文的时候,如果信息发送方接收到发送请求,则会把发送请求中的数据缓存在一起,在数据缓存量达到预设缓存值,或者数据缓存时间到达预设缓存时间的情况下,将所有缓存的数据一起发送给信息接收方。提高一次spi传输的利用率。

    需要说明的是,本发明实施例公开的确定通信双方都处于可正常通信状态包括:信息发送方在确定自身处于可正常通信状态之后,向信息接收方发送发送方通信状态指示信息;在接收到信息接收方针对发送方通信状态指示信息回复的响应信息之后,确定信息接收方处于可正常通信状态。

    具体的,由于确定通信双方都处于可正常通信状态的过程是通过通信双方互发电平信号的方式实现的,因此信息发送方在确定自身处于可正常通信状态之后,向信息接收方发送的发送方通信状态指示信息是一种电平信号,同样,信息发送方接收到的响应信息也是一种电平信号。

    具体的,在一次信息交互过程中的信息发送方为mpu,信息接收方为mcu的情况下,mpu确定自身处于可正常通信状态之后,向mcu发送发送方通信状态指示信息;mpu在接收到mcu针对发送方通信状态指示信息回复的响应信息之后,确定mcu处于可正常通信状态。

    相应的,在一次信息交互过程中的信息发送方为mcu,信息接收方为mpu的情况下,mcu确定自身处于可正常通信状态之后,向mpu发送发送方通信状态指示信息;mcu在接收到mpu针对发送方通信状态指示信息回复的响应信息之后,确定mpu处于可正常通信状态。

    需要说明的是,如图5所示的6线spi通信方式示意图,本发明实施例中的spi通信方法采用一路spi通信链路加两个流控引脚gpio(general-purposeinput/output,通用型输入输出)结合的方式,两个gpio中一个被mpu端控制,用于传输mpuready信息(mpu状态指示信息);另一个被mcu端控制,用于传输mcuready信息(mcu状态指示信息);mpu做为主控制端,mcu作为从控制端,两根gpio用于双方做数据流控,即用于确定通信双方是否都处于可正常通信状态,spi通信链路需要4条通信传输线路,通信时分主从模式,由主控制端触发通信的开始。所谓的6线就是除了一组spi通信4条通信传输线路,再增加两个gpio。

    具体的,信息发送方在确定自身处于可正常通信状态之后,向信息接收方发送发送方通信状态指示信息包括:

    信息发送方在确定自身处于可正常通信状态之后,将自身的流控引脚状态由低电平切换到高电平,触发自身向信息接收方发送发送方通信状态指示信息,使信息接收方依据接收到的发送方通信状态指示信息,将自身的流控引脚状态由低电平切换到高电平,并向信息发送方回复响应信息。

    也就是在信息发送方将自身的流控引脚状态由低电平切换到高电平的时候,上升沿触发自身向信息接收方发送发送方通信状态指示信息。

    具体的,在一次信息交互过程中的信息发送方为mpu,信息接收方为mcu的情况下,mpu在确定自身处于可正常通信状态之后,将自身的流控引脚状态由低电平切换到高电平,触发自身向mcu发送发送方通信状态指示信息,mcu接收到发送方通信状态指示信息之后,同样将自身的流控引脚状态由低电平切换到高电平,并向mpu回复响应信息。

    在一次信息交互过程中的信息发送方为mcu,信息接收方为mpu的情况下,mcu在确定自身处于可正常通信状态之后,将自身的流控引脚状态由低电平切换到高电平,触发自身向mpu发送发送方通信状态指示信息,mpu接收到发送方通信状态指示信息之后,同样将自身的流控引脚状态由低电平切换到高电平,并向mcu回复响应信息。

    也就是说,本发明中的mpu与mcu侧双方都拉高流控引脚状态之后,才开始进行数据传输,拉高就是指将两个gpio都设置为高电平。

    可选的,在tbox一端向网关一端发送发送方通信状态指示信息之后,经过预设时间段tbox一端未接收到网关一端针对发送方通信状态指示信息回复的响应信息的情况下,方法还包括:

    tbox一端将自身的流控引脚状态由高电平切回到低电平后,再次将自身的流控引脚状态由低电平重新切换回高电平,并触发自身向信息接收方重新发送发送方通信状态指示信息。

    也就是说,本发明还对通信中流控引脚gpio状态异常做了监测,流控引脚的异常处理都做在主端(tbox一端),发现异常后会重新触发mpu的ready逻辑,由于mpu或者mcu发送通信状态指示信息都是靠上升沿来检测,所以恢复机制用的是拉低再拉高,也就是mpu端将自身的流控引脚状态由高电平切回到低电平后,再次将自身的流控引脚状态由低电平重新切换回高电平的方式,通过该方式再产生一个上升沿让mcu恢复正常。

    需要说明的是,在确定通信双方都处于可正常通信状态之后,由mpu端触发发起正式通信过程,即由mpu端发送时钟信号的方式触发发起正式通信过程,可选的,通信双方在每次进行通信时可以使用固定512bytes长度进行传输,本发明实施例不做具体限定。

    在通信双方信息传输结束之后,由mpu端控制,释放通信双方的流控指示引脚状态,即将两个gpio引脚电平状态拉低。

    需要说明的是,本发明提出了如下一种spi通信方法,在确定通信双方都处于可正常通信状态并且由tbox一端触发通信开始之后,每次信息交互过程中的信息发送方执行如下操作:按照预先设置的有效数据生成规则,生成目标报文的有效数据信息;按照预先设置的报头信息生成规则以及有效数据信息,生成目标报文的报头信息,报头信息中至少包括:校验标识信息,目标报文的序号信息、有效数据长度信息以及校验值,校验标识信息用于指示目标报文是否需要信息接收方进行校验;按照预先设置的报尾信息生成规则,生成目标报文的报尾信息;将目标报文的报头信息、报尾信息以及有效数据信息组装后,发送给信息接收方。

    例如:mcu端想把数据给mpu端的话,就通过流控引脚gpio变化告诉mpu端,主端(mpu端)就可以发起传输获得数据了,如果没有流控引脚gpio变化通知,那么mpu端无法知道mcu端什么时候想要传输数据,无法确定自身什么时候需要通信准备好接收数据,很容易在数据传输过程出现问题,如在mpu端未处于可正常通信状态的情况下,mcu端向mpu端发送数据,mpu端可能无法接收到数据。由于本发明是在确定通信双方都处于可正常通信状态之后才执行的后续信息交互过程,因此,在通过上述握手的方式确定通信双方都处于可正常通信状态之后,通信双方可以采用全双工的工作模式进行通信,预先确定通信双方是否都处于可正常通信状态的方式,能够避免由于任何一方未处于可正常通信状态之下进行通信导致的通信出错的现象,提高通信可靠性。本发明上述方式只用一路spi通信链路加两个gpio引脚实现主从双向通信,节省soc管脚资源。

    并且,在目标报文的报头信息中携带的校验标识信息用于指示目标报文是否需要信息接收方进行校验,从而指示信息接收方需要对哪些目标报文进行校验,提高了信息接收方的数据处理效率。

    下面对本发明实施例提供的spi通信方法进行介绍。图6为本发明实施例提供的spi通信方法的流程图,具体说明本发明引入的校验机制,spi通信方法中的通信双方为tbox与网关,在确定通信双方都处于可正常通信状态并且由tbox一端触发通信开始之后,参照图6,每次信息交互过程中的信息发送方执行如下操作:

    步骤s200、按照预先设置的有效数据生成规则,生成目标报文的有效数据信息;

    有效数据信息(payload)中存放传输的有效数据。

    可选的,本发明实施例公开的按照预先设置的有效数据生成规则,生成目标报文的有效数据信息的过程包括:

    当前信息交互过程中的信息发送方基于上一次信息交互过程中的信息发送方发送的信息,确定当前信息交互过程中的信息发送方在历史时间段内最近一次发送出去的报文是否是有效报文;在确定当前信息交互过程中的信息发送方在历史时间段内最近一次发送出去的报文是有效报文的情况下,依据上一次信息交互过程中的信息发送方发送的信息中的报文校验信息,生成目标报文的有效数据信息;在确定当前信息交互过程中的信息发送方在历史时间段内最近一次发送出去的报文是无效报文的情况下,获取新的报文,将新的报文作为目标报文,生成目标报文的有效数据信息。

    可选的,本发明实施例还公开了另外一种按照预先设置的有效数据生成规则,生成目标报文的有效数据信息的方式:

    当前信息交互过程中的信息发送方判断上一次信息交互过程中的信息发送方发送的信息中的报文校验信息是否为目标校验值;如果上一次信息交互过程中的信息发送方发送的信息中的报文校验信息为目标校验值的情况下,将当前信息交互过程中的信息发送方在历史时间段内最近一次发送出去的报文重新作为目标报文,生成目标报文的有效数据信息;如果上一次信息交互过程中的信息发送方发送的信息中的报文校验信息不为目标校验值的情况下,获取新的报文,将新的报文作为目标报文,生成目标报文的有效数据信息。

    具体的,如果上一次信息交互过程中的信息发送方发送的信息中的报文校验信息为0x5c的情况下,则将当前信息交互过程中的信息发送方在历史时间段内最近一次发送出去的报文重新作为目标报文,生成目标报文的有效数据信息;如果上一次信息交互过程中的信息发送方发送的信息中的报文校验信息不为0x5c的情况下,获取新的报文,将新的报文作为目标报文,生成目标报文的有效数据信息。

    可选的,下面给出一种具体的按照预先设置的有效数据生成规则,生成目标报文的有效数据信息的方式,参照图7所示的按照预先设置的有效数据生成规则,生成目标报文的有效数据信息的流程图,本发明实施例公开的按照预先设置的有效数据生成规则,生成目标报文的有效数据信息的过程包括:

    步骤s2001:当前信息交互过程中的信息发送方基于上一次信息交互过程中的信息发送方发送的信息中的报文校验信息,判断当前信息交互过程中的信息发送方在历史时间段内最近一次发送出去的报文是否是有效报文;在判断结果为是的情况下,执行步骤s2002;在判断结果为否的情况下,执行步骤s2003;

    可选的,本发明实施例当前信息交互过程中的信息发送方从上一次信息交互过程中的信息发送方发送的报文的报尾中提取报文校验信息;并依据提取到的报文校验信息,判断当前信息交互过程中的信息发送方在历史时间段内最近一次发送出去的报文是否是有效报文。

    具体的,判断当前信息交互过程中的信息发送方在历史时间段内最近一次发送出去的报文是否是有效报文的方式为:判断从上一次信息交互过程中的信息发送方发送的报文的报尾中提取的报文校验信息是否为0xaa。

    如果从上一次信息交互过程中的信息发送方发送的报文的报尾中提取的报文校验信息为0xaa的情况下,则表明当前信息交互过程中的信息发送方在历史时间段内最近一次发送出去的报文是无效报文;如果从上一次信息交互过程中的信息发送方发送的报文的报尾中提取的报文校验信息并不为0xaa的情况下,则表明当前信息交互过程中的信息发送方在历史时间段内最近一次发送出去的报文是有效报文。

    步骤s2002:判断上一次信息交互过程中的信息发送方发送的信息中的报文校验信息是成功还是失败;在确定报文校验信息为成功的情况下,执行步骤s2003;在确定报文校验信息为失败的情况下,执行步骤s2004;

    如果从上一次信息交互过程中的信息发送方发送的报文的报尾中提取的报文校验信息并不为0xaa的情况下,则进一步提取报尾中报文校验结果的具体内容,如果提取的报尾中报文校验信息的具体内容为0x5b,表明校验结果为成功;如果提取的报尾中报文校验信息的具体内容为0x5c,表明校验结果为失败。

    步骤s2003:获取新的报文,将新的报文作为目标报文,生成目标报文的有效数据信息;

    从待传输数据队列中获取新的数据,依据获取的新的数据组装目标报文,生成目标报文的有效数据信息。

    步骤s2004:将当前信息交互过程中的信息发送方在历史时间段内最近一次发送出去的报文重新作为目标报文,生成目标报文的有效数据信息。

    可选的,将当前信息交互过程中的信息发送方在历史时间段内最近一次发送出去的报文重新作为目标报文,触发报文重发操作,报文重发操作下目标报文中head_count的数值为历史时间段内最近一次发送出去的报文的head_count数值,也就是报文重发操作模式下,目标报文的head_count不变用于指示是重发帧。

    可选的,如果信息接收方在超时时间内没有收到报文校验信息,也会触发重传操作,重发时报文的head_count不变用于指示是重发帧。

    通过上述方式,本次信息交互过程中的信息发送方,能够确定在历史时间段内,最近一次向本次信息交互过程中的信息接收方发送的报文是否是有效报文,以及,确定本次信息交互过程中的信息接收方,是否成功接收到本次信息交互过程中的信息发送方发送的报文,在没有成功接收到的情况下,触发报文的重发操作,确保报文能够正确被发送至信息接收方,提高通信可靠性。

    步骤s210、按照预先设置的报头信息生成规则以及有效数据信息,生成目标报文的报头信息,报头信息中至少包括:校验标识信息,目标报文的序号信息、有效数据长度信息以及校验值,校验标识信息用于指示目标报文是否需要信息接收方进行校验;

    具体的本发明实施例中的校验方式具体为crc校验,当然也可以采用其他校验方式,本发明实施例不做具体限定,下面以crc校验方式为例进行说明:

    结合图8所示的报文组成结构示意图所示,报头信息(head_flag)中的校验标识信息具体包括如下三种信息:

    1、0x5a表示此报文为需要crc校验;

    2、0x6a表示此报文不需要crc校验;

    3、0xaa表示无效数据报文。

    目标报文的序号信息(head_count)具体在0到255周期循环计数,用于唯一标识有效数据信息(payload),在校验出错或者重发时此head_count保持不变;

    有效数据长度信息采用head_len_high以及head_len_low表示,这两个变量个占一个字节,head_len_high的前4bytes表示数据长度高位,head_len_low表示数据长度低位。有效数据长度信息表示有效数据信息(payload)里有效数据长度为多少,计算公式为head_len_high&0xf<<8|head_len_low。即是将head_len_high的数值与0xf做与运算得到的结果左移8位,然后再将左移8位后的数值与head_len_low的数值做或运算。

    校验值采用head_crc_high以及head_crc_low表示,crc校验值为crc_high<<8|crc_low,校验值是以本次目标报文中的payload有效数据长度为基准按照预设校验值计算方式进行计算的。

    步骤s220、获取当前信息交互过程中的信息发送方对上一次信息交互过程中的信息发送方发送的报文进行校验的报文校验结果,以及所校验的报文的序号信息;

    当前信息交互过程中的信息发送方对上一次信息交互过程中的信息发送方发送的报文进行校验的报文校验结果包括:对上一次信息交互过程中的信息发送方发送的报文校验成功、对上一次信息交互过程中的信息发送方发送的报文校验失败以及上一次信息交互过程中的信息发送方发过来的是无效数据帧。

    步骤s230、依据报文校验结果以及所校验的报文的序号信息,生成目标报文的报尾信息;

    结合图8所示的报文组成结构示意图所示,目标报文的报尾(tail_flag)中携带的报文校验结果为:

    1、0x5b表示上一次信息交互过程中的信息发送方发过来的带crc校验帧校验成功;

    2、0x5c表示上一次信息交互过程中的信息发送方发过来的带crc校验帧校验失败;

    3、0xaa表示上一次信息交互过程中的信息发送方发过来的是无效数据帧;

    目标报文的报尾中还携带所校验的报文的序号信息(tail_count),tail_count表示上一次信息交互过程中的信息发送方发过来的报文(即是本次信息交互过程中的信息发送方所校验的报文)的序号信息,如果tail_flag=0xaa,表明上一次信息交互过程中的信息发送方发过来的报文为无效报文,如果tail_flag!=0xaa,表明上一次信息交互过程中的信息发送方发过来的报文为有效报文,利用tail_count的具体数值结合tail_flag,用于指示本次信息交互过程中的信息接收方确定上一次信息交互过程中的信息发送方发送的哪一帧报文为无效报文、哪一帧报文为有效报文,在为有效报文的情况下,该帧报文是校验成功,还是校验失败。

    可选的,本发明实施例在将报文校验结果以及所校验的报文的序号信息组合为报文校验信息之后,可以直接将报文校验信息发送至信息接收方,提高信息发送的及时性,还可以依据报文校验信息生成目标报文的报尾信息,将报文校验结果以及所校验的报文的序号信息携带在本次信息交互过程中的目标报文的报尾中,随同本次信息交互过程中的目标报文一同发送至信息接收方。

    需要说明的是,由于spi通信的特点是tbox端给了网关端一包数据,同时网关端也要给tbox端一包同样大小的数据,也就是对tbox端进行回应,每一个发送对应一个回应,对于任意一方,有可能会连续两次发数据,但每次发数据,对应端都会回应,回应过程可以作为一次信息交互。也就是说,如果本次信息交互过程中的信息发送方为tbox的情况下,那么上一次信息交互过程中的信息发送方为网关;相应的,如果本次信息交互过程中的信息发送方为网关的情况下,那么上一次信息交互过程中的信息发送方为tbox。

    需要说明的是,0xaa在通信中用于当做无效或者说默认值填充,head_flag以及tail_flag都可以采用0xaa填充,比如如果没有发送数据,那么head_flag就保持0xaa值不变,基于spi通信特点,只要发起一次通信,如果主控制端给了从控制端一包数据,同时从控制端也会给主控制端一包同样大小数据,但并不一定都是有效数据,在主控制端和从控制端同时在给对方数据的情况下,本发明实施例会对两者每次传输的数据做标记,用于标识发送的数据是否为有效数据,从而指示对端是否需要对数据进行处理,提高通信可靠性,如果为0xaa就表示无效数据,不需要对端做处理,因为并不是每时每刻都有有效数据需要进行处理。

    步骤s240、将目标报文的报头信息、报尾信息以及有效数据信息组装后,发送给信息接收方。

    将目标报文的报头信息、有效数据信息以及报尾信息组装后,发送给信息接收方,信息接收方接收到报文之后,从接收到的报文中的报头信息中提取校验标识信息,并依据校验标识信息判断是否需要对接收到报文进行校验,在需要对接收到报文进行校验的情况下,从接收到的报文中提取中的有效数据,并计算有效数据长度,按照预设校验值计算方式重新计算一个校验值,并将重新计算的校验值与接收到的报文中的校验值进行比对,如果两者相同,则证明数据接收正确,否则,数据接收错误。

    需要说明的是,在spi信息传输过程中,如果通信过程受到干扰则会导致传输数据出错,本发明实施例信息发送方对上一次信息交互过程中的信息发送方发送的报文进行校验后,将校验结果以及所校验的报文的序号信息发送给信息接收方(上一次信息交互过程中的信息发送方)的方式,假设由于通信过程受到干扰导致传输数据出错的情况下,会向信息接收方发送数据校验错误的校验结果,信息接收方接收到信息之后,依据数据校验错误的校验结果以及所校验的报文的序号信息,确定哪一帧报文在发送过程中出错,进而执行对该帧报文的重传操作。通过该方式解决了由于通信过程受到干扰导致的传输数据出错的技术问题,提高通信可靠性。

    下面对本申请实施例提供的spi通信装置进行介绍,下文描述的spi通信装置可与上文spi通信方法相互对应参照。

    图9为本申请实施例提供的spi通信装置的结构框图,参照图9,所述spi通信装置为通信双方中的tbox或网关,通信双方中的tbox以及网关通过一路spi通信链路以及两个流控引脚进行通信,在确定通信双方都处于可正常通信状态并且由tbox一端触发通信开始之后,每次信息交互过程中的信息发送方包括:

    有效数据信息生成单元900,用于按照预先设置的有效数据生成规则,生成目标报文的有效数据信息;

    报头信息生成单元910,用于按照预先设置的报头信息生成规则以及有效数据信息,生成目标报文的报头信息,所述报头信息中至少包括:校验标识信息,目标报文的序号信息、有效数据长度信息以及校验值,所述校验标识信息用于指示所述目标报文是否需要所述信息接收方进行校验;

    报尾信息生成单元920,用于按照预先设置的报尾信息生成规则,生成目标报文的报尾信息;

    发送单元930,用于将所述目标报文的报头信息、报尾信息以及有效数据信息组装后,发送给所述信息接收方。

    可选的,信息发送方确定通信双方都处于可正常通信状态具体包括:

    信息发送方在确定自身处于可正常通信状态之后,向信息接收方发送发送方通信状态指示信息;在接收到信息接收方针对所述发送方通信状态指示信息回复的响应信息之后,确定信息接收方处于可正常通信状态。

    可选的,信息发送方在确定自身处于可正常通信状态之后,向信息接收方发送发送方通信状态指示信息具体包括:

    所述信息发送方在确定自身处于可正常通信状态之后,将自身的流控引脚状态由低电平切换到高电平,触发自身向信息接收方发送发送方通信状态指示信息,使所述信息接收方依据接收到的所述发送方通信状态指示信息,将自身的流控引脚状态由低电平切换到高电平,并向所述信息发送方回复响应信息。

    在tbox一端向网关一端发送发送方通信状态指示信息之后,经过预设时间段所述tbox一端未接收到所述网关一端针对所述发送方通信状态指示信息回复的响应信息的情况下,所述tbox还用于:

    将自身的流控引脚状态由高电平切回到低电平后,再次将自身的流控引脚状态由低电平重新切换回高电平,并触发自身向所述信息接收方重新发送发送方通信状态指示信息。

    所述有效数据信息生成单元包括:

    有效报文判断单元,用于基于上一次信息交互过程中的信息发送方发送的信息,确定所述当前信息交互过程中的信息发送方在历史时间段内最近一次发送出去的报文是否是有效报文;

    第一有效数据信息生成子单元,用于在确定所述当前信息交互过程中的信息发送方在历史时间段内最近一次发送出去的报文是有效报文的情况下,依据上一次信息交互过程中的信息发送方发送的信息中的报文校验信息,生成目标报文的有效数据信息;

    第二有效数据信息生成子单元,用于在确定所述当前信息交互过程中的信息发送方在历史时间段内最近一次发送出去的报文是无效报文的情况下,获取新的报文,将新的报文作为目标报文,生成目标报文的有效数据信息。

    所述有效报文判断单元具体用于:

    基于上一次信息交互过程中的信息发送方发送的信息中的报文校验信息,确定所述当前信息交互过程中的信息发送方在历史时间段内最近一次发送出去的报文是否是有效报文。

    所述第一有效数据信息生成子单元具体用于:

    在确定所述当前信息交互过程中的信息发送方在历史时间段内最近一次发送出去的报文是有效报文,并且上一次信息交互过程中的信息发送方发送的信息中的报文校验信息为成功的情况下,获取新的报文,将新的报文作为目标报文,生成目标报文的有效数据信息;

    在确定所述当前信息交互过程中的信息发送方在历史时间段内最近一次发送出去的报文是有效报文,并且上一次信息交互过程中的信息发送方发送的信息中的报文校验信息为失败的情况下,将所述当前信息交互过程中的信息发送方在历史时间段内最近一次发送出去的报文重新作为目标报文,生成目标报文的有效数据信息。

    所述报尾信息生成单元包括:

    校验结果获取单元,用于获取当前信息交互过程中的信息发送方对上一次信息交互过程中的信息发送方发送的报文进行校验的报文校验结果;

    序号信息获取单元,用于获取当前信息交互过程中的信息发送方所校验的报文的序号信息;

    报尾信息生成子单元,用于依据所述报文校验结果以及所校验的报文的序号信息,生成目标报文的报尾信息。

    可选的,本发明实施例还公开一种spi通信系统,所述spi通信系统中的通信双方为tbox与网关,在确定通信双方都处于可正常通信状态并且由tbox一端触发通信开始之后,每次信息交互过程中,所述spi通信系统中的信息发送方执行如下操作:

    按照预先设置的有效数据生成规则,生成目标报文的有效数据信息;

    按照预先设置的报头信息生成规则以及有效数据信息,生成目标报文的报头信息,所述报头信息中至少包括:校验标识信息,目标报文的序号信息、有效数据长度信息以及校验值,所述校验标识信息用于指示所述目标报文是否需要所述信息接收方进行校验;

    按照预先设置的报尾信息生成规则,生成目标报文的报尾信息;

    将所述目标报文的报头信息、报尾信息以及有效数据信息组装后,发送给所述信息接收方。

    本说明书中各个实施例中记载的技术特征可以相互替换或组合,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

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

    结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

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


    技术特征:

    1.一种spi通信方法,其特征在于,所述spi通信方法中的通信双方为tbox与网关,在确定通信双方都处于可正常通信状态并且由tbox一端触发通信开始之后,每次信息交互过程中的信息发送方执行如下操作:

    按照预先设置的有效数据生成规则,生成目标报文的有效数据信息;

    按照预先设置的报头信息生成规则以及有效数据信息,生成目标报文的报头信息,所述报头信息中至少包括:校验标识信息,目标报文的序号信息、有效数据长度信息以及校验值,所述校验标识信息用于指示所述目标报文是否需要所述信息接收方进行校验;

    按照预先设置的报尾信息生成规则,生成目标报文的报尾信息;

    将所述目标报文的报头信息、报尾信息以及有效数据信息组装后,发送给所述信息接收方。

    2.根据权利要求1所述的方法,其特征在于,所述确定通信双方都处于可正常通信状态包括:

    信息发送方在确定自身处于可正常通信状态之后,向信息接收方发送发送方通信状态指示信息;在接收到信息接收方针对所述发送方通信状态指示信息回复的响应信息之后,确定信息接收方处于可正常通信状态。

    3.根据权利要求2所述的方法,其特征在于,所述信息发送方在确定自身处于可正常通信状态之后,向信息接收方发送发送方通信状态指示信息包括:

    所述信息发送方在确定自身处于可正常通信状态之后,将自身的流控引脚状态由低电平切换到高电平,触发自身向信息接收方发送发送方通信状态指示信息,使所述信息接收方依据接收到的所述发送方通信状态指示信息,将自身的流控引脚状态由低电平切换到高电平,并向所述信息发送方回复响应信息。

    4.根据权利要求3所述的方法,其特征在于,在tbox一端向网关一端发送发送方通信状态指示信息之后,经过预设时间段所述tbox一端未接收到所述网关一端针对所述发送方通信状态指示信息回复的响应信息的情况下,所述方法还包括:

    所述tbox一端将自身的流控引脚状态由高电平切回到低电平后,再次将自身的流控引脚状态由低电平重新切换回高电平,并触发自身向所述信息接收方重新发送发送方通信状态指示信息。

    5.根据权利要求1所述的方法,其特征在于,所述按照预先设置的有效数据生成规则,生成目标报文的有效数据信息包括:

    所述当前信息交互过程中的信息发送方基于上一次信息交互过程中的信息发送方发送的信息,确定所述当前信息交互过程中的信息发送方在历史时间段内最近一次发送出去的报文是否是有效报文;

    在确定所述当前信息交互过程中的信息发送方在历史时间段内最近一次发送出去的报文是有效报文的情况下,依据上一次信息交互过程中的信息发送方发送的信息中的报文校验信息,生成目标报文的有效数据信息;

    在确定所述当前信息交互过程中的信息发送方在历史时间段内最近一次发送出去的报文是无效报文的情况下,获取新的报文,将新的报文作为目标报文,生成目标报文的有效数据信息。

    6.根据权利要求5所述的方法,其特征在于,所述当前信息交互过程中的信息发送方基于上一次信息交互过程中的信息发送方发送的信息,确定所述当前信息交互过程中的信息发送方在历史时间段内最近一次发送出去的报文是否是有效报文包括:

    当前信息交互过程中的信息发送方基于上一次信息交互过程中的信息发送方发送的信息中的报文校验信息,确定所述当前信息交互过程中的信息发送方在历史时间段内最近一次发送出去的报文是否是有效报文。

    7.根据权利要求5所述的方法,其特征在于,所述在确定所述当前信息交互过程中的信息发送方在历史时间段内最近一次发送出去的报文是有效报文的情况下,依据上一次信息交互过程中的信息发送方发送的信息中的报文校验信息,生成目标报文的有效数据信息包括:

    在确定所述当前信息交互过程中的信息发送方在历史时间段内最近一次发送出去的报文是有效报文,并且上一次信息交互过程中的信息发送方发送的信息中的报文校验信息为成功的情况下,获取新的报文,将新的报文作为目标报文,生成目标报文的有效数据信息;

    在确定所述当前信息交互过程中的信息发送方在历史时间段内最近一次发送出去的报文是有效报文,并且上一次信息交互过程中的信息发送方发送的信息中的报文校验信息为失败的情况下,将所述当前信息交互过程中的信息发送方在历史时间段内最近一次发送出去的报文重新作为目标报文,生成目标报文的有效数据信息。

    8.根据权利要求1所述的方法,其特征在于,所述按照预先设置的报尾信息生成规则,生成目标报文的报尾信息包括:

    获取当前信息交互过程中的信息发送方对上一次信息交互过程中的信息发送方发送的报文进行校验的报文校验结果,以及所校验的报文的序号信息;

    依据所述报文校验结果以及所校验的报文的序号信息,生成目标报文的报尾信息。

    9.一种spi通信装置,其特征在于,所述spi通信装置为通信双方中的tbox或网关,通信双方中的tbox以及网关通过一路spi通信链路以及两个流控引脚进行通信,在确定通信双方都处于可正常通信状态并且由tbox一端触发通信开始之后,每次信息交互过程中的信息发送方包括:

    有效数据信息生成单元,用于按照预先设置的有效数据生成规则,生成目标报文的有效数据信息;

    报头信息生成单元,用于按照预先设置的报头信息生成规则以及有效数据信息,生成目标报文的报头信息,所述报头信息中至少包括:校验标识信息,目标报文的序号信息、有效数据长度信息以及校验值,所述校验标识信息用于指示所述目标报文是否需要所述信息接收方进行校验;

    报尾信息生成单元,用于按照预先设置的报尾信息生成规则,生成目标报文的报尾信息;

    发送单元,用于将所述目标报文的报头信息、报尾信息以及有效数据信息组装后,发送给所述信息接收方。

    10.一种spi通信系统,其特征在于,所述spi通信系统中的通信双方为tbox与网关,在确定通信双方都处于可正常通信状态并且由tbox一端触发通信开始之后,每次信息交互过程中,所述spi通信系统中的信息发送方执行如下操作:

    按照预先设置的有效数据生成规则,生成目标报文的有效数据信息;

    按照预先设置的报头信息生成规则以及有效数据信息,生成目标报文的报头信息,所述报头信息中至少包括:校验标识信息,目标报文的序号信息、有效数据长度信息以及校验值,所述校验标识信息用于指示所述目标报文是否需要所述信息接收方进行校验;

    按照预先设置的报尾信息生成规则,生成目标报文的报尾信息;

    将所述目标报文的报头信息、报尾信息以及有效数据信息组装后,发送给所述信息接收方。

    技术总结
    本发明提供了一种SPI通信方法、装置及系统,在确定通信双方都处于可正常通信状态并且由TBOX一端触发通信开始之后,每次信息交互过程中的信息发送方执行如下操作:按照预先设置的有效数据生成规则,生成目标报文的有效数据信息;按照预先设置的报头信息生成规则以及有效数据信息,生成目标报文的报头信息;按照预先设置的报尾信息生成规则,生成目标报文的报尾信息;将目标报文的报头信息、报尾信息以及有效数据信息组装后,发送给信息接收方。由于本发明是在确定通信双方都处于可正常通信状态之后才执行的后续信息交互过程,能够避免由于任何一方未处于可正常通信状态之下进行通信导致的通信出错的现象,提高通信可靠性。

    技术研发人员:张超
    受保护的技术使用者:北京经纬恒润科技股份有限公司
    技术研发日:2020.11.13
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-8960.html

    最新回复(0)