CN116450561A - 一种Slave端主动输出数据的SPI交互方法、装置及电子设备 - Google Patents

一种Slave端主动输出数据的SPI交互方法、装置及电子设备 Download PDF

Info

Publication number
CN116450561A
CN116450561A CN202310304900.4A CN202310304900A CN116450561A CN 116450561 A CN116450561 A CN 116450561A CN 202310304900 A CN202310304900 A CN 202310304900A CN 116450561 A CN116450561 A CN 116450561A
Authority
CN
China
Prior art keywords
master
data
interrupt signal
spi
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
Application number
CN202310304900.4A
Other languages
English (en)
Inventor
王晓玲
支春阳
梁旗
杨双
郭磊
崔钊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Fareast Huaqiang Navigation Positioning Co ltd
Original Assignee
Shenzhen Fareast Huaqiang Navigation Positioning Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Fareast Huaqiang Navigation Positioning Co ltd filed Critical Shenzhen Fareast Huaqiang Navigation Positioning Co ltd
Priority to CN202310304900.4A priority Critical patent/CN116450561A/zh
Publication of CN116450561A publication Critical patent/CN116450561A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Communication Control (AREA)

Abstract

本申请公开了一种Slave端主动输出数据的SPI交互方法、装置及电子设备,本申请属于电子信息技术领域。该方法包括:若存在数据传输触发事件,则通过所述信号线向所述Master端发出第一中断信号;接收所述Master端反馈的第一指令,将待发送数据组帧通过所述SPI通道的MISO通道发出,并通过所述信号线向所述Master端发出第二中断信号,供所述Master端根据所述第二中断信号反馈第二指令,以从所述SPI通道的MISO通道接收帧数据,并对帧数据进行解析。本方案可以使Slave端主动上报大量业务信息数据,提高了数据传输效率,使交互过程具有极高的鲁棒性。并且减少了硬件占用资源,节省成本,具有极高的工程实用价值。

Description

一种Slave端主动输出数据的SPI交互方法、装置及电子设备
技术领域
本申请属于电子信息技术领域,具体涉及一种Slave端主动输出数据的SPI交互方法、装置及电子设备。
背景技术
随着科技水平的迅速发展,在主从设备数据交互总线领域,SPI(SerialPeripheral Interface,串行外设接口)协议由于速率高、时钟同步等特性,得到了广泛应用。
SPI分为Master端和Slave端,通信使能和时钟信号都由Master端来控制,所以SPI通信均由Master端发起,对于许多ASIC(Application Specific Integrated Circuit,专用集成电路)来说,都遵循相对标准的SPI读写通信协议,由外部单元来实施数据写入和结果回读动作。但是SPI总线的优势往往体现在Master端读写过程中,对于传统主从设备的交互,由于从设备往往只返回简单的数据,严格遵循标准SPI时序,因此Slave端不需要主动上报数据。
但随着半导体工艺的发展与工程实际需求的提升,越来越多的ASIC在内部集成了处理器单元,构成了SoC(System on Chip,芯片上系统),来进行更为复杂的业务处理。在这种场景下,作为SPI的Slave端,存在更多的主动输出信息的需求,然而由于使能信号和时钟信号的控制权在Master端,原有交互方式无法支持Slave端的主动信息上报。为此,如何设计一种支持Slave端自由主动高效输出业务信息的机制以及方法是本领域亟待解决的问题。
发明内容
本申请实施例的提供一种Slave端主动输出数据的SPI交互方法、装置及电子设备,解决现有技术中Slave端无法主动上报信息的问题,本方案可以使Slave端主动上报大量业务信息数据,提高了数据传输效率,使交互过程具有极高的鲁棒性。并且减少了硬件占用资源,节省成本,具有极高的工程实用价值。
第一方面,本申请实施例提供了一种Slave端主动输出数据的SPI交互方法,所述Slave端与Master端通过SPI通道连接,所述Slave端与所述Master端还通过信号线连接;所述方法由所述Slave端执行,所述方法包括:
若存在数据传输触发事件,则通过所述信号线向所述Master端发出第一中断信号;
接收所述Master端反馈的第一指令,将待发送数据组帧通过所述SPI通道的MISO通道发出,并通过所述信号线向所述Master端发出第二中断信号,供所述Master端根据所述第二中断信号反馈第二指令,以从所述SPI通道的MISO通道接收帧数据,并对帧数据进行解析。
进一步的,在通过所述信号线向所述Master端发出第二中断信号之后,所述方法还包括:
若接收到所述Master端发出数据帧重传指令,则将待发送数据重新组帧,通过所述SPI通道的MISO通道发出,并通过所述信号线再次向所述Master端发出第二中断信号。
进一步的,在通过所述信号线向所述Master端发出第一中断信号之后,所述方法还包括:
若在第一等待时长内未接收到所述Master端反馈的第一指令,则重新通过所述信号线向所述Master端发出第一中断信号;
在通过所述信号线向所述Master端发出第二中断信号之后,所述方法还包括:
若在第二等待时长内未接收到所述Master端反馈的第二指令,则重新通过所述信号线向所述Master端发出第二中断信号。
进一步的,在发出第一中断信号或者发出第二中断信号之后,所述方法还包括:
供所述Master端基于所述第一中断信号或者所述第二中断信号履行静默承诺。
进一步的,在发出第一中断信号之后,所述方法还包括:
若所述Master端未履行静默承诺,则标记为异常,并中止当前周期;
重新通过所述信号线向所述Master端发出第一中断信号;
或者,在发出第二中断信号之后,所述方法还包括:
若所述Master端未履行静默承诺,则标记为异常,并中止当前周期;
重新将待发送数据组帧通过所述SPI通道的MISO通道发出,并重新通过所述信号线向所述Master端发出第二中断信号。
进一步的,所述方法还包括:
若未通过所述信号线向所述Master端发出第一中断信号,且接收所述Master端反馈的第一指令,则将空数据组帧通过所述SPI通道的MISO通道发出,并通过所述信号线向所述Master端发出第二中断信号,供所述Master端解除静默承诺。
进一步的,所述反馈第一指令包括所述Master端向SPI MOSI写入SPI_INTR1_READ_CMD指令;
所述反馈的第二指令包括所述Master端向SPI MOSI写入READ_EMPTY_CNT次SPI_DUMMY_DATA数据。
第二方面,本申请实施例提供了一种Slave端主动输出数据的SPI交互方法,所述Slave端与Master端通过SPI通道连接,所述Slave端与所述Master端还通过信号线连接;所述方法由所述Master端执行,所述方法包括:
通过所述信号线接收所述Slave端发出的第一中断信号;
向所述Slave端反馈第一指令;
在通过所述信号线接收所述Slave端发出的第二中断信号的情况下,根据所述第二中断信号反馈第二指令,以读取所述Slave端通过所述SPI通道的MISO通道发出的帧数据,并对帧数据进行解析;其中,所述帧数据为所述Slave端将待发送数据组帧得到的。
进一步的,在并对帧数据进行解析之后,所述方法还包括:
若解析失败,则发出数据帧重传指令,供所述Slave端将待发送数据重新组帧,通过所述SPI通道的MISO通道发出,并通过所述信号线再次向所述Master端发出第二中断信号。
进一步的,在接收到第一中断信号或者接收到第二中断信号之后,所述方法还包括:
履行静默承诺。
第三方面,本申请实施例提供了一种Slave端主动输出数据的SPI交互装置,所述Slave端与Master端通过SPI通道连接,所述Slave端与所述Master端还通过信号线连接;所述装置配置于Slave端,所述装置包括:
第一中断信号发送模块,用于若存在数据传输触发事件,则通过所述信号线向所述Master端发出第一中断信号;
第二中断信号发送模块,用于接收所述Master端反馈的第一指令,将待发送数据组帧通过所述SPI通道的MISO通道发出,并通过所述信号线向所述Master端发出第二中断信号,供所述Master端根据所述第二中断信号反馈第二指令,以从所述SPI通道的MISO通道接收帧数据,并对帧数据进行解析。
第四方面,本申请实施例提供了一种Slave端主动输出数据的SPI交互装置,所述Slave端与Master端通过SPI通道连接,所述Slave端与所述Master端还通过信号线连接;所述装置配置于Master端,所述装置包括:
接收模块,用于通过所述信号线接收所述Slave端发出的第一中断信号;
反馈模块,用于向所述Slave端反馈第一指令;
解析模块,用于在通过所述信号线接收所述Slave端发出的第二中断信号的情况下,根据所述第二中断信号反馈第二指令,以读取所述Slave端通过所述SPI通道的MISO通道发出的帧数据,并对帧数据进行解析;其中,所述帧数据为所述Slave端将待发送数据组帧得到的。
第五方面,本申请实施例提供了一种电子设备,该电子设备包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如第一方面或者实现如第二方面所述的方法的步骤。
在本申请实施例中,若存在数据传输触发事件,则通过所述信号线向所述Master端发出第一中断信号;接收所述Master端反馈的第一指令,将待发送数据组帧通过所述SPI通道的MISO通道发出,并通过所述信号线向所述Master端发出第二中断信号,供所述Master端根据所述第二中断信号反馈第二指令,以从所述SPI通道的MISO通道接收帧数据,并对帧数据进行解析。通过上述Slave端主动输出数据的SPI交互方法,可以使Slave端主动上报大量业务信息数据,提高了数据传输效率,使交互过程具有极高的鲁棒性。并且减少了硬件占用资源,节省成本,具有极高的工程实用价值。
附图说明
图1是本申请实施例一提供的Slave端主动输出数据的SPI交互方法的流程示意图;
图2是本申请实施例二提供的Slave端主动输出数据的SPI交互方法的流程示意图;
图3是本申请实施例三提供的Slave端主动输出数据的SPI交互装置的结构示意图;
图4是本申请实施例四提供的Slave端主动输出数据的SPI交互装置的结构示意图;
图5是本申请实施例五提供的电子设备的结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面结合附图对本申请具体实施例作进一步的详细描述。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部内容。在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
下面结合附图,通过具体的实施例及其应用场景对本申请实施例提供的一种RSMC芯片、芯片多阶段启动方法以及北斗通信导航设备进行详细地说明。
实施例一
图1是本申请实施例一提供的Slave端主动输出数据的SPI交互方法的流程示意图。所述Slave端与Master端通过SPI通道连接,所述Slave端与所述Master端还通过信号线连接;所述方法由所述Slave端执行,如图1所示,具体包括如下步骤:
S101,若存在数据传输触发事件,则通过所述信号线向所述Master端发出第一中断信号。
首先,本方案的使用场景可以是在Slave端Soc芯片或Slave端传感器,可以是Slave端Soc芯片或Slave端传感器主动感知数据传输触发事件并向Master端主动上报大量业务信息数据的场景。
基于上述使用场景,可以理解的,本申请的执行主体可以是Slave端Soc芯片或Slave端传感器,此处不做过多的限定。
本方案中,所述Slave端与Master端通过SPI通道连接,所述Slave端与所述Master端还通过信号线连接;所述方法由所述Slave端执行。
Slave端可以是从设备,从设备可以包括Soc芯片或传感器,是主动采集数据并将采集到的数据发送到Master端,供Master端对数据进行加工处理的设备。例如,当从设备为温度传感器时,传感器可以主动采集温度,并将采集到的温度传输给Master端,供Master端根据采集到的温度进行相应的加工处理。由于Slave端可以主动采集数据,因此可以减少Master端工作量,提高工作效率。
Master端可以是主设备,主设备接收从设备传输的数据,并根据从设备传输的数据进行相应加工处理等操作。主设备可以包括智能终端设备或物联网平台,例如可以是手机、电脑以及中控屏等。当主设备为电脑,从设备为变电站内的温度传感器时,从设备主动向主设备反馈变电站内温度信息,主设备可以根据从设备反馈的温度信息实时监测变电站内温度是否正常,并在发生异常时进行相应处理。
SPI通道可以是通信总线在传输数据时所使用的通道。SPI是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,越来越多的芯片集成了这种通信协议。通常由一个主模块和一个或多个从模块组成,主模块选择一个从模块进行同步通信,从而完成数据的交换。
信号线可以是中断信号线,是Slave端向Master端传递中断通知信号所使用的。
Slave端与Master端通过SPI通道进行连接,连接后可以进行数据以及指令的交互,即Slave端可以接收Master反馈的指令,Master端可以接收Slave端传输的数据。
Slave端与Master端还可以通过信号线进行连接,连接后Slave端可以通过信号线向Master端传输中断信号。
数据传输触发事件可以是Slave端可以开始向Master端传输数据的信号,例如,可以预先在Slave端预先设置传输数据的时间间隔,若时间间隔为3s,则每隔3s时Slave端会将采集到的数据传输给Master端进行处理。进一步的,每达到一个时间间隔时,则视为发生了一次数据传输触发事件。
第一中断信号可以是Slave端通知Master端停止向Slave端写入数据的信号。在未发出第一中断信号时,Master端向Slave端按照正常SPI时序进行写入数据。当发生数据传输触发事件时,Slave端开始通过信号线将第一中断信号发送至Master端,Master接收到第一中断信号,则会停止向Slave端写入数据,只有在Master停止向Slave端写入数据后,Slave端才能向Master端进行传输数据的操作。
在上述各技术方案的基础上,可选的,在通过所述信号线向所述Master端发出第一中断信号之后,所述方法还包括:
若在第一等待时长内未接收到所述Master端反馈的第一指令,则重新通过所述信号线向所述Master端发出第一中断信号;
在通过所述信号线向所述Master端发出第二中断信号之后,所述方法还包括:
若在第二等待时长内未接收到所述Master端反馈的第二指令,则重新通过所述信号线向所述Master端发出第二中断信号。
本方案中,第一等待时长可以是等待Master端向Slave端反馈第一指令的时长,当超过第一等待时长还未收到Master端发送的第一指令时,可以视为线路出现故障,第一中断信号未成功传输至Master端,则会重新通过信号线向Master端发出第一中断信号。例如,第一等待时长可以设置为5s,当5s后Slave端还未接收到第一指令,则会重新通过信号线向Master端发出第一中断信号。
第二等待时长可以是等待Master端向Slave端反馈第二指令的时长,当超过第二等待时长还未收到Master端发送的第二指令时,可以视为线路出现故障,第二中断信号未成功传输至Master端,则会重新通过信号线向Master端发出第二中断信号。
本方案中,通过设置第一等待时长以及第二等待时长,可以对异常进行检测,应对硬件电流干扰等问题,在交互时可以自行修复异常问题。并且不会因为异常使Slave端与Master端停止工作,通过中断信号重传使Master端重新接受信号以及反馈相应指令,提高Master端以及Slave端的工作效率。
在上述各技术方案的基础上,可选的,在发出第一中断信号或者发出第二中断信号之后,所述方法还包括:
供所述Master端基于所述第一中断信号或者所述第二中断信号履行静默承诺。
本方案中,静默承诺可以是Master端不再向Slave端写入任何数据,而是等待Master端发送的下一次中断信号的承诺。当Master端收到第一中断信号或者第二中断信号后,则会开始履行静默承诺。
本方案中,通过设置静默承诺,可以提高Master端与Slave端之间的数据传输效率。若不设置静默承诺,可能会发生由于Slave端写入数据的同时Master端也在写入数据,进一步导致数据写入混乱,Master端与Slave端无法正常工作的情况发生。
在上述各技术方案的基础上,可选的,在发出第一中断信号之后,所述方法还包括:
若所述Master端未履行静默承诺,则标记为异常,并中止当前周期;
重新通过所述信号线向所述Master端发出第一中断信号;
或者,在发出第二中断信号之后,所述方法还包括:
若所述Master端未履行静默承诺,则标记为异常,并中止当前周期;
重新将待发送数据组帧通过所述SPI通道的MISO通道发出,并重新通过所述信号线向所述Master端发出第二中断信号。
本方案中,当Slave端发出第一中断信号后,但Master端未履行静默承诺,可能是Master端接收到其他Slave端发送的第一中断信号,并将此信号误认为是此Slave端发出的第一中断信号,对其他Slave端履行了静默承诺,未对此Slave端履行静默承诺。Slave端实时检测到Master端未履行静默承诺后,标记为异常,中止当前周期,并重新通过所述信号线向Master端发出第一中断信号,即重新开始新一轮交互流程。
当Slave端发出第二中断信号后,但Master端未履行静默承诺,可能是Master端接收到其他Slave端发送的第二中断信号,并将此信号误认为是此Slave端发出的第二中断信号,对其他Slave端履行了静默承诺,未对此Slave端履行静默承诺。Slave端实时检测到Master端未履行静默承诺后,标记为异常,中止当前周期,并将待发送数据组帧重新打包,并通过MISO通道重新发送数据组帧,即重新向MISO通道重新写入数据组帧,写入完成后通过信号线向Master端发送第二中断信号。
本方案中,可以使Slave端具备异常检测与丢帧重传功能,使得交互过程具有极高的鲁棒性,可以应对诸如硬件电流干扰以及软件异步阻塞等各种情况,具有极高的工程实用价值。
在上述各技术方案的基础上,可选的,所述方法还包括:
若未通过所述信号线向所述Master端发出第一中断信号,且接收所述Master端反馈的第一指令,则将空数据组帧通过所述SPI通道的MISO通道发出,并通过所述信号线向所述Master端发出第二中断信号,供所述Master端解除静默承诺。
本方案中,空数据组帧可以是单字节无意义数据,可以是128个0。Slave端在将有效数据打包完成后,向包内填入128个0,将有效数据挤入前面。
当Slave端未发出第一中断信号但已经接收到Master端反馈的第一指令时,可以视为主设备发生了混乱,误将其他Slave端发送的第一中断信号当做此Slave端发送的第一中断信号并开始履行了静默承诺。则此时需要向Master端发送空数据组帧让Master端读取,当空数据组帧在MISO通道发送完成后,向Master端发送第二中断信号,Master端读取到空数据组帧后则会解除静默承诺。
本方案中,通过设置空数据组帧,可以在Master端发生混乱时,Slave端能主动对异常进行检测及修复,使得交互过程具有极高的鲁棒性,可以应对诸如硬件电流干扰、软件异步阻塞等各种情况。
S102,接收所述Master端反馈的第一指令,将待发送数据组帧通过所述SPI通道的MISO通道发出,并通过所述信号线向所述Master端发出第二中断信号,供所述Master端根据所述第二中断信号反馈第二指令,以从所述SPI通道的MISO通道接收帧数据,并对帧数据进行解析。
第一指令可以是Master端向Slave端发送的表明静默承诺的指令,当Master端向Slave端反馈第一指令时,表明Master端已经成功接收并对第一中断信号做出响应,停止向Slave端写入数据,即开始处于静默状态。
待发送数据组帧可以是Slave端采集到的数据,例如,当Slave端为变电站内的温度传感器,则温度传感器采集到温度后向Master端发送的温度指令则为待发送数据组帧。而由于平时每条指令会有一个格式,可能会占用的字段较短,就可以拼接在一起。因此,可以按照Slave端输出高效帧协议进行发送,Slave端输出高效帧协议是为保证充分利用SPI交互的信道效率,Slave端在填充SPI MISO FIFO之前,先将待发送指令尽可能多地拼接在一起,前面加上帧头信息,组成的高效协议帧。帧格式如下:(1)数据头标识,至少两个不同字节,例如0xEB 0x09;(2)数据长度,根据SPI MISO FIFO深度确定,确保能填入整个深度对应数值,至少1字节;(3)数据帧id标识,1字节,顺序增加;(4)业务指令数据,在保证各自完整性的前提下,尽可能多地拼接,以提高此次SPI MISO FIFO利用率,提高Slave端输出数据传输效率。
MISO(Master Input Slave Output)通道可以是SPI的Master输入/Slave输出的通道。
第二中断信号可以是Slave端在MISO通道中将待发送数据组帧已经写入完毕,通知Master端可以开始读取帧数据的信号。
第二指令可以是帧格式内部划帧校验通过指令,由于数据组帧可能包含多个业务数据包,Master端需对各个业务数据包进行依次校验,全部校验通过则为通过,任意一包校验失败则为失败。当Master端向Slave端反馈此指令时,则视为校验通过,则可以成功接收帧数据,即此次高鲁棒性Slave端输出交互机制全流程顺利结束,后续只需对此次数据帧进行业务处理即可。
当Master端接收到第一中断信号后,首先会进行中断序号判定,若检测到为第一中断信号,则Master端在完成(假如有)当前正在执行的SPI MOSI写入动作后,响应第一中断信号,即向Slave端反馈第一指令,然后停止向Slave端写入数据。
当Slave端接收到第一指令时,则视为Master端已经成功响应第一中断信号,开始将待发送数据组帧通过SPI通道的MISO通道发送至Master端,即开始向MISO通道写入数据组帧。当数据组帧在MISO全部写入完毕,开始通过信号线向Master端发送第二中断信号,即通知Master端可以开始从MISO通道读取帧数据。Master接收到第二中断信号后,首先也会进行中断序号判定,若检测到为第二中断信号后,进行帧格式内部划帧校验,若校验通过后,向Slave端反馈第二指令,则视为校验通过,反馈后可以从MISO通道接收Slave端写入的帧数据。当帧数据接收完毕后,可以对帧数据进行解析,即将拼接在一起的指令还原为指令原始状态。
在上述各技术方案的基础上,可选的,在通过所述信号线向所述Master端发出第二中断信号之后,所述方法还包括:
若接收到所述Master端发出数据帧重传指令,则将待发送数据重新组帧,通过所述SPI通道的MISO通道发出,并通过所述信号线再次向所述Master端发出第二中断信号。
数据帧重传指令可以是当帧格式内部划帧校验未通过时发出的需要Slave端重新发送帧数据的指令。当校验未通过时,Master端会向Slave端发送数据帧重传指令,当Slave端接收到此指令时,将待发送数据按照Slave端输出高效帧协议重新组帧,组帧完成后通过MISO通道发出,即向MISO通道写入重新组帧完毕的帧数据。当写入完毕后,通过信号线向Master端发送第二中断信号,告知Master端数据写入完毕,可以开始读取。
本方案中,通过数据帧重传指令,可以在Master端校验失败后向Master端重新发送数据帧,以减少异常情况发生,使Master端与Slave端交互具有极高鲁棒性。
在上述各技术方案的基础上,可选的,所述反馈第一指令包括所述Master端向SPIMOSI写入SPI_INTR1_READ_CMD指令;
所述反馈的第二指令包括所述Master端向SPI MOSI写入READ_EMPTY_CNT次SPI_DUMMY_DATA数据。
本方案中,SPI MOSI(Master Output Slave Input)可以是SPI的Master输出/Slave输入的通道。
SPI_INTR1_READ_CMD指令可以是用于向Slave端表明静默承诺的指令。与主协议不冲突的具有唯一性的字节序,例如0xAA0x55 0xFF,以避免数据传输过程中业务数据产生误码引发指令误判。
SPI_INTR1_RESEND_CMD指令可以是用于向Slave端表明静默承诺的指令,并负责触发数据帧重传。与主协议不冲突的具有唯一性的字节序,例如0xBB 0xFF 0x55,以避免数据传输过程中业务数据产生误码引发指令误判。
READ_EMPTY_CNT可以是读空SPI MISO FIFO(First In First Out,先入先出队列)所需要发送的SPI_DUMMY_DATA数据的字节数,等于SPI MISO FIFO的深度,例如128字节。
SPI_DUMMY_DATA可以是指定的单字节无意义数据,与主协议数据不可冲突,例如0x00,用于写入SPI MOSI,以通过SPI的环回机制读取出SPI MISO数据。
在中断序号判定时,需要使用到READ_EMPTY_CNT指令以及SPI_DUMMY_DATA指令。判定步骤为:(1)执行FIFO读空操作,即发送READ_EMPTY_CNT次SPI_DUMMY_DATA写入,读取到READ_EMPTY_CNT个数据;(2)对其构成的数据帧进行格式判定,如果帧头有效,则意味着读取到了Slave端上报的数据,当前中断为中断2,此次交互流程顺利结束,继续进行后续业务处理即可;(3)如果帧头无效,则意味着当前中断为中断1,需要进行响应。
履行静默承诺时,需要使用SPI_INTR1_READ_CMD指令。即当Master在判定当前中断信号为第一中断信号时,响应SPI_INTR1_READ_CMD指令,该指令后,Master端不可再写入任何数据,而是应等待Master的下一次中断信号。
当超过第一等待时长以及第二等待时长,需要向Master端发送第一中断信号以及第二中断信号时,需要使用SPI_INTR1_READ_CMD指令、READ_EMPTY_CNT指令以及SPI_DUMMY_DATA指令。即对于此次中断,如果触发后超过特定时长,Slave端没有等到预期响应,则会再次产生中断。例如:在第一中断信号产生后,Slave预期动作是Master端回复SPI_INTR1_READ_CMD指令,而在第二中断信号产生后,Slave预期动作是Master端写入READ_EMPTY_CNT个SPI_DUMMY_DATA。
当Slave端需要向Master端发送空数据组帧时,需要使用SPI_INTR1_READ_CMD指令。即在Slave端没有任何数据待发送的前提下,如果接收到Master的SPI_INTR1_READ_CMD,Slave端按照“Slave端输出高效帧”规定,组建业务内容为空的特殊占位数据帧,以解除Master端的静默承诺,恢复交互时序。
本方案中,各指令对应不同的功能,在发生不同异常时使用各指令解决对应异常,使Slave端具备异常检测与丢帧重传功能等功能,使得交互过程具有极高的鲁棒性,可以应对诸如硬件电流干扰、软件异步阻塞等各种情况,具有极高的工程实用价值。
本实施例所提供的技术方案,若存在数据传输触发事件,则通过所述信号线向所述Master端发出第一中断信号;接收所述Master端反馈的第一指令,将待发送数据组帧通过所述SPI通道的MISO通道发出,并通过所述信号线向所述Master端发出第二中断信号,供所述Master端根据所述第二中断信号反馈第二指令,以从所述SPI通道的MISO通道接收帧数据,并对帧数据进行解析。通过上述Slave端主动输出数据的SPI交互方法,可以使Slave端主动上报大量业务信息数据,提高了数据传输效率,使交互过程具有极高的鲁棒性。并且减少了硬件占用资源,节省成本,具有极高的工程实用价值。
实施例二
图2是本申请实施例二提供的Slave端主动输出数据的SPI交互方法的流程示意图。所述Slave端与Master端通过SPI通道连接,所述Slave端与所述Master端还通过信号线连接;所述方法由所述Master端执行,如图2所示,具体包括如下步骤:
S201,通过所述信号线接收所述Slave端发出的第一中断信号。
当Slave端发送第一中断信号后,此信号会通过信号线传输至Master端,Master接收到第一中断信号后,会对第一中断信号做出响应。
S202,向所述Slave端反馈第一指令。
Master端响应于第一中断信号,会产生第一指令,并将此指令反馈至Slave端。
S203,在通过所述信号线接收所述Slave端发出的第二中断信号的情况下,根据所述第二中断信号反馈第二指令,以读取所述Slave端通过所述SPI通道的MISO通道发出的帧数据,并对帧数据进行解析;其中,所述帧数据为所述Slave端将待发送数据组帧得到的。
当Slave端将帧数据通过MISO通道发送完成后,则会向Master端发送第二中断信号,Master端接收到此信号后会对此信号进行响应,产生第二指令,并反馈至Slave端。同时,Master端会读取帧数据,即接收帧数据并进行解析,即还原为原来未拼接的状态。例如,若帧数据为拼接后的温度指令时,Master端接收到此温度指令后首先将温度指令进行还原,还原为具体温度的形式。其中,帧数据是待发送数据组帧通过Slave端输出高效帧协议拼接得到的。
在上述技术方案的基础上,可选的,在并对帧数据进行解析之后,所述方法还包括:
若解析失败,则发出数据帧重传指令,供所述Slave端将待发送数据重新组帧,通过所述SPI通道的MISO通道发出,并通过所述信号线再次向所述Master端发出第二中断信号。
本方案中,当使用帧格式内部划帧校验失败时,Master端会向Slave端发送数据帧重传指令,告知Slave端需重新传输帧数据。Slave端接收到此指令后,通过MISO通道将重新组帧的待发送数据发送至Master端,当发送完成后,则通过信号线再次向Master端发出第二中断信号。
本方案中,通过设置数据帧重传指令,使Master端可以对帧数据解析失败的异常情况进行相应处理,使得交互过程具有极高的鲁棒性。
在上述技术方案的基础上,可选的,在接收到第一中断信号或者接收到第二中断信号之后,所述方法还包括:
履行静默承诺。
本方案中,Master端接收到第一中断信号或者接收到第二中断信号之后,会履行静默承诺,不再向Slave端写入任何数据,而是应等待Master的下一次中断信号。
本方案中,通过设置静默承诺,可以在一定程度上减少数据混乱的情况发生,提高Master端与Slave端进行数据传输的效率。
本实施例中,通过所述信号线接收所述Slave端发出的第一中断信号;向所述Slave端反馈第一指令;在通过所述信号线接收所述Slave端发出的第二中断信号的情况下,根据所述第二中断信号反馈第二指令,以读取所述Slave端通过所述SPI通道的MISO通道发出的帧数据,并对帧数据进行解析;其中,所述帧数据为所述Slave端将待发送数据组帧得到的。通过上述Slave端主动输出数据的SPI交互方法,可以兼容Master端原有写入流程,优化Master端读取流程,并且提高了数据传输效率,使交互过程具有极高的鲁棒性。并且减少了硬件占用资源,节省成本,具有极高的工程实用价值。
本申请实施例提供的Slave端主动输出数据的SPI交互方法与图1的方法实施例的各个过程相对应,具有与之相应的执行过程和有益效果,为避免重复,这里不再赘述。
实施例三
图3是本申请实施例三提供的Slave端主动输出数据的SPI交互装置的结构示意图。所述Slave端与Master端通过SPI通道连接,所述Slave端与所述Master端还通过信号线连接;所述装置配置于Slave端,如图3所示,具体包括:
第一中断信号发送模块301,用于若存在数据传输触发事件,则通过所述信号线向所述Master端发出第一中断信号;
第二中断信号发送模块302,用于接收所述Master端反馈的第一指令,将待发送数据组帧通过所述SPI通道的MISO通道发出,并通过所述信号线向所述Master端发出第二中断信号,供所述Master端根据所述第二中断信号反馈第二指令,以从所述SPI通道的MISO通道接收帧数据,并对帧数据进行解析。
在本申请实施例中,第一中断信号发送模块,用于若存在数据传输触发事件,则通过所述信号线向所述Master端发出第一中断信号;第二中断信号发送模块,用于接收所述Master端反馈的第一指令,将待发送数据组帧通过所述SPI通道的MISO通道发出,并通过所述信号线向所述Master端发出第二中断信号,供所述Master端根据所述第二中断信号反馈第二指令,以从所述SPI通道的MISO通道接收帧数据,并对帧数据进行解析。通过上述Slave端主动输出数据的SPI交互装置,可以使Slave端主动上报大量业务信息数据,提高了数据传输效率,使交互过程具有极高的鲁棒性。并且减少了硬件占用资源,节省成本,具有极高的工程实用价值。
本申请实施例提供的Slave端主动输出数据的SPI交互装置能够实现图1的方法实施例实现的各个过程,为避免重复,这里不再赘述。
实施例四
图4是本申请实施例四提供的Slave端主动输出数据的SPI交互装置的结构示意图。所述Slave端与Master端通过SPI通道连接,所述Slave端与所述Master端还通过信号线连接;所述装置配置于Master端,如图4所示,具体包括:
接收模块401,用于通过所述信号线接收所述Slave端发出的第一中断信号;
反馈模块402,用于向所述Slave端反馈第一指令;
解析模块403,用于在通过所述信号线接收所述Slave端发出的第二中断信号的情况下,根据所述第二中断信号反馈第二指令,以读取所述Slave端通过所述SPI通道的MISO通道发出的帧数据,并对帧数据进行解析;其中,所述帧数据为所述Slave端将待发送数据组帧得到的。
在本申请实施例中,接收模块,用于通过所述信号线接收所述Slave端发出的第一中断信号;反馈模块,用于向所述Slave端反馈第一指令;解析模块,用于在通过所述信号线接收所述Slave端发出的第二中断信号的情况下,根据所述第二中断信号反馈第二指令,以读取所述Slave端通过所述SPI通道的MISO通道发出的帧数据,并对帧数据进行解析;其中,所述帧数据为所述Slave端将待发送数据组帧得到的。通过上述Slave端主动输出数据的SPI交互装置,可以兼容Master端原有写入流程,优化Master端读取流程,并且提高了数据传输效率,使交互过程具有极高的鲁棒性。并且减少了硬件占用资源,节省成本,具有极高的工程实用价值。
本申请实施例提供的Slave端主动输出数据的SPI交互装置能够实现图2的方法实施例实现的各个过程,为避免重复,这里不再赘述。
实施例五
如图5所示,本申请实施例还提供一种电子设备500,包括处理器501,存储器502,存储在存储器502上并可在所述处理器501上运行的程序或指令,该程序或指令被处理器501执行时实现上述Slave端主动输出数据的SPI交互方法方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
需要说明的是,本申请实施例中的电子设备包括上述所述的移动电子设备和非移动电子设备。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。此外,需要指出的是,本申请实施方式中的方法和装置的范围不限按示出或讨论的顺序来执行功能,还可包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,例如,可以按不同于所描述的次序来执行所描述的方法,并且还可以添加、省去、或组合各种步骤。另外,参照某些示例所描述的特征可在其他示例中被组合。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以计算机软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。
上述仅为本申请的较佳实施例及所运用的技术原理。本申请不限于这里所述的特定实施例,对本领域技术人员来说能够进行的各种明显变化、重新调整及替代均不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由权利要求的范围决定。

Claims (13)

1.一种Slave端主动输出数据的SPI交互方法,其特征在于,所述Slave端与Master端通过SPI通道连接,所述Slave端与所述Master端还通过信号线连接;所述方法由所述Slave端执行,所述方法包括:
若存在数据传输触发事件,则通过所述信号线向所述Master端发出第一中断信号;
接收所述Master端反馈的第一指令,将待发送数据组帧通过所述SPI通道的MISO通道发出,并通过所述信号线向所述Master端发出第二中断信号,供所述Master端根据所述第二中断信号反馈第二指令,以从所述SPI通道的MISO通道接收帧数据,并对帧数据进行解析。
2.根据权利要求1所述的方法,其特征在于,在通过所述信号线向所述Master端发出第二中断信号之后,所述方法还包括:
若接收到所述Master端发出数据帧重传指令,则将待发送数据重新组帧,通过所述SPI通道的MISO通道发出,并通过所述信号线再次向所述Master端发出第二中断信号。
3.根据权利要求1所述的方法,其特征在于,在通过所述信号线向所述Master端发出第一中断信号之后,所述方法还包括:
若在第一等待时长内未接收到所述Master端反馈的第一指令,则重新通过所述信号线向所述Master端发出第一中断信号;
在通过所述信号线向所述Master端发出第二中断信号之后,所述方法还包括:
若在第二等待时长内未接收到所述Master端反馈的第二指令,则重新通过所述信号线向所述Master端发出第二中断信号。
4.根据权利要求1所述的方法,其特征在于,在发出第一中断信号或者发出第二中断信号之后,所述方法还包括:
供所述Master端基于所述第一中断信号或者所述第二中断信号履行静默承诺。
5.根据权利要求4所述的方法,其特征在于,在发出第一中断信号之后,所述方法还包括:
若所述Master端未履行静默承诺,则标记为异常,并中止当前周期;
重新通过所述信号线向所述Master端发出第一中断信号;
或者,在发出第二中断信号之后,所述方法还包括:
若所述Master端未履行静默承诺,则标记为异常,并中止当前周期;
重新将待发送数据组帧通过所述SPI通道的MISO通道发出,并重新通过所述信号线向所述Master端发出第二中断信号。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
若未通过所述信号线向所述Master端发出第一中断信号,且接收所述Master端反馈的第一指令,则将空数据组帧通过所述SPI通道的MISO通道发出,并通过所述信号线向所述Master端发出第二中断信号,供所述Master端解除静默承诺。
7.根据权利要求1所述的方法,其特征在于,所述反馈第一指令包括所述Master端向SPI MOSI写入SPI_INTR1_READ_CMD指令;
所述反馈的第二指令包括所述Master端向SPI MOSI写入READ_EMPTY_CNT次SPI_DUMMY_DATA数据。
8.一种Slave端主动输出数据的SPI交互方法,其特征在于,所述Slave端与Master端通过SPI通道连接,所述Slave端与所述Master端还通过信号线连接;所述方法由所述Master端执行,所述方法包括:
通过所述信号线接收所述Slave端发出的第一中断信号;
向所述Slave端反馈第一指令;
在通过所述信号线接收所述Slave端发出的第二中断信号的情况下,根据所述第二中断信号反馈第二指令,以读取所述Slave端通过所述SPI通道的MISO通道发出的帧数据,并对帧数据进行解析;其中,所述帧数据为所述Slave端将待发送数据组帧得到的。
9.根据权利要求8所述的方法,其特征在于,在并对帧数据进行解析之后,所述方法还包括:
若解析失败,则发出数据帧重传指令,供所述Slave端将待发送数据重新组帧,通过所述SPI通道的MISO通道发出,并通过所述信号线再次向所述Master端发出第二中断信号。
10.根据权利要求8所述的方法,其特征在于,在接收到第一中断信号或者接收到第二中断信号之后,所述方法还包括:
履行静默承诺。
11.一种Slave端主动输出数据的SPI交互装置,其特征在于,所述Slave端与Master端通过SPI通道连接,所述Slave端与所述Master端还通过信号线连接;所述装置配置于Slave端,所述装置包括:
第一中断信号发送模块,用于若存在数据传输触发事件,则通过所述信号线向所述Master端发出第一中断信号;
第二中断信号发送模块,用于接收所述Master端反馈的第一指令,将待发送数据组帧通过所述SPI通道的MISO通道发出,并通过所述信号线向所述Master端发出第二中断信号,供所述Master端根据所述第二中断信号反馈第二指令,以从所述SPI通道的MISO通道接收帧数据,并对帧数据进行解析。
12.一种Slave端主动输出数据的SPI交互装置,其特征在于,所述Slave端与Master端通过SPI通道连接,所述Slave端与所述Master端还通过信号线连接;所述装置配置于Master端,所述装置包括:
接收模块,用于通过所述信号线接收所述Slave端发出的第一中断信号;
反馈模块,用于向所述Slave端反馈第一指令;
解析模块,用于在通过所述信号线接收所述Slave端发出的第二中断信号的情况下,根据所述第二中断信号反馈第二指令,以读取所述Slave端通过所述SPI通道的MISO通道发出的帧数据,并对帧数据进行解析;其中,所述帧数据为所述Slave端将待发送数据组帧得到的。
13.一种电子设备,其特征在于,所述电子设备包括通过SPI通道连接的Master端和Slave端,所述Slave端可运行的程序或指令,所述程序或指令被所述Slave端执行时实现如权利要求1-7或者实现如权利要求8-10中任一项所述的Slave端主动输出数据的SPI交互方法的步骤。
CN202310304900.4A 2023-03-21 2023-03-21 一种Slave端主动输出数据的SPI交互方法、装置及电子设备 Pending CN116450561A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310304900.4A CN116450561A (zh) 2023-03-21 2023-03-21 一种Slave端主动输出数据的SPI交互方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310304900.4A CN116450561A (zh) 2023-03-21 2023-03-21 一种Slave端主动输出数据的SPI交互方法、装置及电子设备

Publications (1)

Publication Number Publication Date
CN116450561A true CN116450561A (zh) 2023-07-18

Family

ID=87134825

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310304900.4A Pending CN116450561A (zh) 2023-03-21 2023-03-21 一种Slave端主动输出数据的SPI交互方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN116450561A (zh)

Similar Documents

Publication Publication Date Title
CN100366029C (zh) 通信控制器、主机端控制器、通信设备、通信系统和方法
CN111683252B (zh) 一种服务器以及一种视频压缩图像的输出系统和方法
CN113806116A (zh) 基于Linux系统的协议栈数据传输方法、计算机设备和存储介质
US4136384A (en) Loop type data highway system
CN109450912B (zh) 数据传输方法、装置和设备
US8018867B2 (en) Network system for monitoring operation of monitored node
CN103650401A (zh) 一种移动终端内部通信方法
CN116578521A (zh) 一种单总线通信方法、装置、系统及设备
CN116450561A (zh) 一种Slave端主动输出数据的SPI交互方法、装置及电子设备
JPS6072351A (ja) パケツト通信システムの動作状態監視方法
CN111930582A (zh) 系统管理总线检测平台、处理器及系统管理总线检测方法
CN111371799A (zh) Mctp控制器收发数据的控制方法、装置及设备
JP3217397B2 (ja) 通信制御装置のデータ送信方法
CN114500566B (zh) 通信方法及接口设备
CN113326224B (zh) 一种基于2取2架构的串口通信方法
CN111371586A (zh) 日志数据传输方法、装置和设备
CN215120794U (zh) 一种光伏电站电力载波通信系统
CN112637011B (zh) 数据传输方法、数据传输装置、数据传输设备及存储介质
CN115277288B (zh) 一种基于Memobus协议的通讯方法、装置、系统及起重机
US20230208676A1 (en) Data communication method and apparatus, electronic device, and storage medium
JPS59195736A (ja) 通信制御装置
CN117792573A (zh) 一种电源线信号传输速率调整方法及装置
CN115733806A (zh) 信息传输方法、装置、系统、电子设备以及存储介质
CN117376273A (zh) 一种数据传输方法、装置、设备及介质
CN117278354A (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