CN115878534A - 串行外设接口spi通信方法 - Google Patents
串行外设接口spi通信方法 Download PDFInfo
- Publication number
- CN115878534A CN115878534A CN202111125268.4A CN202111125268A CN115878534A CN 115878534 A CN115878534 A CN 115878534A CN 202111125268 A CN202111125268 A CN 202111125268A CN 115878534 A CN115878534 A CN 115878534A
- Authority
- CN
- China
- Prior art keywords
- frame
- spi
- data
- connection request
- sent
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Communication Control (AREA)
Abstract
本发明提供一种串行外设接口SPI通信方法,应用于SPI主机,包括:依据预定的周期向SPI从机持续发送定时帧;当需要向所述SPI从机发送数据时,向所述SPI从机发送连接请求帧,以使所述SPI从机与下一个定时帧同步发送应答帧;接收所述应答帧,并向所述SPI从机发送数据帧,以使所述SPI从机与下一个定时帧同步发送应答帧。本发明设定了SPI主机和从机之间的握手机制以及应答机制,能够确保数据的传输效率以及可靠性。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种双向可靠的串行外设接口SPI通信方法。
背景技术
SPI总线是一种串行外设接口,MCU基本自带SPI总线接口,低成本、易使用、高速、全双工、同步的通信总线,通常一个主设备可以连接多个从设备。并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。
在现有技术中,SPI总线通信采用主从方式进行,一般情况下,通过4根线完成通信,分别为两根数据线(主输出从输入MOSI和主输入从输出MISO)、一根时钟线(SCK)和一根片选线(CS)。其中,时钟信号SCK由主端发出,片选信号用于由主设备控制。SPI通信时,片选信号CS(一般情况下为低电平)使能从设备。主端提供时钟脉冲SCK,数据以串行方式传输,主端数据输出通过MOSI,而数据输入通过MISO,从端数据输出通过MISO,而数据输入通过MOSI,传输一位数据需要一个时钟信号SCK,这样传输一个字节数据至少需要8个时钟信号SCK。
在实现本发明的过程中,发明人发现现有技术中至少存在如下技术问题:
在现有技术中,缺少数据传输的规则,降低了数据传输的效率以及可靠性。
发明内容
本发明提供的串行外设接口SPI通信方法,在不增加硬件成本的情况下,设定了SPI主机和从机之间的握手机制以及应答机制,能够确保数据的传输效率以及可靠性。
第一方面,本发明提供一种串行外设接口SPI通信方法,应用于SPI主机,包括:
依据预定的周期向SPI从机持续发送定时帧;
当需要向所述SPI从机发送数据时,向所述SPI从机发送连接请求帧,以使所述SPI从机与下一个定时帧同步发送应答帧;
接收所述应答帧,并向所述SPI从机发送数据帧,以使所述SPI从机与下一个定时帧同步发送应答帧。
可选地,当不需要向所述SPI从机发送数据时;
检测是否收到SPI从机发送的连接请求帧,当收到所述SPI从机发送的连接请求帧时,向所述SPI从机发送应答帧,以使所述SPI从机与下一个定时帧同步发送数据帧;
接收所述SPI从机发送的数据帧,并向所述SPI从机发送应答帧。
可选地,在SPI主机或SPI从机收到正确的应答帧之前还包括:
判断当前等待时间是否超出第一预定时间;
当超出第一预定时间时,判断当前的发送次数是否超出第一预定次数;
当当前的发送次数未超出第一预定次数时,重新发送连接请求帧并将当前的发送次数进行增加;
当当前的发送次数超出第一预定次数时,结束本次的数据发送。
可选地,所述定时帧、应答帧、数据帧和连接请求帧的采用多个字段的数据格式,所述多个字段包括:
帧头字段,包括用于定位帧起始的数据;
命令号字段,包括用于表征当前帧类别的数据;
帧长度字段,包括用于表征当前帧整帧长度的数据;
数据字段,包括当前帧实际传输的数据内容;
校验值字段,包括校验数据,所述校验数据用于校验当前帧的帧头字段、命令号字段、帧长度字段和数据字段的正确性。
可选地,所述连接请求帧的数据字段,包括与当前连接请求帧对应的数据帧的长度。
可选地,所述应答帧的数据字段,包括与当前接收到的连接请求帧对应的数据帧的长度。
第二方面,本发明提供一种串行外设接口SPI通信方法,应用于SPI从机,包括:
接收SPI主机依据预定的周期持续发送的定时帧;
当收到SPI主机发送的连接请求帧时,与下一定时帧同步向所述SPI主机发送应答帧;以使所述SPI主机发送数据帧;
接收所述SPI主机发送的数据帧,并与下一定时帧同步向所述SPI主机发送应答帧。
可选地,当未接收到SPI主机发送的连接请求帧时,判断当前是否需要向SPI主机发送数据;
当需要向所述SPI主机发送数据时,与下一定时帧同步向所述SPI主机发送连接请求帧,以使所述SPI主机发送应答帧;
接收所述应答帧,并与下一定时帧同步向所述SPI主机发送数据帧,以使所述SPI主机发送应答帧。
可选地,在发送应答帧、连接请求帧或数据帧之前,将所述应答帧、连接请求帧或数据帧写入缓存,以使缓存中的应答帧、连接请求帧或数据帧与下一定时帧同步向SPI主机发送。
可选地,在收到应答帧、连接请求帧或数据帧之后,对所述应答帧、连接请求帧或数据帧进行校验,以确定所述应答帧、连接请求帧或数据帧的合法性。
本发明的技术方案中,使用现有SPI四线总线,无需其他多余线即可完成主从双向传输的优点。本发明的技术方案简单、全部可以通过软件实现,便于在各种处理器中移植,可以应用于多个MCU协同工作场景,该方法与MCU型号并无联系,只要求该MCU带有SPI接口或者可以模拟SPI接口即可实现,传输速率取决于MCU的SPI接口分频,可支持最高速率可靠传输,可以广泛使用多MCU处理器的***设计中。在本发明提供的技术方案中,通过连接请求帧,形成了完整的握手机制,实现了软件握手机制,避免使用硬件握手浪费IO资源,通过应答帧形成了应答确认机制,能够及时确认数据的收到情况。
附图说明
图1为本发明一实施例串行外设接口SPI通信方法的主机向从机发送数据的流程图;
图2为本发明另一实施例串行外设接口SPI通信方法的从机向主机发送数据的流程图;
图3为本发明一实施例串行外设接口SPI通信方法的数据重传的流程图;
图4为本发明一实施例串行外设接口SPI通信方法的主机向从机发送数据的示例性过程;
图5为本发明另一实施例串行外设接口SPI通信方法的从机向主机发送数据的示例性过程;
图6为本发明一实施例串行外设接口SPI通信方法的数据重传的示例性过程;
图7为本发明一实施例串行外设接口SPI通信方法的主机向从机发送数据的流程图;
图8为本发明另一实施例串行外设接口SPI通信方法的从机向主机发送数据的流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种串行外设接口SPI通信方法,应用于SPI主机,如图1所示,包括:
依据预定的周期向SPI从机持续发送定时帧;在一些实施例中,SPI主机依据预定的周期进行定时帧的发送,定时帧是用于维持链路心跳的通信帧,例如,每10ms向SPI从机发送一次定时帧,从而使SPI从机能够每隔10ms就能够向SPI主机发送一次通信帧。
当需要向所述SPI从机发送数据时,向所述SPI从机发送连接请求帧,以使所述SPI从机与下一个定时帧同步发送应答帧;在一些实施例中,连接请求帧用于实现通信双方的握手机制,例如,SPI主机发送的连接请求帧可以携带后续将要发送的数据帧的长度。
接收所述应答帧,并向所述SPI从机发送数据帧,以使所述SPI从机与下一个定时帧同步发送应答帧。在一些实施例中,数据帧携带有SPI主机需要向SPI从机发送的数据内容,而应答帧则用于完成应答机制。在本步骤中,通过应答帧对连接请求帧和数据帧进行应答,使SPI主机能够及时确认SPI从机的对应信息的接收结果。
本实施例的技术方案中,使用现有SPI四线总线,无需其他多余线即可完成主从双向传输的优点。本实施例的技术方案简单、全部可以通过软件实现,便于在各种处理器中移植,可以应用于多个MCU协同工作场景,该方法与MCU型号并无联系,只要求该MCU带有SPI接口或者可以模拟SPI接口即可实现,传输速率取决于MCU的SPI接口分频,可支持最高速率可靠传输,可以广泛使用多MCU处理器的***设计中。在本实施例提供的技术方案中,通过连接请求帧,形成了完整的握手机制,实现了软件握手机制,避免使用硬件握手浪费IO资源,通过应答帧形成了应答确认机制,能够及时确认数据的收到情况。
作为一种可选的实施方式,如图2所示,当不需要向所述SPI从机发送数据时;在一些实施例中,SPI从机在需要向SPI主机数据发送时,会在缓存中首先写入连接请求帧,以便于在下一个定时帧到来时同步向SPI主机进行发送。但是,在下一个定时帧到来之前,如果SPI主机发送了连接请求帧,则SPI从机需要针对SPI主机的连接请求帧生成应答帧,并在下一个定时帧到来时发送应答帧,此时,SPI从机需要放弃已写入缓存的连接请求帧。本领域技术人员应当能够理解,当不需要向所述SPI从机发送数据时,表明直到下一个定时帧,SPI主机都未向SPI从机发送连接请求帧。
检测是否收到SPI从机发送的连接请求帧,当收到所述SPI从机发送的连接请求帧时,向所述SPI从机发送应答帧,以使所述SPI从机与下一个定时帧同步发送数据帧;在一些实施例中,当SPI主机收到SPI从机发送的连接请求帧时,表明当前SPI从机需要向SPI主机进行数据发送。SPI主机针对该连接请求帧会发送应答帧,当SPI从机收到应答帧之后,即可确定SPI主机已经收到了连接请求帧并通过了核验,此时,SPI从机可以向SPI主机发送数据。
接收所述SPI从机发送的数据帧,并向所述SPI从机发送应答帧。在一些实施例中,当SPI从机收到应答帧后,会将数据帧写入到缓存中,并在下一个定时帧到来时同步将数据帧发送给SPI主机。在SPI主机收到数据帧后,向SPI从机发送应答帧,使SPI从机确定SPI主机已经收到数据帧。
在本实施方式中,描述了SPI主机从SPI从机接收数据的过程,但是,由于SPI主机的优先级更高一些,因此,SPI主机从SPI从机接收数据的前提是当前的SPI主机没有向SPI从机发送数据。在本实施方式中,描述了SPI从机向SPI主机主动发送数据的过程,使SPI从机具备了向SPI主机主动发送数据的能力,改变了现有SPI从机不能主动发送数据的情况。
作为一种可选的实施方式,如图3所示,在SPI主机或SPI从机收到正确的应答帧之前还包括:
判断当前等待时间是否超出第一预定时间;在一些实施例中,由于应答帧有可能会出现丢失或者验证不通过的情况,当出现应答帧丢失或者验证不通过的情况时,是不能够向SPI从机发送数据的;当收到SPI从机发送的应答帧且验证通过时,才能够向SPI从机发送数据。
当超出第一预定时间时,判断当前的发送次数是否超出第一预定次数;在一些实施例中,握手的过程中通常会进行多次握手,因此,在发送连接请求帧之后,等待第一预定时间,例如等待3s,仍未收到应答帧时,即判定本次的握手失败。此时,如果连接请求帧发送的次数未达到第一预定次数,例如3次,则可以重新发送连接请求帧;如果达到了第一预定次数,则结束本次的数据发送。
当当前的发送次数未超出第一预定次数时,重新发送连接请求帧并将当前的发送次数进行增加;在一些实施例中,当发送次数未超出预定次数时,允许再次进行连接的尝试,即允许重新发送连接请求帧,应当注意到,每次发送连接请求帧,都需要对连接请求帧的发送次数进行计数。当连接成功或者结束数据发送时,将计数清零。
当当前的发送次数超出第一预定次数时,结束本次的数据发送。在一些实施例中,由于多次尝试仍未能够握手成功时,表明当前链路可能存在故障,不具备数据发送条件,因此,在本步骤中,结束本次的数据发送。
在本实施方式中,提供了一种数据重传机制,确保了在链路无故障情况下的连接成功率,以及链路有故障时及时发现链路故障。
作为一种可选的实施方式,所述定时帧、应答帧、数据帧和连接请求帧的采用多个字段的数据格式,所述多个字段包括:
帧头字段,包括用于定位帧起始的数据;
命令号字段,包括用于表征当前帧类别的数据;
帧长度字段,包括用于表征当前帧整帧长度的数据;
数据字段,包括当前帧实际传输的数据内容;
校验值字段,包括校验数据,所述校验数据用于校验当前帧的帧头字段、命令号字段、帧长度字段和数据字段的正确性。
在一些实施例中,连接请求帧是用于SPI主机和SPI从机进行握手的通信帧,其各个字段的内容可以如下表所示:
定时帧用于维持链路心跳,其各个字段的内容可以如下表所示:
字段说明 | 内容 | 字节数 |
帧头 | 0x7E | 1 |
命令号 | 0x02 | 1 |
帧长度 | 0x0007 | 2 |
数据 | 0x0000 | 2 |
校验值 | 0x6A | 1 |
应答帧用于完成链路的应答机制,其各个字段的内容可以如下表所示:
字段说明 | 内容 | 字节数 |
帧头 | 0x7E | 1 |
命令号 | 0x03 | 1 |
帧长度 | 0x0007 | 2 |
数据 | 数据帧长度 | 2 |
校验值 | CRC-8 | 1 |
数据帧用于承载要发送的数据内容,其各个字段的内容可以如下表所示:
作为一种可选的实施方式,所述连接请求帧的数据字段,包括与当前连接请求帧对应的数据帧的长度。在一些实施例中,由于连接请求帧的发送是用于请求对端资源,以实现数据的正常发送,因此,在本实施方式中,将对应的数据帧长度发送至对端,能够使对端获得有效的数据信息。
作为一种可选的实施方式,所述应答帧的数据字段,包括与当前接收到的连接请求帧对应的数据帧的长度。在一些实施例中,由于应答帧是通知连接请求帧或者数据帧的发送方校验通过的通信帧,因此,将应答帧中携带数据帧的长度,以使数据的发送方确认数据信息。
如图4所示,示例性的展示了一种SPI主机向SPI从机发送数据的具体过程,具体如下:
SPI主机MCU1以10ms的周期向SPI从机MCU2发送定时帧;
SPI主机MCU1向SPI从机MCU2发出连接请求帧;
在发出连接请求帧后,SPI从机收到连接请求帧后,采用CRC-8进行数据校验,校验通过后,SPI从机在缓存中写入对应于连接请求帧的应答帧;其中CRC-8多项式为G(X)=X8+X2+X1+1;
在发送定时帧的周期达到时,SPI主机发出定时帧
当SPI从机收到定时帧同时把应答帧传送到SPI主机;
SPI主机收到应答帧后,采用CRC-8进行数据校验,校验通过后立即向SPI从机发送数据帧;
SPI从机收到数据帧后,采用CRC-8进行数据校验,校验通过后组装应答帧写入发送缓冲区,当收到定时帧同时把应答帧传送到SPI主机;
SPI主机收到应答帧后,采用CRC-8进行数据校验,校验通过后确认数据帧发送完成,结束主动发送过程;
SPI主机MCU1继续维持以10ms的周期向SPI从机MCU2发送定时帧。
如图5所示,示例性的展示了一种SPI从机向SPI主机发送数据的具体过程,具体如下:
SPI从机持续接收SPI主机以10ms为周期发送的定时帧;
SPI从机将连接请求帧写入发送缓冲区,等待定时帧到来,当定时帧到来之前,未收到SPI主机发送的连接请求帧时,一旦到来自动向SPI主机向发出连接请求帧,其中请求帧里面有即将要发送的数据帧长度信息;
SPI主机收到连接请求帧后,采用CRC-8进行数据校验回复应答帧;
SPI从机收到应答帧后,采用CRC-8进行数据校验,校验通过后组装数据帧写入发送缓冲区,并等待下一个定时帧;
当SPI从机收到定时帧时,同步将缓冲区中的数据帧发送给SPI从机;
SPI主机收到数据帧后,采用CRC-8进行数据校验,结束数据接收。
或者,SPI主机在应答帧发送完后,还可以立即发送同数据帧长度的空白字节,字节为FF;
当SPI从机收到空白字节FF同时把数据帧传送到SPI主机。
这种方式中,SPI从机可以不等待下一个定时帧,而在接收空白字节的同时将数据帧发送给SPI从机。
如图6所示,示例性的展示了一种数据重传的具体过程,具体如下:
SPI主机MCU1以10ms的周期向SPI从机MCU2发送定时帧;
SPI主机向SPI从机发出连接请求帧;
SPI从机收到连接请求帧后,采用CRC-8进行数据校验,校验通过后组装应答帧写入发送缓冲区,当收到定时帧同时把应答帧传送到SPI主机,其中CRC-8多项式为G(X)=X8+X2+X1+1;
当应答帧丢失或损坏时,SPI主机没有收到从机的应答帧,这时SPI主机继续等待,当3s后仍然未收到,或者数据帧有校验不过,重发刚才帧,重复重传3次仍然未收到应答帧,则结束本次传输;
主机收到应答帧,则执行数据传输过程。
第二方面,本发明提供一种串行外设接口SPI通信方法,应用于SPI从机,如图7所示,包括:
接收SPI主机依据预定的周期持续发送的定时帧;在一些实施例中,SPI主机依据预定的周期进行定时帧的发送,定时帧是用于维持链路心跳的通信帧,例如,每10ms向SPI从机发送一次定时帧,从而使SPI从机能够每隔10ms就能够向SPI主机发送一次通信帧。
当收到SPI主机发送的连接请求帧时,与下一定时帧同步向所述SPI主机发送应答帧;以使所述SPI主机发送数据帧;在一些实施例中,连接请求帧用于实现通信双方的握手机制,例如,SPI主机发送的连接请求帧可以携带后续将要发送的数据帧的长度。
接收所述SPI主机发送的数据帧,并与下一定时帧同步向所述SPI主机发送应答帧。在一些实施例中,数据帧携带有SPI从机需要向SPI主机发送的数据内容,而应答帧则用于完成应答机制。在本步骤中,通过应答帧对连接请求帧和数据帧进行应答,使SPI从机能够及时确认SPI主机的对应信息的接收结果。
本实施例的技术方案中,使用现有SPI四线总线,无需其他多余线即可完成主从双向传输的优点。本实施例的技术方案简单、全部可以通过软件实现,便于在各种处理器中移植,可以应用于多个MCU协同工作场景,该方法与MCU型号并无联系,只要求该MCU带有SPI接口或者可以模拟SPI接口即可实现,传输速率取决于MCU的SPI接口分频,可支持最高速率可靠传输,可以广泛使用多MCU处理器的***设计中。在本实施例提供的技术方案中,通过连接请求帧,形成了完整的握手机制,实现了软件握手机制,避免使用硬件握手浪费IO资源,通过应答帧形成了应答确认机制,能够及时确认数据的收到情况。
作为一种可选的实施方式,如图8所示,当未接收到SPI主机发送的连接请求帧时,判断当前是否需要向SPI主机发送数据;在一些实施例中,SPI从机在需要向SPI主机数据发送时,会在缓存中首先写入连接请求帧,以便于在下一个定时帧到来时同步向SPI主机进行发送。但是,在下一个定时帧到来之前,如果SPI主机发送了连接请求帧,则SPI从机需要针对SPI主机的连接请求帧生成应答帧,并在下一个定时帧到来时发送应答帧,此时,SPI从机需要放弃已写入缓存的连接请求帧。本领域技术人员应当能够理解,当不需要向所述SPI从机发送数据时,表明直到下一个定时帧,SPI主机都未向SPI从机发送连接请求帧。
当需要向所述SPI主机发送数据时,与下一定时帧同步向所述SPI主机发送连接请求帧,以使所述SPI主机发送应答帧;在一些实施例中,当SPI主机收到SPI从机发送的连接请求帧时,表明当前SPI从机需要向SPI主机进行数据发送。SPI主机针对该连接请求帧会发送应答帧,当SPI从机收到应答帧之后,即可确定SPI主机已经收到了连接请求帧并通过了核验,此时,SPI从机可以向SPI主机发送数据。
接收所述应答帧,并与下一定时帧同步向所述SPI主机发送数据帧,以使所述SPI主机发送应答帧。在一些实施例中,当SPI从机收到应答帧后,会将数据帧写入到缓存中,并在下一个定时帧到来时同步将数据帧发送给SPI主机。在SPI主机收到数据帧后,向SPI从机发送应答帧,使SPI从机确定SPI主机已经收到数据帧。
在本实施方式中,描述了SPI主机从SPI从机接收数据的过程,但是,由于SPI主机的优先级更高一些,因此,SPI主机从SPI从机接收数据的前提是当前的SPI主机没有向SPI从机发送数据。在本实施方式中,描述了SPI从机向SPI主机主动发送数据的过程,使SPI从机具备了向SPI主机主动发送数据的能力,改变了现有SPI从机不能主动发送数据的情况。
作为一种可选的实施方式,在发送应答帧、连接请求帧或数据帧之前,将所述应答帧、连接请求帧或数据帧写入缓存,以使缓存中的应答帧、连接请求帧或数据帧与下一定时帧同步向SPI主机发送。在一些实施例中,由于SPI从机并不能主动向SPI主机发送通信帧,因此,在SPI从机需要发送应答帧、连接请求帧或数据帧时,首先将应答帧、连接请求帧或数据帧写入到缓存中,然后等待定时帧,当SPI主机发送定时帧时,SPI从机可以同时向SPI主机发送通信帧,即可以向SPI主机发送缓存中的应答帧、连接请求帧或数据帧。
作为一种可选的实施方式,在收到应答帧、连接请求帧或数据帧之后,对所述应答帧、连接请求帧或数据帧进行校验,以确定所述应答帧、连接请求帧或数据帧的合法性。在一些实施例中,对于应答帧、连接请求帧或数据帧的校验,可以采用校验值字段与帧头、命令号、帧长度、数据的CRC-8的值进行比较,从而校验帧数据正确性,CRC-8多项式为G(X)=X8+X2+X1+1,其中X为二进制数位的值.例如十六进制0x1A,将多项式转化为二进制序列,由G(X)=
X8+X2+X1+1可知二进制有9位,第8位、第2位、第1位和第0位分别为1,则序列为100000111,原来要计算的数据为1 1010,多项式的最高次为8,则在数据的后面加上8位0,数据变为1 1010 0000 0000,然后使用模2除法除以除数100000111,最终得到的除不尽的余数,变为我们要求的CRC-8结果,最后除不尽的余数为0x46,所以0x1A按多项式G(X)=X8+X2+X1+1计算得到的CRC-8码为0x46。
本领域普通技术人员可以理解实现上述方法实施例中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (10)
1.一种串行外设接口SPI通信方法,其特征在于,应用于SPI主机,包括:
依据预定的周期向SPI从机持续发送定时帧;
当需要向所述SPI从机发送数据时,向所述SPI从机发送连接请求帧,以使所述SPI从机与下一个定时帧同步发送应答帧;
接收所述应答帧,并向所述SPI从机发送数据帧,以使所述SPI从机与下一个定时帧同步发送应答帧。
2.根据权利要求1所述串行外设接口SPI通信方法,其特征在于,当不需要向所述SPI从机发送数据时;
检测是否收到SPI从机发送的连接请求帧,当收到所述SPI从机发送的连接请求帧时,向所述SPI从机发送应答帧,以使所述SPI从机与下一个定时帧同步发送数据帧;
接收所述SPI从机发送的数据帧,并向所述SPI从机发送应答帧。
3.根据权利要求2所述串行外设接口SPI通信方法,其特征在于,在SPI主机或SPI从机收到正确的应答帧之前还包括:
判断当前等待时间是否超出第一预定时间;
当超出第一预定时间时,判断当前的发送次数是否超出第一预定次数;
当当前的发送次数未超出第一预定次数时,重新发送连接请求帧并将当前的发送次数进行增加;
当当前的发送次数超出第一预定次数时,结束本次的数据发送。
4.根据权利要求1所述串行外设接口SPI通信方法,其特征在于,所述定时帧、应答帧、数据帧和连接请求帧的采用多个字段的数据格式,所述多个字段包括:
帧头字段,包括用于定位帧起始的数据;
命令号字段,包括用于表征当前帧类别的数据;
帧长度字段,包括用于表征当前帧整帧长度的数据;
数据字段,包括当前帧实际传输的数据内容;
校验值字段,包括校验数据,所述校验数据用于校验当前帧的帧头字段、命令号字段、帧长度字段和数据字段的正确性。
5.根据权利要求4所述串行外设接口SPI通信方法,其特征在于,所述连接请求帧的数据字段,包括与当前连接请求帧对应的数据帧的长度。
6.根据权利要求4所述串行外设接口SPI通信方法,其特征在于,所述应答帧的数据字段,包括与当前接收到的连接请求帧对应的数据帧的长度。
7.一种串行外设接口SPI通信方法,其特征在于,应用于SPI从机,包括:
接收SPI主机依据预定的周期持续发送的定时帧;
当收到SPI主机发送的连接请求帧时,与下一定时帧同步向所述SPI主机发送应答帧;以使所述SPI主机发送数据帧;
接收所述SPI主机发送的数据帧,并与下一定时帧同步向所述SPI主机发送应答帧。
8.根据权利要求7所述串行外设接口SPI通信方法,其特征在于,
当未接收到SPI主机发送的连接请求帧时,判断当前是否需要向SPI主机发送数据;
当需要向所述SPI主机发送数据时,与下一定时帧同步向所述SPI主机发送连接请求帧,以使所述SPI主机发送应答帧;
接收所述应答帧,并与下一定时帧同步向所述SPI主机发送数据帧,以使所述SPI主机发送应答帧。
9.根据权利要求8所述串行外设接口SPI通信方法,其特征在于,在发送应答帧、连接请求帧或数据帧之前,将所述应答帧、连接请求帧或数据帧写入缓存,以使缓存中的应答帧、连接请求帧或数据帧与下一定时帧同步向SPI主机发送。
10.根据权利要求8所述串行外设接口SPI通信方法,其特征在于,在收到应答帧、连接请求帧或数据帧之后,对所述应答帧、连接请求帧或数据帧进行校验,以确定所述应答帧、连接请求帧或数据帧的合法性。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111125268.4A CN115878534A (zh) | 2021-09-23 | 2021-09-23 | 串行外设接口spi通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111125268.4A CN115878534A (zh) | 2021-09-23 | 2021-09-23 | 串行外设接口spi通信方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115878534A true CN115878534A (zh) | 2023-03-31 |
Family
ID=85762427
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111125268.4A Pending CN115878534A (zh) | 2021-09-23 | 2021-09-23 | 串行外设接口spi通信方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115878534A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116450555A (zh) * | 2023-06-16 | 2023-07-18 | 瀚博创芯半导体(上海)有限公司 | 通过串行外设接口通信的方法及装置 |
-
2021
- 2021-09-23 CN CN202111125268.4A patent/CN115878534A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116450555A (zh) * | 2023-06-16 | 2023-07-18 | 瀚博创芯半导体(上海)有限公司 | 通过串行外设接口通信的方法及装置 |
CN116450555B (zh) * | 2023-06-16 | 2023-08-22 | 瀚博创芯半导体(上海)有限公司 | 通过串行外设接口通信的方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100366029C (zh) | 通信控制器、主机端控制器、通信设备、通信***和方法 | |
CN101645766B (zh) | 实现数据包重发的方法、装置及*** | |
CN105786753A (zh) | 一种i2c总线上的主从设备间的传输数据的方法及设备 | |
CN110990312B (zh) | 一种用于随钻探测中的芯片级数据通信方法 | |
CN108809791B (zh) | 一种多设备环形结构通信方法及*** | |
CN107832250A (zh) | 一种基于spi的主从通讯时序方法及可靠传输方法 | |
CN109688555B (zh) | 一种信号数据的实时采集与通信***及方法 | |
CN115878534A (zh) | 串行外设接口spi通信方法 | |
CN103368703B (zh) | 数据包重传方法、数据包接收方法及装置 | |
CN103650401A (zh) | 一种移动终端内部通信方法 | |
CN105307282B (zh) | 一种防止多用户终端接入冲突的方法及装置 | |
JPH0424702A (ja) | 制御システム | |
CN116647300A (zh) | 一种基于spi的动态长度数据通信方法及数据通信*** | |
CN112506840B (zh) | 一种多对多spi总线切换方法 | |
JPH10126463A (ja) | 全二重直列伝送の完全性検査方法 | |
JPH02100538A (ja) | ローカルエリアネットワークのデータ通信方法 | |
JP2011151769A (ja) | データ通信システム及びデータ通信方法 | |
CN114598566A (zh) | 一种基于spi总线的通信***及方法 | |
CN111090606A (zh) | 一种拓扑型线路架构的***及总线切换方法 | |
CN111490919A (zh) | 一种主从机***、设备终端及其通信校验方法 | |
JP3245552B2 (ja) | 転送制御システム | |
JP2644558B2 (ja) | 通信装置の試験装置および試験方法 | |
CN117294721A (zh) | 数据传输方法、装置及终端 | |
CN117857249A (zh) | 基于Modbus协议的数据传输方法 | |
CN116055009A (zh) | 数据传输方法及相关装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |