掌桥专利:专业的专利平台
掌桥专利
首页

一种解决SPI主从切换交互的系统及方法

文献发布时间:2023-06-29 06:30:04


一种解决SPI主从切换交互的系统及方法

技术领域

本发明涉及通信技术领域,具体涉及一种解决SPI主从切换交互的系统及方法。

背景技术

常见的SPI协议通常指的是单SPI协议,即主设备和从设备之间的交互方式是主设备与从设备之间通过CS、CLK、MOSI、MISO连接,然后主设备主动通过发起时钟信号CLK来开启传输过程,因为是全双工传输的方式,在主设备发送数据的同时有从设备发送的数据,且每一次的传输过程都需要由主设备来主动发起,所以从设备如果有主动请求传输的需求时是无法做到主动发起时钟信号启动传输的,所以在实现握手确认和主从切换主动传输以及单帧重发上就存在很多不足之处。

目前国内也有经过改造的SPI通信协议,如专利号2020110757066公开的一种基于SPI通信的通信方法专利,通过在SPI协议的CS、CLK、MOSI、MISO四组连线之外增加了单根脉冲线的方式实现从设备主动请求传输的功能。主要原理是在从设备有数据处理并且缓存后,通过发送脉冲信号通知SPI主设备读取数据,SPI主设备在接收到从设备的接入脉冲线的请求后发起CLK读取从设备的数据,这种方式使得SPI从设备主动通知SPI主设备获取数据,减少了SPI主设备查询次数,实现了主设备被动读取信息,提高了性能。但是因为单SPI协议是全双工的工作方式,所以对于主—从单向传输、从—主单向传输、主—从双向传输的三种模式兼容无法满足需求,且无法实现传输之前的握手确认的功能,对于大包传输时,双向传输的单帧片段的重发机制也无法满足。

发明内容

有鉴于此,本发明提供一种解决SPI主从切换交互的系统及方法,可以实现主—从单向传输、从—主单向传输、主—从双向传输的三种模式兼容传输的需求,且在传输之前通过握手确认,可以适用较复杂以及可靠性要求更高的传输要求,具有传输过程可靠性和数据可靠性的优势。

为实现上述技术效果,本发明提供了一种解决SPI主从切换交互的系统,所述主设备与所述从设备之间通过SPI总线建立连接并进行数据传输,所述SPI总线包括:

CLK信号线,用于数据传输时由主设备向从设备发送串行时钟信号;

MOSI信号线,用于主设备向从设备传输数据;

MISO信号线,用于从设备向主设备传输数据;

CS信号线,用于由主设备向从设备传输从设备的使能信号;

GPIO1信号线,主设备和从设备之间的连接线,用于主设备向从设备发送主设备和从设备的双向传输需求,或者用于主设备向从设备发送主设备握手准备完成信号;

GPIO2信号线,主设备和从设备之间的连接线,用于从设备向主设备发送从设备到主设备的单向传输需求,或者用于从设备发送向主设备发送从设备握手准备完成信号。

为实现上述技术效果,本发明还提供了一种解决SPI主从切换交互的方法,该方法基于权利要求1所述的解决SPI主从切换交互的系统,包括:

根据GPIO1信号线和GPIO2信号线的状态,确定主设备和从设备之间的数据传输方式;所述数据传输方式包括:主设备向从设备单向传输、从设备向主设备单向传输以及主设备和从设备之间双向传输;

根据确定的传输方式,由主设备和从设备分别进行握手准备;主设备通过GPIO1信号线告知从设备当前主设备的握手准备完成,从设备通过GPIO2信号线告知主设备当前从设备的握手准备完成;

主设备和从设备分别收到对端的握手准备完成信号后,主设备通过MOSI信号线向从设备发送握手包,同时从设备通过MISO信号线将从设备的握手包发出至主设备;所述握手包为主设备或从设备根据对应的固定字节和握手数据组好的握手包;主设备或从设备分别收到对端的握手包后,检测握手链路是否握手成功;

若检测出握手链路握手成功,则按照相应的数据传输方式进行数据包的传输。

进一步地,检测握手链路是否握手成功,包括:

根据协议检测发送端和接收端之间的固定字节是否一致,若发送端和接收端之间的固定字节的内容一致且和固定字节的长度一致,则表示握手成功,否则,握手失败。

进一步地,握手成功后进行数据包的传输,包括:

将数据包拆分为多个片段帧的数据报文组包进行传输,所述数据报文组包包括同步头、帧头、数据以及帧尾;数据报文组包传输过程中,校验每个片段帧是否传输正确,如果出现单个片段帧校验不过时,通过GPIO1信号线或GPIO2信号线单向传输方式来告知对端当前的片段帧出错,需要对端重发;对端收到请求重发的信号之后,将当前出错的片段帧重新发送。

进一步地,校验每个片段帧是否传输正确,包括:

根据发送端的片段帧数据获得校验值和校验码,并将得到的校验码附在帧尾,发送到接收端,接收端对收到的数据和校验码进行计算,计算结果与校验值进行对比,若计算结果与校验值一致,则确定片段帧传输正确,否则,确定片段帧传输出错。

进一步地,在握手链路握手成功之后,则按照相应的数据传输方式进行数据包的传输,包括:

检测到GPIO1信号线和GPIO2信号线都为空闲状态时,确定数据传输方式为主设备向从设备单向传输;

主设备启动时钟信号,并由主设备向从设备发送数据报文组包;

主设备发送数据报文组包完成后,主设备关闭时钟信号并停止数据传输,并将GPIO1信号线和GPIO2信号线设置为空闲状态,完成主设备到从设备的单向传输。

进一步地,进行从设备到主设备的单向传输,包括:

主设备处于空闲状态且收到从设备的GPIO2信号线传递的信号时,主设备启动时钟信号,并由从设备向主设备发送数据报文组包;

主设备关闭时钟信号并停止数据传输,并将GPIO1信号线和GPIO2信号线设置为空闲状态,完成从设备到主设备的单向传输。

进一步地,进行主设备和从设备之间的双向传输,包括:

检测到主设备处于空闲状态且需要开启双向传输时,主设备启动时钟信号,主设备、从设备将数据报文组包传输给对端;

主设备数据传输完成之后,主设备关闭时钟信号并停止数据传输,并将GPIO1信号线和GPIO2信号线设置为空闲状态,完成主设备和从设备之间的双向传输。

与现有技术相比,本发明的有益效果为:

1.本发明通过在SPI协议的基础上增加了GPIO1信号线、GPIO2信号线两根连接线,即增加为CS、CLK、MOSI、MISO、GPIO1信号线、GPIO2信号线六根信号线,主设备通过GPIO1信号线告知从设备当前主设备的握手准备需求和主到从的单向或双向传输需求;从设备通过GPIO2信号线告知主设备当前从设备的握手准备完成和从设备到主设备的单向传输需求。通过该系统可以实现主—从单向传输、从—主单向传输、主—从双向传输的三种模式兼容传输的需求,且在传输之前通过握手确认,可以适用较复杂以及可靠性要求更高的传输要求,具有传输过程可靠性和数据可靠性的优势。

2.协议的使用过程中,如果一个大包数据拆分成多个传输片段的时候,出现单个片段校验不过时,此时就需要通过单向传输方式来告知对端,当前的片段出错,需要对端重发。对端收到请求重发的信号之后,只需将当前出错的片段重新发送即可,有效解决了对于大包传输时双向传输的单帧片段的重发机制无法满足的问题。

附图说明

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

图1为实施例中解决SPI主从切换交互的方法流程图;

图2为实施例中解决SPI主从切换交互的系统结构框图;

其中,1、主设备;2、从设备。

具体实施方式

下面结合附图对本申请实施例进行详细描述。

以下通过特定的具体实例说明本申请的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本申请的其他优点与功效。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。本申请还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本申请的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

实施例

参见图1、图2,一种解决SPI主从切换交互的系统,包括主设备1、从设备2,所述主设备1与从设备2之间通过SPI总线建立连接并进行数据传输;SPI总线包括:

CLK信号线,用于串行时钟信号,由主设备1控制;

MOSI信号线,用于主设备1数据输出,从设备2数据输入;

MISO信号线,用于主设备1数据输入,从设备2数据输出;

CS信号线,用于传输从设备2使能信号,由主设备1控制;

GPIO1信号线,主设备和从设备之间的连接线,用于主设备向从设备发送主设备和从设备的双向传输需求,或者用于主设备向从设备发送主设备握手准备完成信号;

GPIO2信号线,主设备和从设备之间的连接线,用于从设备向主设备发送从设备到主设备的单向传输需求,或者用于从设备发送向主设备发送从设备握手准备完成信号。

基于上述系统,解决SPI主从切换交互的方法包括如下步骤:

根据报文传输方式,由主设备1通过GPIO1信号线告知从设备2当前主设备1的握手准备和主设备1到从设备2的单向或双向传输需求,或者由从设备2通过GPIO2信号线告知主设备1当前从设备2的握手准备完成和从设备2到主设备1的单向传输需求;

主设备1通过MOSI信号线向从设备2发送握手包,同时从设备2也会通过MISO信号线将从设备2的握手包发出至主设备1;所述握手包为主设备1或从设备2根据对应的固定字节和握手数据组好握手包;主设备1、从设备2分别收到对端的握手包后,检测握手链路检测是否正常。

链路是承载数据传输的,如果检测到有固定字节长度的数据收发正常,说明链路没有断或者接触不良。本实施例中主设备1或从设备2收到对端的传输需求后,主设备1通过控制器启动时钟信号,开始握手链路的检测。本实施例中握手链路检测方法可以是:主设备通过MOSI信号线向从设备发送握手包,同时从设备通过MISO信号线将从设备的握手包发出至主设备;所述握手包为主设备或从设备根据对应的固定字节和握手数据组好的握手包;主设备1或从设备2分别收到对端的握手包后,根据协议检测发送端和接收端之间的固定字节是否一致,若发送端和接收端之间的固定字节的内容一致且和固定字节的长度一致,则表示握手成功,否则,握手失败。

当握手成功,则进行数据包的传输。

在本实施例中,通过在SPI协议的基础上增加两根连接线,即增加为CS信号线、CLK信号线、MOSI信号线、MISO信号线、GPIO1信号线、GPIO2信号线六根信号线,主设备1通过GPIO1信号线告知从设备2当前主设备1的握手准备需求和主到从的单向或双向传输需求;从设备2通过GPIO2信号线告知主设备1当前从设备2的握手准备完成和从设备2到主设备1的单向传输需求。通过该系统可以实现主—从单向传输、从—主单向传输、主—从双向传输的三种模式兼容传输的需求,且在传输之前通过握手确认,可以适用较复杂以及可靠性要求更高的传输要求,具有传输过程可靠性和数据可靠性的优势。

在使用过程中,会融合三种传输方式,三种传输方式之间不断切换,保证传输的过程正常和数据的正确无误。本实施例中,将数据包拆分为多个片段帧的数据报文组包进行传输,所述数据报文组包包括同步头、帧头、数据以及帧尾;数据报文组包传输过程中,校验每个片段帧是否传输正确,如果出现单个片段帧校验不过时,通过GPIO1信号线或GPIO2信号线单向传输方式来告知对端当前的片段帧出错,需要对端重发;对端收到请求重发的信号之后,将当前出错的片段帧重新发送即可。能够有效解决了对于大包传输时双向传输的单帧片段的重发机制无法满足的问题。

本实施例中校验每个片段帧是否传输正确,包括:

根据发送端的片段帧数据获得校验值和校验码,并将得到的校验码附在帧尾,发送到接收端,接收端对收到的数据和校验码进行计算,计算结果与校验值进行对比,若计算结果与校验值一致,则确定片段帧传输正确,否则,确定片段帧传输出错。

如步骤1中提到的,本实施例中的传输方式包括三种形式,分别为:

1、主设备1到从设备2的单向传输;

2、从设备2到主设备1的单向传输;

3、主设备1—从设备2的双向传输;

其中:

在握手成功后,GPIO1信号线、GPIO2信号线都没有传递的信号,默认为主设备1到从设备2的单向传输,传输流程包括:

握手成功后,从设备2准备好NULL包,主设备1准备好数据报文组包后开启时钟信号,启动数据传输;从设备2收到主设备1的数据报文组包后开始解析数据报文组包,获得传输的数据;主设备1发送数据报文组包完成之后,主设备1关闭时钟信号停止传输,并将状态设置为空闲状态。

当主设备1处于空闲状态时收到从设备2的GPIO2信号线传递的信号,表明当前是从设备2到主设备1的单向传输,传输流程包括:

握手成功后主设备1只准备NULL包,从设备2准备好传输的数据报文组包;

主设备1在收到GPIO2信号线传递的信号后开启时钟信号,启动数据传输,从设备2收到主设备1传输的数据报文组包并进行数据解析;

主设备1的NULL包数据字节长度发完后,主设备1关闭时钟信号,结束传输,并恢复到空闲状态。

主设备1—从设备2的双向传输流程为:

当主设备1处于空闲状态且需要开启双向传输的时,主设备1通过GPIO1信号线发起告知从设备2当前需要握手和双向传输数据;

握手成功后,从设备2准备好要传输的数据报文组包;主设备1也组包准备好要传输的数据,然后主设备1开启时钟信号,启动数据传输;

主设备1、从设备2将数据报文组包传输给对端,主设备1、从设备2收到对端的数据后开始各自做数据解析;

主设备1数据传输完成之后,主设备1关闭时钟信号,结束数据传输,并将状态设置为空闲状态。

以上,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

相关技术
  • 一种基于SPI的RGB灯控制系统及其控制方法
  • 一种交互系统及交互方法
  • 一种手势交互方法以及交互系统
  • 一种VR语音交互系统及其交互方法
  • 一种基于FPGA和射频芯片交互的自适应SPI通信系统及方法
  • 一种解决消息交互中拥塞的方法及系统
技术分类

06120116025578