CN115941382A - 一种spi通信的流控方法、装置、终端设备及存储介质 - Google Patents
一种spi通信的流控方法、装置、终端设备及存储介质 Download PDFInfo
- Publication number
- CN115941382A CN115941382A CN202211407623.1A CN202211407623A CN115941382A CN 115941382 A CN115941382 A CN 115941382A CN 202211407623 A CN202211407623 A CN 202211407623A CN 115941382 A CN115941382 A CN 115941382A
- Authority
- CN
- China
- Prior art keywords
- frame
- data
- slave device
- master device
- data frame
- 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
- 238000004891 communication Methods 0.000 title claims abstract description 87
- 238000000034 method Methods 0.000 title claims abstract description 48
- 230000004044 response Effects 0.000 claims abstract description 82
- 230000005540 biological transmission Effects 0.000 claims abstract description 75
- 238000004590 computer program Methods 0.000 claims description 18
- 230000000977 initiatory effect Effects 0.000 claims description 9
- 208000032370 Secondary transmission Diseases 0.000 claims description 7
- 238000001514 detection method Methods 0.000 claims description 2
- 230000007246 mechanism Effects 0.000 abstract description 7
- 238000010586 diagram Methods 0.000 description 12
- 230000006872 improvement Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 235000015429 Mirabilis expansa Nutrition 0.000 description 3
- 244000294411 Mirabilis expansa Species 0.000 description 3
- 235000013536 miso Nutrition 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
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接口相关联的两个GPIO引脚;所述方法包括:主设备和从设备之间通过通信通道进行数据传输;当从设备向主设备发送数据时,将第二GPIO引脚设置为第一状态,向主设备发送中断信号;主设备接收到中断信号后发起传输,接收从所述从设备发送的数据;当从设备检测到所述第一GPIO引脚从高电平变为低电平时,判定数据帧传输完成。本发明使用较少的GPIO引脚,节省了芯片硬件资源,主从设备可以随时发送数据,实现数据应答与重传机制,保证了数据的实时性和可靠性,减少了CPU的额外开销。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种SPI通信的流控方法、装置、终端设备及存储介质。
背景技术
根据SPI通信原理,在每个Clock周期内,SPI设备都会发送并接收一个bit大小的数据(不管是主设备还是从设备),相当于该设备有一个bit大小的数据被交换了。由于时钟是由主设备提供的,因此从设备无法主动发送数据。从设备若想随时发送数据,主设备必须使用轮询方式不断发起传输,而大部分时间总线上都是无效数据,导致主设备产生额外的CPU开销。在主设备和从设备没有固定帧长时,从设备不知道收取数据是否完成。此外,SPI没有指定的流控制,没有应答机制确认是否接收到数据,或者使用了较多的GPIO引脚来实现流控与应答,成本较高。
发明内容
本发明所要解决的技术问题在于,提供一种SPI通信的流控方法、装置、终端设备及存储介质,使用较少的GPIO引脚,节省了芯片硬件资源,主从设备可以随时发送数据,实现数据应答与重传机制,保证了数据的实时性和可靠性,减少了CPU的额外开销。
为了实现上述目的,本发明实施例提供了一种SPI通信的流控方法,应用于SPI通信的流控***,所述流控***包括主设备和至少一个从设备,所述主设备和所述从设备之间的通信通道包括一个SPI接口和与所述SPI接口相关联的两个GPIO引脚;其中,第一GPIO引脚为所述从设备的输入,与所述SPI接口中的CS引脚连接;第二GPIO引脚为所述从设备的输出,与所述主设备连接,所述SPI通信的流控方法包括:
所述主设备和所述从设备之间通过所述通信通道进行数据传输;
当所述从设备向所述主设备发送数据时,将所述第二GPIO引脚设置为第一状态,向所述主设备发送中断信号;
所述主设备接收到所述中断信号后发起传输,接收从所述从设备发送的数据;
当所述从设备检测到所述第一GPIO引脚从高电平变为低电平时,判定数据帧传输完成。
作为上述方案的改进,所述从设备向所述主设备发送数据时,所述从设备的接口传输长度设为最大帧长,所述主设备的接口传输长度设为最小帧长。
作为上述方案的改进,所述当从设备检测到所述第一GPIO引脚从高电平变为低电平时,判定数据帧传输完成,之后还包括:
判断从所述主设备返回的数据帧是否有效;
若有效,则判断从所述主设备返回的数据帧的类别;若为请求帧,则将所述主设备返回的数据帧放入所述从设备的接收缓冲区,生成所述请求帧的应答帧,放入所述从设备的发送缓冲区;若为应答帧,则设置应答标志位,进行下一帧数据的传输;
若无效,则直接进入应答等待,收到应答则将已发送的数据帧从所述从设备的发送缓冲区中移除,进行下一帧数据的传输。
作为上述方案的改进,所述主设备发起传输时,循环检测所述主设备的发送缓冲区;
当所述主设备的发送缓冲区有待发送数据帧时,以预设帧长取出所述待发送数据帧,调用所述SPI接口向所述从设备发送所述待发送数据帧。
作为上述方案的改进,所述调用所述SPI接口向所述从设备发送所述待发送数据帧,之后还包括:
所述主设备接收从所述从设备返回的数据帧,并判断返回的数据帧是否有效;
若有效,则对有效数据帧进行处理,处理完成后进入应答等待;
若无效,则直接进入应答等待;
应答等待超时则发起重传,收到应答则将所述待发送数据帧从所述主设备的发送缓冲区中移除,进行下一帧数据的传输。
作为上述方案的改进,所述对有效数据帧进行处理,具体包括:
判断所述有效数据帧的长度是否不大于所述预设帧长;
若否,则发起二次传输,对剩余未接收的数据进行接收;
若是,则判断所述有效数据帧的类别;
若所述有效数据帧为请求帧,则将所述有效数据帧放入所述主设备的接收缓冲区,生成所述请求帧的应答帧,放入所述主设备的发送缓冲区;
若所述有效数据帧为应答帧,则设置应答标志位,进行下一帧数据的传输。
作为上述方案的改进,所述有效数据帧的长度为帧头长度、数据长度和校验区长度的总和。
本发明实施例还提供了一种SPI通信的流控装置,应用于SPI通信的流控***,所述流控***包括主设备和至少一个从设备,所述主设备和所述从设备之间的通信通道包括一个SPI接口和与所述SPI接口相关联的两个GPIO引脚;其中,第一GPIO引脚为所述从设备的输入,与所述SPI接口中的CS引脚连接;第二GPIO引脚为所述从设备的输出,与所述主设备连接,所述SPI通信的流控装置包括:
传输模块,用于所述主设备和所述从设备之间通过所述通信通道进行数据传输;
中断模块,用于当所述从设备向所述主设备发送数据时,将所述第二GPIO引脚设置为第一状态,向所述主设备发送中断信号;
接收模块,用于所述主设备接收到所述中断信号后发起传输,接收从所述从设备发送的数据;
检测模块,用于当所述从设备检测到所述第一GPIO引脚从高电平变为低电平时,判定数据帧传输完成。
本发明实施例还提供了一种终端设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述的SPI通信的流控方法。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行上述任一项所述的SPI通信的流控方法。
相对于现有技术,本发明实施例提供的一种SPI通信的流控方法、装置、终端设备及存储介质的有益效果在于:通过在主设备和从设备之间的通信通道增加两个与SPI接口相关联的GPIO引脚,其中,第一GPIO引脚为从设备的输入,与SPI接口中的CS引脚连接;第二GPIO引脚为从设备的输出,与主设备连接。主设备和从设备之间通过所述通信通道进行数据传输;当所述从设备向所述主设备发送数据时,将所述第二GPIO引脚设置为第一状态,向所述主设备发送中断信号;所述主设备接收到所述中断信号后发起传输,接收从所述从设备发送的数据;当所述从设备检测到所述第一GPIO引脚从高电平变为低电平时,判定数据帧传输完成。本发明实施例使用较少的GPIO引脚,节省了芯片硬件资源,主从设备可以随时发送数据,实现数据应答与重传机制,保证了数据的实时性和可靠性,减少了CPU的额外开销。
附图说明
图1是本发明提供的一种SPI通信的流控方法的一个优选实施例的流程示意图;
图2是本发明提供的一种SPI通信的流控***的一个优选实施例的结构示意图;
图3是本发明提供的一种SPI通信的流控方法中从设备发起传输的流程示意图;
图4是本发明提供的一种SPI通信的流控方法中主设备收到从设备传输请求后的流程示意图;
图5是本发明提供的一种SPI通信的流控方法中主设备发起传输的流程示意图;
图6是本发明提供的一种SPI通信的流控方法中主设备处理有效数据帧的流程示意图;
图7是本发明提供的一种SPI通信的流控方法中有效数据帧的结构示意图;
图8是本发明提供的一种SPI通信的流控装置的一个优选实施例的结构示意图;
图9是本发明提供的一种终端设备的一个优选实施例的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,图1是本发明提供的一种SPI通信的流控方法的一个优选实施例的流程示意图。所述SPI通信的流控方法应用于SPI通信的流控***,所述流控***包括主设备和至少一个从设备,所述主设备和所述从设备之间的通信通道包括一个SPI接口和与所述SPI接口相关联的两个GPIO引脚;其中,第一GPIO引脚为所述从设备的输入,与所述SPI接口中的CS引脚连接;第二GPIO引脚为所述从设备的输出,与所述主设备连接,所述SPI通信的流控方法包括:
S1,所述主设备和所述从设备之间通过所述通信通道进行数据传输;
S2,当所述从设备向所述主设备发送数据时,将所述第二GPIO引脚设置为第一状态,向所述主设备发送中断信号;
S3,所述主设备接收到所述中断信号后发起传输,接收从所述从设备发送的数据;
S4,当所述从设备检测到所述第一GPIO引脚从高电平变为低电平时,判定数据帧传输完成。
具体的,请参阅图2,图2是本发明提供的一种SPI通信的流控***的一个优选实施例的结构示意图。本发明实施例中SPI通信的流控***包括主设备和至少一个从设备,主设备和从设备之间的通信通道包括一个SPI接口和与SPI接口相关联的两个GPIO引脚。其中,第一GPIO引脚为从设备的输入,与SPI接口中的CS引脚连接。第二GPIO引脚为从设备的输出,与主设备连接。SPI接口包括MOSI、MISO、SCLK和CS信号线。其中,SCLK、MOSI、CS信号均由主设备控制产生,SCLK是时钟信号,用以同步数据。MOSI是主设备输出从设备输入信号,主设备通过此信号线传输数据给从设备。CS为片选信号,用以选定从设备,低电平有效。而MISO的信号由从设备产生,主设备通过该信号线读取从设备的数据。MOSI与MISO的信号只在CS为低电平的时候才有效,在SCLK的每个时钟周期MOSI和MISO传输一位数据。本发明实施例中主设备和从设备之间通过通信通道进行数据传输。当从设备主动向主设备发送数据时,将第二GPIO引脚设置为第一状态,向主设备发送中断信号。其中,第一状态指GPIO2从高电平(默认状态为高电平)设为低电平再设为高电平,因为主设备使用的是下降沿触发中断。主设备接收到中断信号后发起传输,接收从从设备发送的数据。若主设备没有发起传输,从设备会一直阻塞。当从设备检测到第一GPIO引脚从高电平变为低电平时,判定数据帧传输完成。
需要说明的是,在SPI通信中,SPI主设备以从设备支持的频率通过SCLK线给到SPI从设备,这意味着从设备是无法主动向主设备发送数据的,只能主设备轮询向从设备发或者从设备主动通过一个IO口来告知主设备数据到达。因此,本发明实施例在主设备和从设备之间的通信通道增加两个与SPI接口相关联的GPIO引脚。
本发明实施例使用较少的GPIO引脚实现SPI通信的流控,主设备使用了一个GPIO引脚,从设备使用了两个GPIO引脚,硬件结构简单,节省了芯片硬件资源。从设备传输使用最大帧长,主设备通过检测帧头中的数据长度来判断是否进行二次传输。因此主从设备无需使用固定帧长进行收发数据,传输帧长由每次实际需要传输的数据长度来确定,避免了额外的时钟开销。从设备使用GPIO中断通知主设备开启传输,从设备可随时主动发送数据,主设备无需循环接收数据,降低了CPU资源占用。主从设备可随时收发数据并在发送时会对接收到的数据进行处理,实现了有效数据的全双工传输,极大提高了SPI的通信速率。主从设备均进行了软件应答重传机制,保证了每次数据收发的正确性。
在另一个优选实施例中,所述从设备向所述主设备发送数据时,所述从设备的接口传输长度设为最大帧长,所述主设备的接口传输长度设为最小帧长。
具体的,由于主设备可能会发起多次调用,而从设备不知道每次会传输多长,因此需要将从设备的接口传输长度设为最大帧长,主设备的接口传输长度设为最小帧长。
在又一个优选实施例中,所述当从设备检测到所述第一GPIO引脚从高电平变为低电平时,判定数据帧传输完成,之后还包括:
判断从所述主设备返回的数据帧是否有效;
若有效,则判断从所述主设备返回的数据帧的类别;若为请求帧,则将所述主设备返回的数据帧放入所述从设备的接收缓冲区,生成所述请求帧的应答帧,放入所述从设备的发送缓冲区;若为应答帧,则设置应答标志位,进行下一帧数据的传输;
若无效,则直接进入应答等待,收到应答则将已发送的数据帧从所述从设备的发送缓冲区中移除,进行下一帧数据的传输。
具体的,请参阅图3和图4,图3是本发明提供的一种SPI通信的流控方法中从设备发起传输的流程示意图,图4是本发明提供的一种SPI通信的流控方法中主设备收到从设备传输请求后的流程示意图。当从设备主动向主设备发送数据时,从从设备的发送缓冲区中取出待发送数据帧,将第二GPIO引脚设置为第一状态,向主设备发送中断信号,通知主设备发起传输。主设备接收到中断信号后发起传输,接收从从设备发送的数据。从设备在接收状态中,当从设备检测到第一GPIO引脚从高电平变为低电平时,判定数据帧传输完成,退出接收状态,进行接收到数据的处理。判断从主设备返回的数据帧是否有效。若有效,则判断从主设备返回的数据帧的类别。若为请求帧,则将主设备返回的数据帧放入从设备的接收缓冲区,生成请求帧的应答帧,放入从设备的发送缓冲区。若为应答帧,则设置应答标志位,进行下一帧数据的传输。若无效,则直接进入应答等待,收到应答则将已发送的数据帧从从设备的发送缓冲区中移除,进行下一帧数据的传输。
需要说明的是,和主设备处理收到的有效数据帧不同,从设备无需进行二次传输,通过GPIO1的状态即可判断整个数据帧传输是否完成。
本发明实施例使用较少的GPIO引脚,节省了芯片硬件资源,主从设备可以随时发送数据,实现数据应答与重传机制,保证了数据的实时性和可靠性,减少了CPU的额外开销。
在又一个优选实施例中,所述主设备发起传输时,循环检测所述主设备的发送缓冲区;
当所述主设备的发送缓冲区有待发送数据帧时,以预设帧长取出所述待发送数据帧,调用所述SPI接口向所述从设备发送所述待发送数据帧。
具体的,请参阅图5,图5是本发明提供的一种SPI通信的流控方法中主设备发起传输的流程示意图。主设备发起传输时,发送任务不断循环检测主设备的发送缓冲区。当主设备的发送缓冲区有待发送数据帧时,以预设帧长sLen取出待发送数据帧,调用SPI接口向从设备发送待发送数据帧。
在又一个优选实施例中,所述调用所述SPI接口向所述从设备发送所述待发送数据帧,之后还包括:
所述主设备接收从所述从设备返回的数据帧,并判断返回的数据帧是否有效;
若有效,则对有效数据帧进行处理,处理完成后进入应答等待;
若无效,则直接进入应答等待;
应答等待超时则发起重传,收到应答则将所述待发送数据帧从所述主设备的发送缓冲区中移除,进行下一帧数据的传输。
具体的,请参阅图6,图6是本发明提供的一种SPI通信的流控方法中主设备处理有效数据帧的流程示意图。当主设备的发送缓冲区有待发送数据帧时,以预设帧长取出待发送数据帧,调用SPI接口向从设备发送待发送数据帧之后,主设备接收从从设备返回的数据帧,并判断返回的数据帧是否有效。若从设备返回的数据帧有效,则对有效数据帧进行处理,处理完成后进入应答等待。若从设备返回的数据帧无效,则直接进入应答等待。应答等待超时则发起重传,收到应答则将待发送数据帧从主设备的发送缓冲区中移除,进行下一帧数据的传输。
在又一个优选实施例中,所述对有效数据帧进行处理,具体包括:
判断所述有效数据帧的长度是否不大于所述预设帧长;
若否,则发起二次传输,对剩余未接收的数据进行接收;
若是,则判断所述有效数据帧的类别;
若所述有效数据帧为请求帧,则将所述有效数据帧放入所述主设备的接收缓冲区,生成所述请求帧的应答帧,放入所述主设备的发送缓冲区;
若所述有效数据帧为应答帧,则设置应答标志位,进行下一帧数据的传输。
具体的,主设备在对有效数据帧进行处理时,从接收到的数据的帧头中获取该帧数据的长度rLen,判断有效数据帧的长度rLen是否不大于预设帧长sLen。若有效数据帧的长度rLen大于预设帧长sLen,则说明从设备发送的数据帧还有剩余未接收的,需要再次调用SPI接口发起二次传输,完成剩余数据的接收。若有效数据帧的长度rLen不大于预设帧长sLen,则说明从设备发送的数据帧本次调用已经全部接收完,进一步通过帧头信息判断有效数据帧的类别。若有效数据帧为请求帧,则将有效数据帧放入主设备的接收缓冲区,生成请求帧的应答帧,放入主设备的发送缓冲区。若有效数据帧为应答帧,则表明主设备上一次的请求帧收到了应答,可以进行下一帧数据的传输。
作为优选方案,所述有效数据帧的长度为帧头长度、数据长度和校验区长度的总和。
具体的,请参阅图7,图7是本发明提供的一种SPI通信的流控方法中有效数据帧的结构示意图。本发明实施例中有效数据帧包括帧头、数据和校验区。其中,帧头包括标志符、序列号和总长度。标志符标识本帧数据类,可以是主设备发送给从设备的请求帧、从设备发送给主设备的请求帧、主设备发送给从设备的应答帧、从设备发送给主设备的应答帧。序列号,每次发送请求帧都有唯一的序列号,对应的应答帧与其序列号保持一致。总长度=帧头长度+数据长度+校验区长度。
相应地,本发明还提供一种SPI通信的流控装置,能够实现上述实施例中的SPI通信的流控方法的所有流程。
请参阅图8,图8是本发明提供的一种SPI通信的流控装置的一个优选实施例的结构示意图。所述SPI通信的流控装置应用于SPI通信的流控***,所述流控***包括主设备和至少一个从设备,所述主设备和所述从设备之间的通信通道包括一个SPI接口和与所述SPI接口相关联的两个GPIO引脚;其中,第一GPIO引脚为所述从设备的输入,与所述SPI接口中的CS引脚连接;第二GPIO引脚为所述从设备的输出,与所述主设备连接,所述SPI通信的流控装置包括:
传输模块801,用于所述主设备和所述从设备之间通过所述通信通道进行数据传输;
中断模块802,用于当所述从设备向所述主设备发送数据时,将所述第二GPIO引脚设置为第一状态,向所述主设备发送中断信号;
接收模块803,用于所述主设备接收到所述中断信号后发起传输,接收从所述从设备发送的数据;
检测模块804,用于当所述从设备检测到所述第一GPIO引脚从高电平变为低电平时,判定数据帧传输完成。
优选地,所述从设备向所述主设备发送数据时,所述从设备的接口传输长度设为最大帧长,所述主设备的接口传输长度设为最小帧长。
优选地,所述当从设备检测到所述第一GPIO引脚从高电平变为低电平时,判定数据帧传输完成,之后还包括:
判断从所述主设备返回的数据帧是否有效;
若有效,则判断从所述主设备返回的数据帧的类别;若为请求帧,则将所述主设备返回的数据帧放入所述从设备的接收缓冲区,生成所述请求帧的应答帧,放入所述从设备的发送缓冲区;若为应答帧,则设置应答标志位,进行下一帧数据的传输;
若无效,则直接进入应答等待,收到应答则将已发送的数据帧从所述从设备的发送缓冲区中移除,进行下一帧数据的传输。
优选地,所述主设备发起传输时,循环检测所述主设备的发送缓冲区;
当所述主设备的发送缓冲区有待发送数据帧时,以预设帧长取出所述待发送数据帧,调用所述SPI接口向所述从设备发送所述待发送数据帧。
优选地,所述调用所述SPI接口向所述从设备发送所述待发送数据帧,之后还包括:
所述主设备接收从所述从设备返回的数据帧,并判断返回的数据帧是否有效;
若有效,则对有效数据帧进行处理,处理完成后进入应答等待;
若无效,则直接进入应答等待;
应答等待超时则发起重传,收到应答则将所述待发送数据帧从所述主设备的发送缓冲区中移除,进行下一帧数据的传输。
优选地,所述对有效数据帧进行处理,具体包括:
判断所述有效数据帧的长度是否不大于所述预设帧长;
若否,则发起二次传输,对剩余未接收的数据进行接收;
若是,则判断所述有效数据帧的类别;
若所述有效数据帧为请求帧,则将所述有效数据帧放入所述主设备的接收缓冲区,生成所述请求帧的应答帧,放入所述主设备的发送缓冲区;
若所述有效数据帧为应答帧,则设置应答标志位,进行下一帧数据的传输。
优选地,所述有效数据帧的长度为帧头长度、数据长度和校验区长度的总和。
在具体实施当中,本发明实施例提供的SPI通信的流控装置的工作原理、控制流程及实现的技术效果,与上述实施例中的SPI通信的流控方法对应相同,在此不再赘述。
请参阅图9,图9是本发明提供的一种终端设备的一个优选实施例的结构示意图。所述终端设备包括处理器901、存储器902以及存储在所述存储器902中且被配置为由所述处理器901执行的计算机程序,所述处理器901执行所述计算机程序时实现上述任一实施例所述的SPI通信的流控方法。
优选地,所述计算机程序可以被分割成一个或多个模块/单元(如计算机程序1、计算机程序2、……),所述一个或者多个模块/单元被存储在所述存储器902中,并由所述处理器901执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述终端设备中的执行过程。
所述处理器901可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,通用处理器可以是微处理器,或者所述处理器901也可以是任何常规的处理器,所述处理器901是所述终端设备的控制中心,利用各种接口和线路连接所述终端设备的各个部分。
所述存储器902主要包括程序存储区和数据存储区,其中,程序存储区可存储操作***、至少一个功能所需的应用程序等,数据存储区可存储相关数据等。此外,所述存储器902可以是高速随机存取存储器,还可以是非易失性存储器,例如插接式硬盘,智能存储卡(Smart Media Card,SMC)、安全数字(Secure Digital,SD)卡和闪存卡(Flash Card)等,或所述存储器902也可以是其他易失性固态存储器件。
需要说明的是,上述终端设备可包括,但不仅限于,处理器、存储器,本领域技术人员可以理解,图9的结构示意图仅仅是上述终端设备的示例,并不构成对上述终端设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行上述任一实施例所述的SPI通信的流控方法。
本发明实施例提供了一种SPI通信的流控方法、装置、终端设备及存储介质,通过在主设备和从设备之间的通信通道增加两个与SPI接口相关联的GPIO引脚,其中,第一GPIO引脚为从设备的输入,与SPI接口中的CS引脚连接;第二GPIO引脚为从设备的输出,与主设备连接。主设备和从设备之间通过所述通信通道进行数据传输;当所述从设备向所述主设备发送数据时,将所述第二GPIO引脚设置为第一状态,向所述主设备发送中断信号;所述主设备接收到所述中断信号后发起传输,接收从所述从设备发送的数据;当所述从设备检测到所述第一GPIO引脚从高电平变为低电平时,判定数据帧传输完成。本发明实施例使用较少的GPIO引脚,节省了芯片硬件资源,主从设备可以随时发送数据,实现数据应答与重传机制,保证了数据的实时性和可靠性,减少了CPU的额外开销。
需说明的是,以上所描述的***实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的***实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
Claims (10)
1.一种SPI通信的流控方法,其特征在于,应用于SPI通信的流控***,所述流控***包括主设备和至少一个从设备,所述主设备和所述从设备之间的通信通道包括一个SPI接口和与所述SPI接口相关联的两个GPIO引脚;其中,第一GPIO引脚为所述从设备的输入,与所述SPI接口中的CS引脚连接;第二GPIO引脚为所述从设备的输出,与所述主设备连接,所述SPI通信的流控方法包括:
所述主设备和所述从设备之间通过所述通信通道进行数据传输;
当所述从设备向所述主设备发送数据时,将所述第二GPIO引脚设置为第一状态,向所述主设备发送中断信号;
所述主设备接收到所述中断信号后发起传输,接收从所述从设备发送的数据;
当所述从设备检测到所述第一GPIO引脚从高电平变为低电平时,判定数据帧传输完成。
2.如权利要求1所述的SPI通信的流控方法,其特征在于,所述从设备向所述主设备发送数据时,所述从设备的接口传输长度设为最大帧长,所述主设备的接口传输长度设为最小帧长。
3.如权利要求2所述的SPI通信的流控方法,其特征在于,所述当从设备检测到所述第一GPIO引脚从高电平变为低电平时,判定数据帧传输完成,之后还包括:
判断从所述主设备返回的数据帧是否有效;
若有效,则判断从所述主设备返回的数据帧的类别;若为请求帧,则将所述主设备返回的数据帧放入所述从设备的接收缓冲区,生成所述请求帧的应答帧,放入所述从设备的发送缓冲区;若为应答帧,则设置应答标志位,进行下一帧数据的传输;
若无效,则直接进入应答等待,收到应答则将已发送的数据帧从所述从设备的发送缓冲区中移除,进行下一帧数据的传输。
4.如权利要求3所述的SPI通信的流控方法,其特征在于,所述主设备发起传输时,循环检测所述主设备的发送缓冲区;
当所述主设备的发送缓冲区有待发送数据帧时,以预设帧长取出所述待发送数据帧,调用所述SPI接口向所述从设备发送所述待发送数据帧。
5.如权利要求4所述的SPI通信的流控方法,其特征在于,所述调用所述SPI接口向所述从设备发送所述待发送数据帧,之后还包括:
所述主设备接收从所述从设备返回的数据帧,并判断返回的数据帧是否有效;
若有效,则对有效数据帧进行处理,处理完成后进入应答等待;
若无效,则直接进入应答等待;
应答等待超时则发起重传,收到应答则将所述待发送数据帧从所述主设备的发送缓冲区中移除,进行下一帧数据的传输。
6.如权利要求5所述的SPI通信的流控方法,其特征在于,所述对有效数据帧进行处理,具体包括:
判断所述有效数据帧的长度是否不大于所述预设帧长;
若否,则发起二次传输,对剩余未接收的数据进行接收;
若是,则判断所述有效数据帧的类别;
若所述有效数据帧为请求帧,则将所述有效数据帧放入所述主设备的接收缓冲区,生成所述请求帧的应答帧,放入所述主设备的发送缓冲区;
若所述有效数据帧为应答帧,则设置应答标志位,进行下一帧数据的传输。
7.如权利要求6所述的SPI通信的流控方法,其特征在于,所述有效数据帧的长度为帧头长度、数据长度和校验区长度的总和。
8.一种SPI通信的流控装置,其特征在于,应用于SPI通信的流控***,所述流控***包括主设备和至少一个从设备,所述主设备和所述从设备之间的通信通道包括一个SPI接口和与所述SPI接口相关联的两个GPIO引脚;其中,第一GPIO引脚为所述从设备的输入,与所述SPI接口中的CS引脚连接;第二GPIO引脚为所述从设备的输出,与所述主设备连接,所述SPI通信的流控装置包括:
传输模块,用于所述主设备和所述从设备之间通过所述通信通道进行数据传输;
中断模块,用于当所述从设备向所述主设备发送数据时,将所述第二GPIO引脚设置为第一状态,向所述主设备发送中断信号;
接收模块,用于所述主设备接收到所述中断信号后发起传输,接收从所述从设备发送的数据;
检测模块,用于当所述从设备检测到所述第一GPIO引脚从高电平变为低电平时,判定数据帧传输完成。
9.一种终端设备,其特征在于,包括处理器和存储器,所述存储器中存储有计算机程序,且所述计算机程序被配置为由所述处理器执行,所述处理器执行所述计算机程序时实现如权利要求1至7中任意一项所述的SPI通信的流控方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,其中,所述计算机可读存储介质所在设备执行所述计算机程序时,实现如权利要求1至7中任意一项所述的SPI通信的流控方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211407623.1A CN115941382A (zh) | 2022-11-10 | 2022-11-10 | 一种spi通信的流控方法、装置、终端设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211407623.1A CN115941382A (zh) | 2022-11-10 | 2022-11-10 | 一种spi通信的流控方法、装置、终端设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115941382A true CN115941382A (zh) | 2023-04-07 |
Family
ID=86653106
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211407623.1A Pending CN115941382A (zh) | 2022-11-10 | 2022-11-10 | 一种spi通信的流控方法、装置、终端设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115941382A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116795744A (zh) * | 2023-08-15 | 2023-09-22 | 三峡智控科技有限公司 | 一种ls2k1000la与mcu通讯的控制方法 |
CN118227403A (zh) * | 2024-05-23 | 2024-06-21 | 上海泰矽微电子有限公司 | 一种spi通讯冲突检测电路及方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101272405A (zh) * | 2007-03-22 | 2008-09-24 | 北京创毅视讯科技有限公司 | 一种接收设备、mmis接口及数据交互方法 |
CN102819512A (zh) * | 2012-06-28 | 2012-12-12 | 惠州市德赛西威汽车电子有限公司 | 一种基于spi的全双工通信装置及其方法 |
CN103192545A (zh) * | 2013-03-29 | 2013-07-10 | 天津大学 | 基于以太网的液压机运动控制器以及控制***和控制方法 |
CN103744825A (zh) * | 2013-12-31 | 2014-04-23 | 北京中宇新泰科技发展有限公司 | 一种扩展兼容spi接口双向实时通讯方法 |
CN110865954A (zh) * | 2019-11-25 | 2020-03-06 | 南京科远智慧科技集团股份有限公司 | 基于dma的spi设备间通信自动界定可变长帧结束的方法 |
-
2022
- 2022-11-10 CN CN202211407623.1A patent/CN115941382A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101272405A (zh) * | 2007-03-22 | 2008-09-24 | 北京创毅视讯科技有限公司 | 一种接收设备、mmis接口及数据交互方法 |
CN102819512A (zh) * | 2012-06-28 | 2012-12-12 | 惠州市德赛西威汽车电子有限公司 | 一种基于spi的全双工通信装置及其方法 |
CN103192545A (zh) * | 2013-03-29 | 2013-07-10 | 天津大学 | 基于以太网的液压机运动控制器以及控制***和控制方法 |
CN103744825A (zh) * | 2013-12-31 | 2014-04-23 | 北京中宇新泰科技发展有限公司 | 一种扩展兼容spi接口双向实时通讯方法 |
CN110865954A (zh) * | 2019-11-25 | 2020-03-06 | 南京科远智慧科技集团股份有限公司 | 基于dma的spi设备间通信自动界定可变长帧结束的方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116795744A (zh) * | 2023-08-15 | 2023-09-22 | 三峡智控科技有限公司 | 一种ls2k1000la与mcu通讯的控制方法 |
CN116795744B (zh) * | 2023-08-15 | 2023-12-19 | 三峡智控科技有限公司 | 一种ls2k1000la与mcu通讯的控制方法 |
CN118227403A (zh) * | 2024-05-23 | 2024-06-21 | 上海泰矽微电子有限公司 | 一种spi通讯冲突检测电路及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115941382A (zh) | 一种spi通信的流控方法、装置、终端设备及存储介质 | |
CN108628684B (zh) | 一种基于dpdk的报文处理方法及计算机设备 | |
CN110880998B (zh) | 一种基于可编程器件的报文传输方法及装置 | |
US11736149B2 (en) | Data transmission method for Bluetooth card reader and electronic device | |
CN116150054B (zh) | 一种基于pcie的中断信息处理方法 | |
CN114826542B (zh) | 基于异步串行通信的数据传输方法、装置、设备及介质 | |
CN103650401A (zh) | 一种移动终端内部通信方法 | |
CN112422485A (zh) | 一种传输控制协议的通信方法及装置 | |
CN111427806A (zh) | 一种双核amp***共用串口的方法、存储介质及智能终端 | |
CN111639043A (zh) | 一种通信装置 | |
CN107454021B (zh) | 一种通信方法及装置 | |
CN104850517A (zh) | 一种dma传输报文数据的方法及装置 | |
US6766384B2 (en) | Method for avoiding data collision in half-duplex mode using direct memory access logic | |
CN112363962B (zh) | 数据通信方法、***、电子设备及计算机存储介质 | |
CN111124987B (zh) | 一种基于pcie的数据传输控制***和方法 | |
CN114760219B (zh) | 多终端的通信方法、装置、电子设备及存储介质 | |
JP4220430B2 (ja) | 二重化ネットワーク制御システム | |
CN117992186A (zh) | 中断处理方法、装置、设备、存储介质及车辆 | |
JPS5811146B2 (ja) | ポ−リングエミュレ−タを用いた通信方式 | |
CN116521597A (zh) | 基于串口复用的数据分发方法、装置、计算机设备及介质 | |
JP2502850B2 (ja) | Scsiシステムのコミュニケ―ション方法 | |
CN117857474A (zh) | 一种总线控制帧类型消息传输方法、装置、设备及介质 | |
CN118250244A (zh) | 网络通道的切换方法及交换机 | |
CN115688642A (zh) | 一种用于单通道数据交叉传输电路的设计方法 | |
CN116208573A (zh) | 数据处理方法、装置、电子设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |