基于spi的通信方法

文档序号:9929486阅读:629来源:国知局
基于spi的通信方法
【技术领域】
[0001]本发明涉及通信技术的开发,特别涉及基于SPI的通信方法。
【背景技术】
[0002]在对通信速率要求较高时,串行外设接口(SPI,Serial peripheral interface)常常被选用来作为系统级处理器间的通信方式。SPI作为一种高速的、全双工、同步的通信总线,其通信速率基本可以按照通信双方处理器的处理速度来设定。SPI采用主从工作方式,即在这种模式下通常有一个主设备和一个或多个从设备。其中,主设备控制数据传输,从设备配合主设备完成传输任务。从硬件资源上,SPI通常采用四线模式进行双向通信,在整个通信过程中信号线只能由主设备控制,从设备对通信过程没有控制作用。
[0003]但这种通信方式主要存在如下缺点:1.缺少组帧机制;2.通信过程中没有指定的数据流,缺少确认是否收到数据的应答机制;3.无任何校验,缺少控制传输差错的机制;
4.缺少对数据流的控制;5.缺少对数据链路的维护机制,无建立、维持、释放的管理机制等。
[0004]为改善上述缺点,现有的研究有的通过增加一条握手信号线用于从设备通知主设备处理结束。或者,在不增加任何握手信号线的情况下利用SPI全双工的特点实现一定的协议来完成通信。即,从设备每次接收到主设备发过来的一个字节的数据后根据既定的协议进行解析处理,并返回一个字节的数据通知当前处理的状态。该返回的单字节数据被放于发送缓冲器中,待主设备发送下一个字节的数据的同时把上一个从设备返回的字节读回去。同时,从设备根据新接收的数据进行相应处理后把下一个要返回的数据放于发送缓冲器中,待主设备来读取,如此周而复始直至一帧数据发送结束。
[0005]上述方案中,对于增加握手信号线的情况,在某些情况下受到硬件资源的制约无法增加这样的信号线,因而其受硬件资源的限制较大。
[0006]而对于上述不增加任何握手信号线的情况,其通信能够成功的前提是:在主设备开始下一个字节的传输前,从设备已处理好上一个字节数据并准备好表示处理状态的返回数据。为了使得通信成功,目前的处理方式是:主设备只能在向从设备传输前后两个字节的数据时保持足够的时间间隔,以确保从设备有充足的时间进行数据处理并准备好要返回主设备的数据。但是往往主设备很难按照要求的合适的时间间隔传输数据,要么间隔时间过大,大大降低了通信速度,要么时间间隔太小无法满足要求的时间间隔。另一方面,当从设备负载变化时,要确定一个合理的时间间隔往往是比较困难的。

【发明内容】

[0007]本发明解决的问题是提供一种基于SPI的通信方法,既不需要增加任何握手信号线,也不需要在前后数据传输间留任何的等待时间。
[0008]为了解决上述问题,本发明提供的基于SPI的通信方法,包括:主从设备初始化,其中主从设备均至少包括移位寄存器;从设备在获得主设备发送的起始数据后,在其移位寄存器中准备好预设有效数据并对起始数据进行处理;从设备在后续每一次获得主设备发送的数据后,在其移位寄存器中准备好对上一次所获得的数据处理后的返回数据并对当前所获得的数据进行处理;主设备在每一次向从设备发送数据期间,在通过由从设备的移位寄存器获得返回数据后继续下一次的数据发送。
[0009]与现有技术相比,上述方案具有以下优点:在从设备处理完主设备发送的起始数据之前,就预先准备预设有效数据来代替对起始数据处理后的真实返回数据,以使得主设备即使立刻发送下一次数据也能够收到从设备返回的有效数据。并且,利用主设备下一次的数据发送时间,给予了从设备充足处理起始数据的时间。由此,保证了主设备再下一次进行数据发送时,其可以通过从设备获得对应起始数据的真实返回数据。依此类推,使得主设备始终能通过从设备获得对应其所发送数据的真实返回数据。从而,保证了主从设备间通信过程的持续进行。并且,无需主设备在两次数据传输间设置时间间隔,既降低了通信实现的难度,也提高了整体的通信效率。
[0010]此外,由于无需再额外增加一条握手信号线用于从设备对主设备的响应,也无需再增加相应的硬件接口,因此也节省了硬件资源。
【附图说明】
[0011]图1是本发明基于SPI的通信方法的一种实施方式示意图;
[0012]图2是一种典型的基于SPI的主从设备通信结构示意图;
[0013]图3是对应图2中移位寄存器的数据传输示意图;
[0014]图4是根据本发明基于SPI的通信方法的一种实施例的主从设备数据传输实现过程不意图。
【具体实施方式】
[0015]在下面的描述中,阐述了许多具体细节以便使所属技术领域的技术人员更全面地了解本发明。但是,对于所属技术领域内的技术人员明显的是,本发明的实现可不具有这些具体细节中的一些。此外,应当理解的是,本发明并不限于所介绍的特定实施例。相反,可以考虑用下面的特征和要素的任意组合来实施本发明,而无论它们是否涉及不同的实施例。因此,下面的方面、特征、实施例和优点仅作说明之用而不应被看作是权利要求的要素或限定,除非在权利要求中明确提出。
[0016]如前述提及的,现有技术为了不增加任何握手信号线而提供的解决方案可能面临通信失败的问题。而为了使得通信成功,又不得不设置时间间隔,但显然并不能很好地解决问题。对此,本发明的发明人认为:造成通信失败的瓶颈在于从设备的处理能力无法满足“在主设备下一个字节数据传输前,准备好表示上一个字节数据处理状态的返回数据”的要求。而设置时间间隔的方式由于仍然依赖于从设备的处理能力,并不能很好地解决问题。而通过对现有这种解决方案的进一步分析后发现,只要主设备在每一次数据发送完时能够由从设备处获得有效数据,其就会继续向从设备发送数据,从而通信过程可以继续。因此,本发明的发明人提出:在从设备的处理能力无法改变的情况下,可以通过在一开始在从设备处预设一个有效数据作为响应主设备第一次数据发送的返回数据,使得主设备可以继续第二次数据发送,而利用主设备发送完第二次数据前的一段时间来处理第一次接收的数据并得到返回数据,依此类推,以此来使得通信过程持续。
[0017]参照图1所示,根据本发明基于SPI的通信方法的一种实施方式,其具体说明如下:
[0018]首先,均至少包括移位寄存器的主从设备各自进行初始化操作。例如,主设备的初始化可以包括准备起始数据。
[0019]接下来,主设备开始向从设备发送起始数据,在此期间,从设备将其移位寄存器中的初始数据返回给主设备。并且,从设备在接收到起始数据后先在其移位寄存器中准备好预设有效数据,然后开始对起始数据进行处理。可选地,从设备处理起始数据的操作和在其移位寄存器中准备预设有效数据的操作也可以是并行执行的。
[0020]而对于主设备,如上述的,当主设备发送完起始数据后,其已通过移位寄存器获得从设备返回的数据。主设备收到的该从设备返回数据是从设备移位寄存器中的初始数据,无任何实际的意义,主设备完全可以忽略。
[0021 ] 当主设备准备好后,其会开始向从设备发送第二次数据。此时,从设备已经在其移位寄存器中准备好了预设有效数据。而利用主设备发送第二次数据的时间,从设备可以处理完起始数据。在此期间,从设备将其移位寄存器中的预设有效数据返回给主设备。并且,从设备在接收到第二次数据后立即在其移位寄存器中准备好对应处理起始数据状态的真实返回数据,并可以继续开始处理所获得的第二次数据。同样地,准备对应处理起始数据状态的真实返回数据和处理第二次数据也可以是并行执行的。
[0022]而对于主设备,如上述的,当主设备发送完第二次数据后,其已通过移位寄存器获得从设备返回的预设有效数据,则当主设备获得该有效数据后,则会开始准备第三次的数据发送。
[0023]当主设备准备好后,其会开始向从设备发送第三次数据。此时,从设备已经在其移位寄存器中准备好了对应处理起始数据状态的真实返回数据。而利用主设备发送第三次数据的时间,从设备可以处理完第二次数据。在此期间,从设备将其移位寄存器中的对应处理起始数据状态的真实返回数据返回给主设备。并且,从设备在接收到第三次数据后立即在其移位寄存器中准备好对应处理第二次数据状态的真实返回数据,并可以继续开始处理所获得的第三次数据。同样地,准备对应处理第二次数据状态的真实返回数据和处理第三次数据也可以是并行执行的。
[0024]依此类推,当主设备开始向从设备发送第N次数据时,从设备已经在其移位寄存器中准备好了对应处理第N-2次数据状态的真实返回数据。从设备利用这段时间可以处理完第N-1次数据。在此期间,从设备将其移位寄存器中的对应处理第N-2次数据状态的真实返回数据返回给主设备。并且,从设备在接收到第N次数据后立即
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1