一种基于SPI总线的功能安全通信方法与流程

文档序号:11407002阅读:670来源:国知局
一种基于SPI总线的功能安全通信方法与流程

本发明涉及一种安全通信方法,具体涉及一种基于spi总线的功能安全通信方法。



背景技术:

随着汽车电子的飞速发展,汽车电子电气系统的复杂度日益增加,如何保证汽车电子电气系统的安全性和可靠性成为所有整车厂及供应商面临的问题。为此国际标准组织制定了iso26262功能安全标准,从流程和技术等方面为汽车电子电气系统的开发提供指导。在iso26262标准第五部分表d.10中,提出了一种从逻辑和时间两方面对程序执行顺序进行监控的安全机制,采用此安全机制可获得更高的诊断覆盖率,从而达到更高的asil等级。此安全机制可检测出ecu软件在运行过程中,因内部或外部干扰而导致的ecu软件运行异常。通过与ecu主处理器相独立的安全监控模块,可实现对主处理器运行逻辑和时间的监控。

如中国实用新型专利(授权公告号cn202402149u、授权公告日2012.08.29)公开了一种天然气发动机ecu安全监控模块,可实现对外部油门位置、节气门位置等信号的监控,但是,该专利没有对ecu处理器内部信息进行监控。又如,中国发明专利(申请公布号cn103206308a、申请公布日2013.07.17)公开了一种用于汽油发动机ecu安全监控系统的方法,该方法增加了对ecu主机内部信息(如系统电压和主机主频)的监控。然而,以上两项专利只是对spi传输的数据内容进行了解析和校验,其实现的基础是主机和从机间能正确稳定地通过spi传输数据,这存在以下几个问题:(1)未考虑ecu主机因中断或cpu负载而导致的spi传输不稳定、不及时的情况;(2)未考虑spi传输过程中因外部因素而导致的突然中断的情况;(3)从机对主机只有逻辑上的监控,没有时间上的监控。



技术实现要素:

针对上述问题,本发明的目的提供一种基于spi的功能安全通信方法,该方法通过对spi传输数据中字节与字节间以及帧与帧之间时间上的监控,实现对spi传输时序的监控,达到iso26262标准中对主机软件执行顺序的时间方面监控的要求。

为实现上述目的,本发明采用的技术方案为:

本发明实施例提供一种基于spi总线的功能安全通信方法,包括:

s1:spi主机将要传输的数据打包为帧数据,所述帧数据包括帧头、实际要传输的数据、帧尾;

s2:spi主机将所述帧数据以字节为单位按顺序写入spi传输寄存器中;

s3:spi从机基于spi总线以字节为单位按顺序从spi传输寄存器中接收所述帧数据,并在接收帧数据的过程中对spi主机的数据传输时序进行监控,所述传输时序包括字节与字节之间的时间间隔以及帧与帧之间的时间间隔;

其中,步骤s3具体包括:

s301:spi从机在接收到字节数据后,将接收到的字节数据内容与预设的帧尾数据和预设的帧头数据进行比较,如果接收的字节数据与预设的帧尾数据相一致,则进入步骤s302,如果接收的字节数据与预设的帧头数据相一致,则进入步骤s303,否则进入步骤s306;

s302:将帧尾标志设置为1,将定时器的定时周期设定为允许的帧间最小时间间隔,记录当前状态为检测帧间超时,将定时器的触发次数清0,启动定时器,在定时器中断时进入步骤s307;

s303:判定帧尾标志是否为1且定时器的中断次数是否为0,如果帧尾标志为1且定时器的中断次数为0,则进入步骤s304,否则进入步骤s306;

s304:判定为帧与帧之间的时间间隔过短,增加帧间过短错误计数,并进入步骤s305;

s305:判断帧间过短错误计数是否大于允许的帧间过短错误最大次数,如果大于,则复位spi主机,如果不大于,则进入步骤s306;

s306:将帧尾标志设置为0,将定时器的定时周期设定为允许的字节间最大时间间隔,记录当前状态为检测字节间超时,启动定时器,在定时器中断时进入步骤s307;

s307:判断当前状态是否为检测字节间超时,如果是,则进入步骤s308,否则进入步骤s310;

s308:判定为字节间时间间隔过长,增加字节间超时错误计数,并进入步骤s309;

s309:判断字节间超时错误计数是否大于允许的字节间超时错误最大次数,如果大于,则复位spi主机;

s310:增加定时器的中断计数,进入步骤s311;

s311:判断定时器的中断计数与允许的帧间最小时间间隔的乘积是否大于允许的帧间最大时间间隔,如果大于,则进入步骤s312;

s312:判定为帧间时间间隔过长,增加帧间超时错误计数,并进入步骤s313;

s313:判断帧间超时错误计数是否大于允许的帧间超时错误最大次数,如果大于,则复位spi主机。

可选地,在步骤s302中,如果没有触发定时器而接收到下一个spi中断数据,则执行步骤s301;在步骤s306中,如果没有触发定时器而接收到下一个spi中断数据,则执行步骤s301。

可选地,在步骤s309中,如果字节间超时错误计数没有大于允许的字节间超时错误最大次数,则当定时器再次触发时,执行步骤s307,当接收到下一个spi中断数据时,执行步骤s301;在步骤s311中,如果定时器的中断计数与允许的帧间最小时间间隔的乘积不大于允许的帧间最大时间间隔,则当定时器再次触发时,执行步骤s307,当接收到下一个spi中断数据时,执行步骤s301;在步骤s313中,如果帧间超时错误计数不大于系统允许的帧间超时错误最大次数,则当定时器再次触发时,执行步骤s307,当接收到下一个spi中断数据时,执行步骤s301。

可选地,spi传输位宽为8位,所述spi主机与所述spi从机以单字节进行数据通信,每帧数据包括4个字节,其中,第一个字节为帧头,中间两个字节为实际要传输的数据,最后一个字节为帧尾。

可选地,所述spi主机采用mpc564x芯片,所述spi从机采用mc9s12gn32芯片。

可选地,所述spi主机的输出端连接到所述spi从机的输入端,所述spi主机的输入端连接到所述spi从机的输出端,所述spi主机的时钟端连接所述spi从机的时钟端,所述spi主机的片选端连接到所述spi从机的片选端,所述spi主机的复位端连接到所述spi从机的io口。

可选地,所述spi从机通过所述io口复位spi主机。

可选地,所述spi主机和所述spi从机的波特率相同。

可选地,所述spi主机和所述spi从机的波特率均为1.5mbit/s。

与现有技术相比,本发明的有益效果为:本发明通过监控spi主机和spi从机间传输的字节数据和帧数据的时间间隔,可检测出字节与字节间时间间隔过长、帧与帧之前时间间隔过短、帧与帧之间时间间隔过长等三种错误情况,既可以保证spi传输中断后可立即被发现,又可以实现对主机软件执行时序的监控,提高了主机运行的可靠性和稳定性,提高了整个电控系统的安全性。另外,本发明只在spi从机使用一个定时器资源,对硬件资源要求较低,有利于扩大本发明的应用范围。

附图说明

图1为本发明的spi安全通信系统结构示意图。

图2为本发明的spi主机传输的数据传输时序的示意图。

图3为本发明的基于spi的功能安全通信方法的流程示意图。

图4和图5为详细示出本发明的spi从机对spi主机的传输时序进行监控的流程示意图。

具体实施方式

为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。

图1为本发明的spi安全通信系统结构示意图。图2为本发明的spi主机传输的数据传输时序的示意图。图3为本发明的基于spi的功能安全通信方法的流程示意图。图4和图5为详细示出本发明的spi从机对spi主机的传输时序进行监控的流程示意图。

以下,首先参考图1对本发明的spi安全通信系统进行介绍。如图1所示,本发明的spi安全通信系统包括通过spi总线进行通信的spi主机和spi从机。在本发明的实施例中,所述spi主机采用mpc564x芯片,所述spi从机采用mc9s12gn32芯片,所述spi主机和所述spi从机的波特率相同,例如均为1.5mbit/s。所述spi主机的输出端(dspi_b_sout)连接到所述spi从机的输入端(mosi),所述spi主机的输入端(dspi_b_sin)连接到所述spi从机的输出端(miso),所述spi主机的时钟端(dspi_b_sck)连接所述spi从机的时钟端(sck),所述spi主机的片选端(sdpi_b_pcs[0])连接到所述spi从机的片选端(ss),所述spi主机的复位端连接到所述spi从机的io口(pt1),这样,spi主机和spi从机可以进行相互通信,spi从机可通过所述io口复位spi主机。

spi主机将要向spi从机传输的数据打包为帧数据,帧数据包括帧头、实际要传输的数据、帧尾。本实施例中,spi主机和spi从机之间的spi传输位宽为8位,因此spi主机和spi从机间以单字节进行数据通信,如图2所示,spi主机向spi从机传输的每帧数据包括四个字节,第一个字节为帧头,最后一个字节为帧尾,中间两个字节为实际要传输的数据,两个字节间发送时间差值为字节与字节间时间间隔,两帧间发送时间差值为帧与帧间时间间隔。

如图3所示,spi主机与spi从机之间的数据传输可包括以下步骤:

s1:spi主机将要传输的数据打包为帧数据;

s2:spi主机将所述帧数据以字节为单位按顺序写入spi传输寄存器中;

s3:spi从机基于spi总线以字节为单位按顺序从spi传输寄存器中接收所述帧数据,并对spi主机的数据传输时序进行监控。

在本发明中,spi从机通过对spi主机传输数据中的字节与字节间以及帧与帧之间时间上的监控,实现对spi主机的数据传输时序的监控,达到监控整个spi传输时序的目的。传输时序包括spi字节与字节间时间间隔、spi帧与帧之间的时间间隔;监控内容包括spi字节与字节间时间间隔过长、spi帧与帧之间的时间间隔过短、spi帧与帧之间的时间间隔过长。本发明的spi从机主要通过spi中断程序和定时器中断程序来进行监测。

以下参考图4和图5对本发明的spi从机对spi主机的数据传输时序进行监控进行具体说明。

如图4和图5所示,spi从机对spi主机的数据传输时序的监控具体包括以下步骤:

s1:spi主机将要传输的数据打包为帧数据,所述帧数据包括帧头、实际要传输的数据、帧尾;

s2:spi主机将所述帧数据以字节为单位按顺序写入spi传输寄存器中;

s3:spi从机基于spi总线以字节为单位按顺序从spi传输寄存器中接收所述帧数据,并在接收帧数据的过程中对spi主机的数据传输时序进行监控,所述传输时序包括字节与字节之间的时间间隔以及帧与帧之间的时间间隔。

其中,步骤s3具体包括:

s301:spi从机在接收到字节数据后,将接收到的字节数据内容与预设的帧尾数据和预设的帧头数据进行比较,如果接收的字节数据与预设的帧尾数据相一致,则进入步骤s302,如果接收的字节数据与预设的帧头数据相一致,则进入步骤s303,否则进入步骤s306。

s302:将帧尾标志设置为1,将定时器的定时周期设定为允许的帧间最小时间间隔,记录当前状态为检测帧间超时,将定时器的触发次数清0,启动定时器,在定时器中断时进入步骤s307;如果在定时器触发之前从spi主机接收到下一个spi中断数据,则执行步骤s301。即,在接收到帧尾数据后,如果定时器没有触发而直接接收到帧头数据,此时,spi中断程序开始工作,这种情况说明两帧数据之间的传输时间间隔小于允许的帧间最小时间间隔,由此可判定帧间时间间隔过短。

允许的帧间最小时间间隔可根据系统(ecu系统)的需求来确定,例如,在一示例中,为1ms,这样,可将定时器的定时周期设置为1ms,这样,在接收到下一帧数据之前,定时器会每隔1ms触发一次。

s303:判定帧尾标志是否为1且定时器的中断次数是否为0,如果帧尾标志为1且定时器的中断次数为0,则进入步骤s304,否则进入步骤s306。

s304:判定为帧与帧之间的时间间隔过短,增加帧间过短错误计数,并进入步骤s305。

s305:判断帧间过短错误计数是否大于允许的帧间过短错误最大次数,如果大于,则复位spi主机,如果不大于,则进入步骤s306;允许的帧间过短错误最大次数可根据需要来进行设置,在一示例中可设置为7次。

s306:将帧尾标志设置为0,将定时器的定时周期设定为允许的字节间最大时间间隔,记录当前状态为检测字节间超时,启动定时器,在定时器中断时进入步骤s307;如果没有触发定时器而接收到下一个spi中断数据,则执行步骤s301。即,如果在定时器触发之前从spi主机接收到下一个spi中断数据,这表明将要接收下一个字节数据(spi实际要传输的数据),由此说明字节与字节的时间间隔是在系统允许范围内,此时,spi中断程序开始工作。

允许的字节间最大时间间隔可根据系统(ecu系统)的需求来确定,例如,在一示例中,约为200us,这样,可将定时器的定时周期设置为200us,这样,在接收到下一个字节数据之前,定时器会每隔200us触发一次。

s307:判断当前状态是否为检测字节间超时,如果是,则进入步骤s308,否则进入步骤s310。

s308:判定为字节间时间间隔过长,增加字节间超时错误计数,并进入步骤s309。

s309:判断字节间超时错误计数是否大于允许的字节间超时错误最大次数,如果大于,则复位spi主机;如果不大于,则当定时器再次触发时,执行步骤s307,当接收到下一个spi中断数据时,执行步骤s301。即,如果字节间超时错误计数没有大于允许的字节间超时错误最大次数,如果在接下来的时间内,定时器被再次触发,说明还没有收到字节数据,则继续增加定时器中断错误计数,直到接收到下一个spi中断数据后返回spi中断程序中,或者中断错误计数大于允许的字节间超时错误最大次数后复位spi主机。

允许的字节间超时错误最大次数可根据需要来进行设置,在一示例中可设置为7次。

s310:增加定时器的中断计数,进入步骤s311。

s311:判断定时器的中断计数与允许的帧间最小时间间隔的乘积是否大于允许的帧间最大时间间隔,如果大于,则进入步骤s312;如果不大于,则当定时器再次触发时,执行步骤s307,当接收到下一个spi中断数据时,执行步骤s301。即,如果定时器的中断计数与允许的帧间最小时间间隔的乘积小于等于允许的帧间最大时间间隔,如果在接下来的时间内,定时器被再次触发,则继续计算定时器的中断计数与允许的帧间最小时间间隔的乘积进行判断,如果没有再次触发定时器而接收到下一个spi中断数据,则说明帧与帧的时间间隔是在系统允许的范围内,返回spi中断程序。

允许的帧间最大时间间隔可根据系统(ecu系统)的需求来确定,例如,在一示例中,系统允许的帧间最大时间间隔约为500ms。

s312:判定为帧间时间间隔过长,增加帧间超时错误计数,并进入步骤s313。

s313:判断帧间超时错误计数是否大于允许的帧间超时错误最大次数,如果大于,则复位spi主机;如果不大于,则当定时器再次触发时,执行步骤s307,当接收到下一个spi中断数据时,执行步骤s301。即,如果帧间超时错误计数没有大于允许的帧间超时错误最大次数,如果在接下来的时间内定时器被再次触发,说明在接收到帧尾数据之后还没有收到帧头数据,则继续增加定时器中断错误计数,直到接收到下一个spi中断数据后返回spi中断程序中,或者中断错误计数大于允许的帧间超时错误最大次数后复位spi主机。

允许的帧间超时错误最大次数可根据需要来进行设置,在一示例中可设置为7次。

上述步骤s301至s306在spi中断程序中执行,上述步骤s307至s313在定时器中断程序中执行。根据上述步骤s301至s313的描述可知,本发明可在spi从机中实现对spi主机传输的数据的帧与帧间时间间隔过长、帧与帧间时间间隔过短、字节与字节间时间间隔过长的监测,各个监测如下所示:

【帧与帧间时间间隔过长监测】

在spi中断服务程序中,若当前从spi主机的spi寄存器接收的字节数据与预定帧尾数据一致,则将帧尾标志置1,表示帧尾数据接收完成,并将定时器的周期值设定为系统所允许的帧与帧间最小的时间间隔,将当前监测状态更新为检测帧间超时,最后启动定时器。这样在spi从机接收下一帧数据前,通过定时器的中断次数就可以计算出两帧间的时间间隔。在定时器中断服务程序中,若定时器中断次数与定时周期的乘积超出了系统所允许的帧与帧间最大时间间隔,则判定为帧与帧间超时,增加系统错误计数。若错误计数超出预定的最大次数,则spi从机通过io口复位spi主机。

【帧与帧间时间间隔过短监测】

在spi中断服务程序中,若当前从spi寄存器接收的字节数据与预定帧尾数据一致,则将帧尾标志置1,并将定时器的周期值设定为系统所允许的帧与帧间最小的时间间隔,将当前监测状态更新为检测帧间超时,最后启动定时器。这样在接收下一帧数据前,通过定时器的中断次数就可以计算出两帧间的时间间隔。当从spi寄存器接收的字节数据与预定帧头数据一致,并且帧尾标志为1时,若定时器中断次数为0,则说明自从帧尾启动定时器以来,没有进入过定时器中断处理程序,由此说明帧头与帧尾间的时间间隔小于定时器周期,由此判定为帧与帧间时间间隔过短,增加系统错误计数。若错误计数超出预定的最大次数,则spi从机通过io口复位spi主机。

【字节与字节时间间隔过长监测】

在spi中断服务程序中,若当前从spi寄存器接收的字节数据与预定帧头数据一致,且定时器中断次数大于1,则说明此次帧头与上次帧尾间的时间间隔是在系统允许范围内的。此时将定时器的周期值设定为系统所允许的字节与字节间最大的时间间隔,并将当前监测状态更新为检测字节间超时,最后启动定时器。这样在接收下一字节数据前,若没有进入定时器中断服务程序,则说明字节与字节间的时间间隔是在系统允许范围内的。在定时器中断服务程序中,若当前监测状态为检测字节间超时,则说明字节间时间间隔已经超出系统所允许的最大时间,判定为字节与字节间超时,增加系统错误计数。若错误计数超出预定的最大次数,则spi从机通过io口复位spi主机。

综上可知,本发明通过spi从机监控spi主机和spi从机间传输的字节与字节之间以及帧与帧之间的时间间隔,可检测出字节与字节间时间间隔过长、帧与帧之前时间间隔过短、帧与帧之间时间间隔过长等三种错误情况,既可以保证spi传输中断后可立即被发现,又可以实现对主机软件执行时序的监控,提高了主机运行的可靠性和稳定性,提高了整个电控系统的安全性。另外,本发明只使用了spi从机的一个定时器资源来进行判断,对硬件资源要求较低,有利于扩大本发明的应用范围。

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

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