一种基于SPI的通信系统、方法、设备和储存介质与流程

文档序号:17601308发布日期:2019-05-07 20:21阅读:210来源:国知局
一种基于SPI的通信系统、方法、设备和储存介质与流程

本发明实施例涉及通信技术,尤其涉及一种基于spi的通信系统、方法、设备和储存介质。



背景技术:

串行外设接口(serialperipheralinterface,spi)是一种同步串行外设接口,该接口一般使用4条线:串行时钟线sck、主机输入/从机输出数据线miso、主机输出/从机输入数据线mosi和低电平有效的从机选择线nss。

如图1所示,常用的spi接口,需要发送数据,就将数据写入发送缓冲区,spi接口就开始发送;同时接收数据到接收缓冲区中,接收的数据可以通过中断或轮询的方式由中央处理器(centralprocessingunit,cpu)处理。

但现有技术中,数据发送的时候,如果从机接收缓冲区满,主机仍然继续发送,造成数据流的损失。数据按字节发送,没有校验机制,cpu按字节接收数据时,因频繁的中断调用而导致cpu处理能力效率低下。



技术实现要素:

本发明实施例提供一种基于spi的通信系统、方法、设备和储存介质,以实现降低cpu处理spi接口数据的负荷。

第一方面,本发明实施例提供了一种基于spi的通信系统,包括:

一个配置有通用spi接口模块的主机和至少一个配置有从机spi接口模块的从机;所述从机spi接口模块包括数据区、串行时钟引脚、主机输入/从机输出数据引脚、主机输出/从机输入数据引脚和从机选择引脚;所述数据区包括中断寄存器、主到备缓冲区和备到主缓存区,所述中断寄存器中设置有主机触发从机的第一中断位和从机触发主机的第二中断位;所述通用spi接口模块和所述从机spi接口模块对应引脚信号连接;所述主机的预设引脚连接到所述从机spi接口模块的中断寄存器,以便所述主机对所述第一中断位进行写操作和对所述第二中断位进行读操作;所述从机设置为对所述第一中断位进行读操作和对所述第二中断位进行写操作。

第二方面,本发明实施例还提供了一种基于spi的通信方法,包括:

当主机发送数据时,根据待发送数据,按照预设数据帧结构,生成数据帧;其中,所述数据帧的结构为1字节的帧长、0-60字节的净荷和2字节的crc校验值;

读取从机spi接口模块的中断寄存器;

如果所述中断寄存器的第一中断位被清除,以两字节为单位向所述从机spi接口模块发送所述数据帧;其中,前一字节为写入数据地址,后一字节为与所述写入数据地址对应的所述数据帧的数据,所述写入数据地址的第1个bit位为读写操作标识位,并标识为写操作,第2-7个bit位对应所述从机spi接口模块中的主到备缓存区的地址;

每当一个所述数据帧发送完成后,对所述从机spi接口模块的中断寄存器执行写操作,将所述中断寄存器的第一中断位置位,以触发从机产生中断,从机执行spi数据接收操作。

第三方面,本发明实施例还提供了一种基于spi的通信方法,包括:

当从机发送数据时,根据待发送数据,按照预设数据帧结构,生成数据帧;其中,所述数据帧的结构为1字节的帧长、0-60字节的净荷和2字节的crc校验值;

读取从机spi接口模块的中断寄存器;

如果所述中断寄存器的第二中断位被清除,以两字节为单位向所述从机spi接口模块发送所述数据帧;其中,前一字节为写入数据地址,后一字节为与所述写入数据地址对应的所述数据帧的数据,所述写入数据地址的第1个bit位为读写操作标识位,并标识为写操作,第2-7个bit位对应所述从机spi接口模块中的备到主缓存区的地址;

每当一个所述数据帧发送完成后,对所述从机spi接口模块的中断寄存器执行写操作,将所述中断寄存器的第二中断位置位,以触发主机产生中断,主机执行spi数据接收操作。

第四方面,本发明实施例还提供了一种设备,所述设备包括:

一个或多个处理器;

存储器,用于存储一个或多个程序;

通用spi接口模块;

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明任意实施例所提供的基于spi的通信方法。

第五方面,本发明实施例还提供了一种设备,所述设备包括:

一个或多个处理器;

存储器,用于存储一个或多个程序;

从机spi接口模块;

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明任意实施例所提供的基于spi的通信方法。

第六方面,本发明实施例还提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如本发明任意实施例所提供基于spi的通信方法。

第七方面,本发明实施例还提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如本发明任意实施例所提供基于spi的通信方法。

本发明实施例,通过优化从机的spi接口模块以及提供数据交换模块,为spi接口提供了基于帧的通信机制,通过中断寄存器,为spi接口提供了数据流的控制和数据应答机制,通过以上机制,有效的降低了cpu处理spi接口数据的负荷。

附图说明

图1为现有技术中的通用spi接口模块的结构示意图;

图2是本发明实施例中的一种基于spi的通信系统的结构示意图;

图3是本发明实施例中的从机spi接口模块201的结构示意图;

图4是本发明实施例中的地址字节的内容结构图;

图5是本发明实施例中的一种基于spi的通信方法的流程图;

图6是本发明实施例中的数据帧的结构图;

图7是本发明实施例中的另一种基于spi的通信方法的流程图;

图8是本发明实施例中的一种设备的结构示意图;

图9是本发明实施例中的另一种设备的结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

实施例

图2为本发明实施例提供的一种基于spi的通信系统的结构示意图,本实施例可适用于主机和从机基于spi接口进行通信的情况,该系统包括:

一个配置有通用spi接口模块101的主机10和至少一个配置有从机spi接口模块201的从机20。图2中,以一个主机和一个从机连接为例。

如图3所示,所述从机spi接口模块201包括数据区、串行时钟引脚clk、主机输入/从机输出数据引脚miso、主机输出/从机输入数据引脚mosi和从机选择引脚nss。这四个引脚与主机10的通用spi接口模块101的引脚一一对应连接。从机选择引脚nss为低电平有效,即主机10的通用spi接口模块101的从机选择引脚输出低电平,则该从机被选中。

所述数据区包括中断寄存器、主到备缓冲区和备到主缓存区,所述中断寄存器中设置有主机触发从机的第一中断位和从机触发主机的第二中断位;图3中,以si表示第一中断位,以mi表示第二中断位,但第一中断位和第二中断位不限于图3中配置的bit位。所述通用spi接口模块和所述从机spi接口模块对应引脚信号连接;所述主机的预设引脚连接到所述从机spi接口模块的中断寄存器,以便所述主机对所述第一中断位进行写操作和对所述第二中断位进行读操作;所述从机设置为对所述第一中断位进行读操作和对所述第二中断位进行写操作。

其中,主机10和从机20都可以对从机spi接口模块201的中断寄存器进行读写操作。对于主机10,当主机10发送数据时,读取从机spi接口模块201的中断寄存器,当中断寄存器的第一中断位被清除时,向从机spi接口模块201发送数据,以备从机20从从机spi接口模块201的主到备缓冲区拷贝数据。当主机10接收数据时,读取从机spi接口模块201的中断寄存器,如果中断寄存器的第二中断位置位,读取从机spi接口模块201的备到主缓存区数据。对于从机20,当从机20发送数据时,读取从机spi接口模块201的中断寄存器,当中断寄存器的第二中断位被清除时,向从机spi接口模块201发送数据,以备主机10从从机spi接口模块201的备到主缓冲区拷贝数据。当从机20接收数据时,读取从机spi接口模块201的中断寄存器,如果中断寄存器的第一中断位置位,读取从机spi接口模块201的主到备缓存区数据。

具体的,从机spi接口模块201是一个包含spi接口功能的ip核,如图3所示。mosi引脚接收主机到从机的信息,同时miso引脚发送从机到主机的信息。从机spi接口模块201以两个字节为处理周期,第一个字节是地址,该字节内容如图4所示。第一个bit位是wrb位,用来指示这个处理周期是写操作还是读操作。后面七个bit位是数据区的地址,地址范围从0到127。

以主机对从机spi接口模块201为例,如果wrb为1,表明是主机写操作,从机spi接口模块201会将从mosi引脚接收到的第二字节数据按第一字节的地址拷贝到主到备缓冲区中。如果wrb为0,表明是主机读操作,从机spi接口模块201按第一字节的地址从备到主缓冲区拷贝一字节数据,并通过miso引脚将该字节数据送给主机。可以理解的是,从机对从机spi接口模块进行读写操作的过程类似,只是从机与从机spi接口模块之间收发数据的路径不同。

对地址为0的中断寄存器,允许主机完成对中断寄存器的读操作或写操作。对读操作,如果mosi引脚收到第一字节为0的地址,从机spi接口模块201会在第二个字节将中断寄存器的内容通过miso引脚发送给主机。对写操作,如果从mosi引脚收到第一字节为0x80的地址,从机spi接口模块201会将从mosi引脚接收的第二个字节写到中断寄存器中。可以理解的是,从机对从机spi接口模块进行读写操作的过程类似,只是从机与从机spi接口模块之间收发寄存器的数据的路径不同。

本实施例还提供一种基于spi的通信方法。如图5所示,当主机发送数据,从机接收数据时,该方法包括:

步骤510、当主机发送数据时,根据待发送数据,按照预设数据帧结构,生成数据帧。其中,如图6所示,所述数据帧的结构为1字节的帧长、0-60字节的净荷和2字节的crc校验值。

步骤520、读取从机spi接口模块的中断寄存器。

步骤530、如果所述中断寄存器的第一中断位被清除,以两字节为单位向所述从机spi接口模块发送所述数据帧。

其中,前一字节为写入数据地址,后一字节为与所述写入数据地址对应的所述数据帧的数据,所述写入数据地址的第1个bit位为读写操作标识位,并标识为写操作,即第1个bit位为1,第2-7个bit位对应所述从机spi接口模块中的主到备缓存区的地址,即数据将要写入主到备缓存区的目标寄存器。

步骤540、每当一个所述数据帧发送完成后,对所述从机spi接口模块的中断寄存器执行写操作,将所述中断寄存器的第一中断位置位。这样设置之后,可以触发从机产生中断,进而从机执行spi数据接收操作。

步骤550、当从机接收数据时,按内存映射读取主到备缓存区的数据帧。

步骤560、当读取完所述数据帧后,进行crc校验;

步骤570、如果crc校验成功,保存读取到的数据;

步骤580、如果crc校验失败,丢弃读取到的数据;

步骤590、对所述从机spi接口模块的中断寄存器执行写操作,将所述中断寄存器的第一中断位清除。

其中,将第一中断位清除,以通知主机,从机已完成数据的接收,这样,主机下次发送数据时,读取到中断寄存器的第一中断位被清除,便可以进行数据发送了。

如图7所示,当从机发送数据,主机接收数据时,该方法包括:

步骤710、当从机发送数据时,根据待发送数据,按照预设数据帧结构,生成数据帧。其中,所述数据帧的结构为1字节的帧长、0-60字节的净荷和2字节的crc校验值。

步骤720、读取从机spi接口模块的中断寄存器。

步骤730、如果所述中断寄存器的第二中断位被清除,以两字节为单位向所述从机spi接口模块发送所述数据帧。

其中,前一字节为写入数据地址,后一字节为与所述写入数据地址对应的所述数据帧的数据,所述写入数据地址的第1个bit位为读写操作标识位,并标识为写操作,第2-7个bit位对应所述从机spi接口模块中的备到主缓存区的地址。

步骤740、每当一个所述数据帧发送完成后,对所述从机spi接口模块的中断寄存器执行写操作,将所述中断寄存器的第二中断位置位。以触发主机产生中断,主机执行spi数据接收操作。

步骤750、当主机接收数据时,读取从机spi接口模块的中断寄存器。

步骤760、如果所述中断寄存器的第二中断位置位,向所述从机spi接口模块发送一字节的预设数据地址,以读取出待接收数据帧的帧长。

其中,所述预设数据地址的第1个bit位为读写操作标识位,并标识为读操作,第2-7个bit位为所述从机spi接口模块中的备到主缓存区首寄存器地址。

步骤770、根据所述待接收数据帧的帧长,以一字节为单位,循环读取备到主缓存区余下的数据。

步骤780、当读取完所述余下的数据后,进行crc校验。

步骤790、如果crc校验成功,保存读取到的数据。

步骤7100、如果crc校验失败,丢弃读取到的数据。

步骤7110、对所述从机spi接口模块的中断寄存器执行写操作,将所述中断寄存器的第二中断位清除。

如图3所示,主机可以通过设置si对应的bit位触发给从机的中断。从机可以通过设置mi对应的bit位,并输出gpio管脚,如果主机连接该gpio管脚作为硬中断接口,则此bit位可以作为从机触发主机的中断位。

本实施例的技术方案,通过优化从机的spi接口模块以及提供数据交换模块,为spi接口提供了基于帧的通信机制,通过中断寄存器,为spi接口提供了数据流的控制和数据应答机制,通过以上机制,有效的降低了cpu处理spi接口数据的负荷。

图8为本发明实施例提供的一种设备的结构示意图,如图8所示,该设备包括处理器810、存储器820和通用spi接口模块830;设备中处理器810的数量可以是一个或多个,图8中以一个处理器810为例;设备中的处理器810、存储器820和通用spi接口模块830可以通过总线或其他方式连接,图8中以通过总线连接为例。

存储器820作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的基于spi的通信方法对应的程序指令/模块。处理器810通过运行存储在存储器820中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述应用于主机的基于spi的通信方法。

存储器820可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器820可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器820可进一步包括相对于处理器810远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。通用spi接口模块830用于主机与从机进行spi通信。

本发明实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种基于spi的通信方法,包括:

当主机发送数据时,根据待发送数据,按照预设数据帧结构,生成数据帧;其中,所述数据帧的结构为1字节的帧长、0-60字节的净荷和2字节的crc校验值;

读取从机spi接口模块的中断寄存器;

如果所述中断寄存器的第一中断位被清除,以两字节为单位向所述从机spi接口模块发送所述数据帧;其中,前一字节为写入数据地址,后一字节为与所述写入数据地址对应的所述数据帧的数据,所述写入数据地址的第1个bit位为读写操作标识位,并标识为写操作,第2-7个bit位对应所述从机spi接口模块中的主到备缓存区的地址;

每当一个所述数据帧发送完成后,对所述从机spi接口模块的中断寄存器执行写操作,将所述中断寄存器的第一中断位置位,以触发从机产生中断,从机执行spi数据接收操作。

当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的应用于主机的基于spi的通信方法中的相关操作。

通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明实施例所述的方法。

图9为本发明实施例提供的一种设备的结构示意图,如图9所示,该设备包括处理器910、存储器920和从机spi接口模块930;设备中处理器910的数量可以是一个或多个,图9中以一个处理器910为例;设备中的处理器910、存储器920和从机spi接口模块930可以通过总线或其他方式连接,图9中以通过总线连接为例。

存储器920作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的基于spi的通信方法对应的程序指令/模块。处理器910通过运行存储在存储器920中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述应用于从机的基于spi的通信方法。

存储器920可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器920可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器920可进一步包括相对于处理器910远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。从机spi接口模块930用于主机与从机进行spi通信。

本发明实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种基于spi的通信方法,包括:

当从机发送数据时,根据待发送数据,按照预设数据帧结构,生成数据帧;其中,所述数据帧的结构为1字节的帧长、0-60字节的净荷和2字节的crc校验值;

读取从机spi接口模块的中断寄存器;

如果所述中断寄存器的第二中断位被清除,以两字节为单位向所述从机spi接口模块发送所述数据帧;其中,前一字节为写入数据地址,后一字节为与所述写入数据地址对应的所述数据帧的数据,所述写入数据地址的第1个bit位为读写操作标识位,并标识为写操作,第2-7个bit位对应所述从机spi接口模块中的备到主缓存区的地址;

每当一个所述数据帧发送完成后,对所述从机spi接口模块的中断寄存器执行写操作,将所述中断寄存器的第二中断位置位,以触发主机产生中断,主机执行spi数据接收操作。

当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的应用于从机的基于spi的通信方法中的相关操作。

通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明实施例所述的方法。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

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