一种SPI主从式通讯方法技术

技术编号:31493022 阅读:13 留言:0更新日期:2021-12-18 12:30
本发明专利技术公开了一种SPI主从式通迅方法,用于SPI主机和SPI从机之间的数据交换,在SPI主机和SPI从机之间采用数据帧传送数据,数据帧包括请求帧、心跳帧、响应帧、非应答帧和空帧。SPI主机向SPI从机发送周期性数据和非周期性数据,发送周期性数据采用请求帧或非应答帧;发送非周期性数据采用请求帧,SPI从机向SPI主机发送数据采用非应答帧。数据帧使用DMA机制进行传输,可有效避免数据帧因在传输的过程中被打断而导致的数据帧不完整,从而提高数据通信效率。上述方法采用数据流的传输方式可以实现高效、可靠的双机通迅。可靠的双机通迅。可靠的双机通迅。

【技术实现步骤摘要】
一种SPI主从式通讯方法


[0001]本专利技术涉及SPI通迅总线
,具体涉及一种SPI主从式通迅方法。

技术介绍

[0002]SPI,串行外围设备接口,是一种高速的,全双工,同步的通信总线,主要应用于AD转换器、CPU与CPU之间,SPI共设置有4根信号线,用于主机与从机之间的连接,其中MISO和MOSI两根线,可以同时发送和接收数据,其通迅效率较高。不过,SPI通讯没有流控机制,发送的数据没有应答,无法确认数据已成功接收,从设备数据准备好时需要通过额外的通道通知主设备,否则容易导致从设备的数据出现断续和误码。

技术实现思路

[0003]本专利技术的目的是提供一种SPI主从式通迅方法,对SPI存在的问题进行改进,使采用SPI通迅的设备之间可以进行高效地数据传输。
[0004]为实现上述目的,本专利技术的一种SPI主从式通迅方法,一种SPI主从式通迅方法,用于SPI主机和SPI从机之间的数据交换,SPI主机和SPI从机之间采用数据流的方式传输数据,数据流由固定长度的数据帧组成,数据帧包括请求帧、心跳帧、响应帧、非应答帧和空帧;SPI主机向SPI从机发送周期性数据和非周期性数据,发送周期性数据采用请求帧或非应答帧;发送非周期性数据采用请求帧,SPI从机向SPI主机发送数据采用非应答帧。
[0005]进一步地,当周期性数据使用非应答帧从SPI主机发往SPI从机时,SPI从机接收到后不需要发送响应到SPI主机;当周期性数据采用请求帧从SPI主机发往SPI从机时,请求帧需要SPI从机收到后发送响应帧到SPI主机。
[0006]进一步地,心跳帧用于维持SPI主机和SPI从机之间的连接状态,按以下步骤执行:
[0007]起始状态为链路断开状态;
[0008]主站周期性发送心跳帧,从站收到心跳帧后,切换链路状态为连接状态,并发送心跳帧到主站;
[0009]主站收到从站的心跳帧后,切换链路状态为连接状态。
[0010]进一步地,心跳帧包含了本方的链路状态。
[0011]进一步地,SPI主机和SPI从机只有在链路为连接状态时才开始传送数据。
[0012]进一步地,SPI主机周期性地发送时间戳到SPI从机,时间戳封装在心跳帧内。
[0013]进一步地,当SPI主机的请求帧发送完成后,在设定的超时时间内,SPI主机始终没有收到SPI从机的响应帧时,请求帧产生超时,从等待响应队列移入发送队列,重新发送该请求帧。
[0014]进一步地,当多次重发超时后,SPI主机和SPI从机的链路断开。
[0015]进一步地,SPI主机处于空闲状态并且等待响应队列不为空时,SPI主机发送空帧到SPI从机,SPI从机向SPI主机发送非应答帧。
[0016]进一步地,SPI主机和SPI从机通过DMA方式传送数据。
[0017]本专利技术的有益效果是:本通迅方法采用数据流的方式进行通迅,数据按照固定的帧大小传输,各种数据混合在一起形成一个数据流,对应用层来说可以提供周期性数据和非周期性数据的有效交换,固定帧大小有效提高了数据交换的效率,链路状态和超时机制提供了数据的可靠交换。
附图说明
[0018]图1是本专利技术的结构示意图;
[0019]图2是DMA连接图;
具体实施方式
[0020]下面通过实施例结合附图对本专利技术作进一步详细说明。
[0021]如图1所示,本专利技术采用两套独立的主机,两套主机之间通过高速SPI连接,基于SPI链路实现了两套主机的CPU之间的数据库同步,将其中一个主机定义为SPI主机,另一个定义为SPI从机。SPI主机和SPI从机均采用运行RTEMS实时系统的PowerPC构建,SPI主机和SPI从机上有两个20000字空间的实时数据库,SPI主机和SPI从机采用主备的方式工作,当SPI主机工作于主模式时,SPI从机工作于备模式,当SPI主机发生故障时,系统会切换到SPI从机,SPI从机开始工作在主模式。工作于备机模式的SPI从机需要保证自身数据库和工作于主模式的SPI主机中的数据库保持同步。SPI主机负责产生时钟信号。本专利技术SPI主机和SPI从机之间按照数据流的方式来交换信息,采用固定大小的数据帧传输数据,数据帧具有固定长度的帧头信息和CRC校验码,当应用层数据长度大于数据帧的净载荷长度时,采用多个数据帧传输。数据帧包括请求、心跳帧、响应帧、非应答帧和空帧。SPI主机向SPI从机发送周期性数据和非周期性数据,SPI主机向SPI从机发送周期性数据和非周期性数据,发送周期性数据采用请求帧或非应答帧。发送非周期性数据采用请求帧,SPI从机向SPI主机发送数据采用非应答帧。当周期性数据使用非应答帧从SPI主机发往SPI从机时,SPI从机接收到后不需要发送响应到SPI主机,当周期性数据采用请求帧从SPI主机发往SPI从机时,请求帧需要SPI从机收到后发送响应帧到SPI主机。
[0022]心跳帧用于保持SPI主机和SPI从机之间的连接状态,按以下步骤执行:
[0023]起始状态为链路断开状态;SPI主机周期性发送心跳帧,SPI从机收到心跳帧后,切换链路状态为连接状态,并发送心跳帧到SPI主机;SPI主机收到从站的心跳帧后,切换链路状态为连接状态;当发送队列中有数据需要发送时,不发送心跳帧。
[0024]心跳帧包含了本方的链路状态,SPI主机和SPI从机只有在链路为连接状态时才开始传送数据。
[0025]上述心跳机制,使SPI主机可以知道SPI从机始终在线,如果SPI主机超过设置的时间没有收到SPI从机发送的数据帧,则断开连接。
[0026]SPI主机周期性地发送时间戳到SPI从机,时间戳封装在心跳帧内。时间戳的主要是对数据产生的时间进行认证,从而验证SPI主机发送的数据在产生后是否经过篡改。
[0027]当SPI主机的请求帧发送完成后,在设定的超时时间内,SPI主机始终没有收到SPI从机的响应帧时,请求帧产生超时,从等待响应队列移入发送队列,重新发送该请求帧。当多次重发超时后,SPI主机和SPI从机的链路断开。SPI主机处于空闲状态并且等待响应队列
不为空时,SPI主机发送空帧到SPI从机,SPI从机向SPI主机发送非应答帧。
[0028]如图2所示,本实施例中,SPI主机和SPI从机通过DMA方式传送数据。DMA(Direct Memory Access,直接存储器访问)将数据从一块区域复制到另一块区域,允许不同速度的硬件直接通讯,不需要依赖CPU的介入。否则,CPU需要从来源把每一块数据复制到内存中,然后把它们再次写回到新的地方,在这期间,CPU对于其他的工作来说就无法使用。DMA的实现依赖于DMA控制器,CPU对DMA控制器进行初始化,指定源地址、目标地址、数据块长度,随后触发DMA控制器启动传输操作,CPU可以继续其他的计算。数据帧使用DMA机制进行传输,可有效避免数据帧因在传输的过程中被打断而导致的数据帧不完整,从而提高数据通信效率。
[0029]本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种SPI主从式通迅方法,其特征在于,用于SPI主机和SPI从机之间的数据交换,SPI主机和SPI从机之间采用数据流的方式传输数据,数据流由固定长度的数据帧组成,数据帧包括请求帧、心跳帧、响应帧、非应答帧和空帧;SPI主机向SPI从机发送周期性数据和非周期性数据,发送周期性数据采用请求帧或非应答帧;发送非周期性数据采用请求帧,SPI从机向SPI主机发送数据采用非应答帧。2.根据权利要求1所述的一种SPI主从式通迅方法,其特征在于,当周期性数据使用非应答帧从SPI主机发往SPI从机时,SPI从机接收到后不需要发送响应到SPI主机;当周期性数据采用请求帧从SPI主机发往SPI从机时,请求帧需要SPI从机收到后发送响应帧到SPI主机。3.根据权利要求1所述的一种SPI主从式通迅方法,其特征在于,心跳帧用于维持SPI主机和SPI从机之间的连接状态,按以下步骤执行:起始状态为链路断开状态;主站周期性发送心跳帧,从站收到心跳帧后,切换链路状态为连接状态,并发送心跳帧到主站;主站收到从站的心跳帧后,切换链路状态为连接状态。4.根据权利要求3所述的...

【专利技术属性】
技术研发人员:周明周文沛郁振华李素杰刘亭黄景辉雷正山张娟戚皓
申请(专利权)人:国家管网集团东部原油储运有限公司上海蓝昱电子科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1