CN112822002A - 基于spi的通信方法及装置、电子设备和存储介质 - Google Patents
基于spi的通信方法及装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN112822002A CN112822002A CN202110002599.2A CN202110002599A CN112822002A CN 112822002 A CN112822002 A CN 112822002A CN 202110002599 A CN202110002599 A CN 202110002599A CN 112822002 A CN112822002 A CN 112822002A
- Authority
- CN
- China
- Prior art keywords
- frame
- data
- current
- alignment
- frame number
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L5/00—Arrangements affording multiple use of the transmission path
- H04L5/14—Two-way operation using the same type of signal, i.e. duplex
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Communication Control (AREA)
Abstract
公开了一种基于SPI的通信方法、电子设备和存储介质。本申请实施例中,基于串行外设接口的通信方法可以包括:向对端设备发送第一对齐帧,同时接收来自所述对端设备的第二对齐帧,以进行帧对齐;当所述帧对齐成功时,向对端设备发送第一数据帧,同时接收来自所述对端设备的第二数据帧;解析所述第二数据帧。本申请实施例能够实现SPI的全双工通信,不仅节省了设备通信的等待时间,提高了通信效率,SPI通信的主设备、从设备以及SPI总线等硬件资源的利用率也可以得到提升。
Description
技术领域
本公开涉及自动驾驶技术领域,尤其涉及一种基于串行外设接口(SPI,SerialPeripheral Interface)的通信方法及装置、电子设备和存储介质。
背景技术
在自动驾驶的嵌入式***中,***级芯片(SoC)和微控制单元(MCU,Microcontroller Unit)之间传输的数据量越来越大,速率要求在Mbps级别上,因此在同一块电路板内,基本都采用串行外设接口(SPI,Serial Peripheral Interface)总线进行通信。
发明内容
目前,SoC和MCU之间的通信方案是SoC通过SPI总线发送指令给MCU,MCU解析指令后准备好数据并通过输入输出(IO)接口提醒SoC,再由SoC来读取MCU准备好的数据,该通信方案不仅需要多占用硬件IO资源、中断资源,而且SPI总线仅用半双工通信,降低了通信效率。为了解决该技术问题,本公开实施例期望提供一种基于SPI的通信方法及装置、电子设备和存储介质,以实现SPI的全双工通信。
根据本申请的一个方面,提供了一种基于串行外设接口的通信方法,包括:向对端设备发送第一对齐帧,同时接收来自所述对端设备的第二对齐帧,以进行帧对齐;当所述帧对齐成功时,向对端设备发送第一数据帧,同时接收来自所述对端设备的第二数据帧;解析所述第二数据帧。
根据本申请的一个方面,提供了一种基于串行外设接口的通信装置,包括:接收单元,配置为接收来自对端设备的第二对齐帧,以进行帧对齐;以及,接收来自所述对端设备的第二数据帧;发送单元,配置为在所述接收单元接收所述第二对齐帧的同时向对端设备发送第一对齐帧,以进行所述帧对齐;以及,在所述接收单元接收所述第二数据帧的同时向所述对端设备发送第一数据帧;解析单元,配置为解析所述第二数据帧。
根据本申请的一个方面,提供了一种电子设备,包括:一个或多个处理器;以及,存储器,存储有计算机程序,所述计算机程序在被所述处理器运行时使所述处理器执行上述基于串行外设接口的通信方法。
根据本申请的一个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序在被处理器运行时使得所述处理器执行上述基于串行外设接口的通信方法。
根据本公开实施例的方法、装置、设备和存储介质,实现主设备(例如,SoC)通过SPI总线发送指令和数据的同时,从设备(例如,MCU)也同样传输该指令的数据给主设备,实现了全双工通信,节省了传输时间,提高了效率,实现了真正的并行通信。
附图说明
通过结合附图对本申请实施例进行更详细的描述,本申请的上述以及其他目的、特征和优势将变得更加明显。附图用来提供对本申请实施例的进一步理解,并且构成说明书的一部分,与本申请实施例一起用于解释本申请,并不构成对本申请的限制。在附图中,相同的参考标号通常代表相同部件或步骤。
图1是本申请所适用***的示例性部署结构图。
图2是本申请一示例性实施例提供的基于SPI的通信方法的流程示意图。
图3是本申请一示例性实施例提供的SPI通信使用的帧结构示意图。
图4是本申请一示例性实施例提供的第一数据帧的帧结构示意图。
图5是本申请一示例性实施例提供的第二数据帧的帧结构示意图。
图6是本申请另一示例性实施例提供的第二数据帧的帧结构示意图。
图7是本申请一示例性实施例提供的主设备侧SPI通信流程示意图。
图8是本申请一示例性实施例提供的从设备侧SPI通信流程图。
图9是本申请另一示例性实施例提供的基于SPI的通信装置的结构示意图。
图10是本申请一示例性实施例提供的电子设备的结构示意图。
具体实施方式
下面,将参考附图详细地描述根据本申请的示例实施例。显然,所描述的实施例仅仅是本申请的一部分实施例,而不是本申请的全部实施例,应理解,本申请不受这里描述的示例实施例的限制。
申请概述
如上文所述,相关技术中SoC和MCU之间的通信方案是SoC通过SPI总线发送指令给MCU,MCU解析指令后准备好数据并通过输入输出(IO)接口提醒SoC,再由SoC来读取MCU准备好的数据,该通信方案不仅需要多占用硬件IO资源、中断资源,而且SPI总线仅用半双工通信,降低了通信效率。
为了解决上述技术问题,本公开实施例的基本构思是提供一种基于SPI的通信方法及设备、存储介质,当前设备(下文的主设备或从设备)可以在向对端设备发送第一对齐帧的同时,接收来自所述对端设备(下文的从设备或主设备)的第二对齐帧,以进行帧对齐;当所述帧对齐成功时,当前设备可以在向对端设备发送第一数据帧的同时,接收来自所述对端设备的第二数据帧,从而通过解析第二数据帧来获得诸如指令、数据等内容。由此,本申请实施例可以实现主设备(例如,下文的SoC)通过SPI总线发送指令和数据的同时,从设备(例如,下文的MCU)也同样传输该指令的数据给主设备,从设备传输指令的数据给主设备的同时也同样可以通过SPI总线接收下一指令,实现了SPI全双工通信,节省了传输时间,提高了效率,实现了真正的并行通信。
本申请实施例可适用于任何可支持SPI的***。一些示例中,本申请实施例尤其可以适用于诸如自动驾驶等人工智能技术的嵌入式***中的SPI通信。
示例性***
图1是本申请实施例所适用的嵌入式***的示例性结构图。如图1所示,本申请实施例所适用的嵌入式***可以包括:可以通过串行外设接口(SPI,Serial PeripheralInterface)通信的***级芯片(SoC)和微控制单元(MCU,Microcontroller Unit)。
具体应用中,该嵌入式***中MCU和SoC中的任何一方均可作为下文的主设备,相应的,MCU和SoC中的另一方则可以作为下文的从设备。例如,SoC作为主设备、MCU作为从设备时,SoC可以通过SPI向MCU发送指令,而MCU可以准备该指令所需数据并同时发送给SoC。
一些示例中,SoC和MCU可以装载在同一块电路板中并通过SPI通信。一些示例中,MCU可以是但不限于支持诸如8位/16位/32位等单片机***的MCU。SoC可以是但不限于支持诸如Mac、Windows、Linux等操作***的SoC。
示例性方法
图2是本申请一示例性实施例提供的基于SPI的通信方法的流程示意图。如图2所示,该示例性方法可以包括如下步骤:
步骤S201,向对端设备发送第一对齐帧,同时接收来自所述对端设备的第二对齐帧,以进行帧对齐;
步骤S202,当帧对齐成功时,向对端设备发送第一数据帧,同时接收来自对端设备的第二数据帧;
步骤S203,解析第二数据帧。
本申请实施例中,当前设备和对端设备先通过帧对齐同步,然后在数据和指令的交互过程中,当前设备发出第一数据帧的同时即可接收到与该第一数据帧相对应的第二数据帧,通过解析该第二数据帧即可获得所需的指令或数据。例如,假设当前设备是主设备,第一数据帧中携带指令A,那么同时接收到的第二数据帧中会携带对应该指令A的数据A’。假设当前设备是从设备,第一数据帧中携带数据A’,那么同时接收到的第二数据帧中会携带对应请求该数据A’的指令A。也就是说,主设备可以在发送当前指令的同时接收当前指令所需的数据,从设备可以在接收当前指令的同时向主设备发送该指令所需的数据。由此可见,本申请实施例实现了SPI的全双工通信,比之前的SPI半双工的方案,节省了SoC和MCU的等待时间,提高了通信效率,主设备、从设备以及SPI总线等硬件资源的利用率也会得到有效提升。
下面对本申请实施例上述方法的两种示例性实现方案进行详细说明。
第一实施例
在该第一实施例中,当前设备为主设备、对端设备为从设备。
本实施例中,第一数据帧可以携带有如下信息中之一或其任何组合:当前帧帧号、当前帧数据长度、下一帧帧号、下一帧的数据长度、用于指示当前设备状态的状态标志、当前帧传输控制数据和/或帧数据、用于验证数据正确与否的校验码。通过在第一数据帧中携带下一帧帧号,可以在当前帧中指示从设备下一帧所需的数据,使得从设备在收到当前帧之后即可开始准备下一帧所需数据,从而在主设备发送下一第一数据帧之时从设备即可同时向从设备发送该下一第一数据帧对应的第二数据帧,实现了SPI全双工通信。
本实施例中,第一对齐帧可以携带如下信息中之一或其任何组合:取值为预定帧号的当前帧帧号、下一帧帧号、下一帧的数据长度、用于指示当前设备状态的状态标志、当前帧传输控制数据和/或帧数据、用于验证数据正确与否的校验码。
本实施例中,第二数据帧可以携带如下信息中之一或其任意组合:当前帧帧号、当前帧数据长度、用于指示所述对端设备状态的状态标志、对应当前帧帧号的数据、用于验证数据正确与否的校验码。
本实施例中,第二对齐帧可以携带如下信息中之一或其任意组合:取值为预定帧号的当前帧帧号、当前帧数据长度、用于指示所述对端设备状态的状态标志、对应当前帧帧号的数据、用于验证数据正确与否的校验码。
图3示出了本申请实施例中各个帧的示例性格式。图4示出了第一数据帧的帧结构。
如图3、图4所示,本申请实施例中用于SPI通信的帧可以包括三部分,分别是起始符、N个信息字段(N为不小于1的整数)和结束符。一些示例中,帧的起始符可以预定义为0x2C,用于判断帧的开始。结束符可以预定义为“0x7E”,用于判断帧的结束。
本申请实施例中,帧中信息字段的数量N可以预定义。一些示例中,N个信息字段中每个信息字段的长度及其含义如下:
Byte0为当前帧帧号,用于识别当前发送的是哪一个指令;当前帧号可以采用1-255表示,具体可以实际需要自定义;
Byte1-2为当前帧数据长度,用于判断接收当前帧传输控制数据和帧数据的长度;
Byte3为下一帧帧号,用于识别下一次主设备要发给从设备哪一个指令;下一帧帧号可以采用1-255表示,其取值可以根据应用场景来自定义;
Byte4-5为下一帧数据长度,用于给从设备知道下一帧所需多少的数据;
Byte6为状态指示位,用于表示指示传输状态,其中bit0-3为主设备的状态指示,bit4-7为从设备的状态指示,其具体取值以及各个取值所代表的含义如下表1所示。
表1
Byte7~N-1用于承载当前帧传输控制数据及帧数据。
ByteN为Byte0~Byte(N-1)的数据校验和,例如CRC8。
实际应用中,当前帧帧号和下一帧的帧号可以根据具体场景的需求来定义。
本实施例中,来自对端设备的第二对齐帧和第二数据帧也可以采用图3所示的帧格式。与第一数据帧和第一帧对齐不同的是,Byte3~5的作用不同。在对端设备接收到的来自当前设备的指令或数据错误时,第一数据帧中还可以包括如下之一或两项:上一帧的指令标识和上一帧的数据长度。这样,对端设备的第二对齐帧和第二数据帧中,默认情况下(即,SPI通信正常的情况下)Byte3-5取0(也可以取其他无意义的值),只有对端设备发现其接收到的指令或数据错误并且需要向当前设备重新请求该指令或数据时,Byte3-5才会具有确定的值,Byte3的值等于对端设备请求的那一帧的帧号(即指令标识),Byte4~5的值则等于该帧的数据长度。图5示出了SPI通信正常时的第二数据帧的帧结构,图6示出了对端设备接收到的指令或数据错误时向当前设备请求上一帧的指令或数据时第二数据帧的帧结构。
通过上述帧格式,SPI通信的双方设备不仅可方便地进行帧解析获得数据或指令,而且可以在主设备发出的第一数据帧中携带下一帧帧号,以便从设备在收到当前的第一数据帧之后即可获得下一帧帧号,及时准备下一帧所需的数据并在主设备发出下一第一数据帧的同时从设备向主设备发送下一第一数据帧所需的数据。这样,即实现了SPI全双工通信。
至少一些实施例中,第一对齐帧和第一数据帧的格式可以完全相同,仅携带的信息不同。换言之,第一对齐帧和第二对齐帧可以是预定义帧号的数据帧。例如,该预定义帧号可以是第一帧(即帧号为1或0的帧)或者其他任何帧号。举例来说,假设图1所示的***中SoC为当前设备、MCU为对端设备,SoC作为主设备,第一对齐帧的格式可以为“0x2C 0x010x00010x02 0x100 0x0 0x00x(crc8)0x7E”,第二对齐帧的格式可以为“0x2C 0x01 0x00010x00 0x00 0x0 0x00x(crc8)0x7E”。该示例中,步骤S101的过程是:SoC发送第一帧及自身状态给MCU、MCU同时把第一帧帧号及自身状态发送给SoC。
至少一些实施例中,可以在向对端设备发送第一数据帧之前,判断帧对齐是否成功,以便在所述帧对齐成功时开始所述第一数据帧与所述第二数据帧的传送。如果帧对齐成功,则继续执行上述步骤S202,如果帧对齐失败,可以重新进行帧对齐,直到帧对齐成功或者帧对齐的次数达到预设上限值。如果帧对齐的次数达到预设的上限值,可以向上层控制模块发送通知。通过帧对齐可以使SPI通信的双方设备同步,确保双方设备同时发送的帧相对应(即,主设备发送的帧中的指令和从设备发送的帧中的数据是对应的),使得主设备在发送指令的同时即可收到该指令所请求的数据,从而实现SPI全双工通信。
一些示例中,判断帧对齐是否成功,可以包括如下之一或两项:验证所述第二对齐帧中的数据是否正确;判断所述第一对齐帧与所述第二对齐帧中的当前帧帧号是否一致。通过两项判断可以确保SPI通信的双方设备之间严格同步,满足SPI全双工通信的要求。
上述示例的一种实现方式可以是:验证第二对齐帧是否正常,并根据第二对齐帧中的状态指示确定对端设备的状态是否正常;第二对齐帧正常且对端设备状态正常时,确认当前设备侧帧对齐成功;第二对齐帧异常或对端设备状态异常时,重新向对端设备发送第一对齐帧。本申请实施例中,在SPI通信的双方设备侧均确认对齐成功之时,视为帧对齐成功。
上述实现方式中,验证第二对齐帧是否正常可以包括:根据第二对齐帧中的校验码确定第二对齐帧中的数据是否正确,并比较第二对齐帧中的当前帧帧号与第一对齐帧中的当前帧帧号;第二对齐帧中的数据正确且第二对齐帧与第一对齐帧的当前帧帧号一致时,确认第二对齐帧正常。这里,可以通过帧中“校验和”来确定帧中的数据是否正确。
上述实现方式中,根据第二对齐帧中的状态指示,判断对端设备的状态是否正常,并且在对端设备的状态正常时执行向对端设备发送第一数据帧的步骤S202。如果对端设备的状态异常,可以重新向对端设备发送上述第一对齐帧以重新进行帧对齐。
帧对齐成功后,SPI通信双方可以正常通信,当前设备和对端设备可以通过SPI进行全双工通信。
当前设备和对端设备通过SPI交互数据的过程可以是:当前设备向对端设备发送一帧号为y(y是大于1的整数)的第一数据帧、同时对端设备向当前设备返回一帧号为y的第二数据帧,该第二数据帧中携带对应帧号y的数据。
当前设备接收到该帧号为y的第二数据帧之后,解析该第二数据帧获得数据、帧号和指示对端设备状态的状态指示值,先判断该第二数据帧中的数据是否正确、帧号是否与自己发出的第一数据帧的帧号一致、对端设备状态是否正常,如果第二数据帧中的数据正确、帧号与自己发出的第一数据帧的帧号一致、对端设备状态正常,当前设备将继续下一第一数据帧(即帧号为y+1的第一数据帧),先将Byte3中的帧号赋值给Byte0、Byte4-5的长度赋值给Byte1-2、把要发送的下下一帧的帧号赋值给Byte3及其长度赋值给Byte4-5,以生成帧号为y+1的第一数据帧,并等待一段时间。
对端设备接收到该帧号为y的第一数据帧之后,解析该第一数据帧获得数据、帧号和指示当前设备状态的状态指示值,先判断该第一数据帧中的数据是否正确、帧号是否与自己发出的第二数据帧的帧号一致、当前设备状态是否正常,如果第一数据帧中的数据正确、帧号与自己发出的第二数据帧的帧号一致且当前设备状态正常,对端设备将按照该帧号为y的第一数据帧中Byte3中的帧号和Byte4-5的长度准备下一第二数据帧(即帧号为y+1的第二数据帧)所需的数据H,将帧号为y的第一数据帧中Byte3中的帧号赋值给Byte0、Byte4-5的长度赋值给Byte1-2、并在数据字段(Byte7~N-1)中填充已经准备好的数据H,以生成帧号为y+1的第二数据帧,并等待一段时间。
当前设备生成帧号为y+1的第一数据帧、对端设备生成帧号为y+1的第二数据帧并经过一段时间后,在当前设备发起的时钟控制下,当前设备和对端设备通过SPI总线交互上述帧号为y+1的第一数据帧和帧号为y+1的第二数据帧。
在当前设备和对端设备各自判断接收的数据和指令都正常的情况下,当前设备和对端设备之间通过SPI总线重复上述数据交互的操作,从而实现了SPI全双工通信。
在SPI通信的双方设备通过本实施例进行数据和指令交互过程中,可能产生异常事件,而异常事件很可能破坏SPI通信的双方设备之间的严格同步。在类似情况下,需要重新进行帧对齐来确保SPI通信的双方设备能够严格同步。
替换地,至少一些实施例中,在出现以下一种或多种事件的时候可以重新进行帧对齐来确保SPI通信的双方设备之间严格同步:1.当前设备异常重启;2.对端设备异常重启。除此之外,还可以在其他类似事件发生时通过重新进行帧对齐来确保SPI通信的双方设备之间严格同步,对于具体事件,本申请实施例不予限制。
一些示例中,可以在当前设备异常重启后,向对端设备发送第一对齐帧以重新进行帧对齐,以确保当前设备重新上电之后SPI双方设备之间严格同步、满足SPI全双工通信要求。这里的异常重启可以包括但不限于异常复位、软件复位和硬件复位等,异常复位可以包括软件复位、硬件复位,硬件复位可以包括但不限于拉高、拉低或重新上电。
假设由于某些原因导致当前设备异常重启,此时当前设备可以重新发送用于帧对齐的第一帧,但是对端设备同时返回的帧的帧号可能与该第一帧的帧号不一致。此时,对端设备会在收到当前设备发送的第一帧后,发现当前设备的指令与自己发出的指令不一致且当前设备的指令是第一帧(即对齐帧),那么在下一帧,当前设备和对端设备数据交互时,当前设备将继续重新发送第一帧给对端设备,同时对端设备也会发送用于帧对齐的第一帧给当前设备,这样,当前设备和对端设备重新进行了帧对齐。
如下表2示出了当前设备异常重启后当前设备与对端设备之间重新进行帧对齐的数据交互过程。表2中的当前帧是指当前设备异常重启后发送的第一帧,“X”表示当前设备异常重启后接收到的来自对端设备的第一帧的帧号,由于当前设备当前收到的来自对端设备的帧不是第一帧,无法完成帧对齐,因此当前设备的当前帧中当前帧号是1、下一帧帧号仍然是1,由于下一帧当前设备将会同时收到来自对端设备的第一帧,因此,当前设备的下一帧中当前帧号是1、下一帧帧号则是2。
当前设备 | 对端设备 | |
当前帧 | Byte0=1;Byte=1;Byte6=0 | Byte0=X;Byte=0;Byte6=0 |
下一帧 | Byte0=1;Byte=2;Byte6=0 | Byte0=1;Byte=0;Byte6=0 |
表2
一些示例中,可以在对端设备异常重启后,可以由对端设备发起并通过上述的对齐帧来重新进行帧对齐,以确保当前设备重新上电之后SPI双方设备之间严格同步、满足SPI全双工通信要求。具体地,当前设备可以在接收到来自对端设备的第二对齐帧(例如,上文所述的第一帧)之后通过向对端设备发送第一对齐帧来完成由对端设备发起的帧对齐操作。这里的异常重启可以包括但不限于异常复位、软件复位和硬件复位等,异常复位可以包括软件复位、硬件复位,硬件复位可以包括但不限于拉高、拉低或重新上电。
假设因为某些原因导致对端设备异常重启,那么,在异常重启后,对端设备会向当前设备发送第二对齐帧来发起帧对齐操作,以重新进行帧对齐。如下表3示出了对端设备异常重启之后当前设备和对端设备之间重新帧对齐的数据交互过程。如表3所示,对端设备异常重启后,当前设备将会按照正常数据交互的顺序向对端设备发送帧号为k的当前帧,并且该当前帧中携带了下一帧的帧号k+1,而对端设备则因发生异常重启同时向当前设备发送了用于帧对齐的第一帧(帧号1),当前设备发现自己发送的第k帧、而接收到的是第一帧,则判定对端设备在请求重新帧对齐,此时当前设备在下一帧将会发送用于帧对齐的第一帧(帧号1、携带下一帧的帧号2),而对端设备发送自己发送的第一帧而接收到的却是第k帧,则会在下一帧继续发送第一帧,这样,在对端设备异常重启之后当前设备和对端设备通过两帧交互即可重新帧对齐,如此,可确保对端设备异常重启之后当前设备和对端设备之间的SPI通信能够严格同步。
当前设备 | 对端设备 | |
当前帧 | Byte0=k;Byte=k+1;Byte6=0 | Byte0=1;Byte=0;Byte6=0 |
下一帧 | Byte0=1;Byte=2;Byte6=0 | Byte0=1;Byte=0;Byte6=0 |
表3
本申请实施例中,为避免SPI通信双方因其他错误而陷入无限循环的帧对齐操作之中,还可以通过设置帧对齐的上限来进行控制。例如,可以设置帧对齐次数的上限为M(M为不小于1的整数),如果帧对齐次数超过该上限值M则当前设不可以向上层控制模块报告SPI通信异常的消息。如果帧对齐次数低于该上限值M,则可以继续帧对齐操作。其中,上限值M的取值可以根据实际应用场景的需求来配置或者调整。例如,上限值M可以设置为一固定值(如,5),也可以通过上层控制模块来进行动态调整。
本实施例中,在步骤S203中解析第二数据帧,还可以验证目标数据是否接收成功,该目标数据通过解析所述第二数据帧得到,并与第一数据帧中的当前帧帧号相对应。如果目标数据接收成功,则可以通过下一第一数据帧继续请求数据。
至少一些实施例中,在目标数据接收成功时,可以根据第二数据帧中的状态标志,确定对端设备的当前状态是否正常。在对端设备的当前状态正常时,可以将下一第一数据帧中的当前帧帧号赋值为当前第一数据帧中的下一帧帧号,将下一第一数据帧中的下一帧帧号赋值为当前第一数据帧中下一帧帧号的下一帧号,同时设置下一第一数据帧中的状态标志为预定的第一值(例如,上文图3、图4的示例中Byte6的bit0-3取值为0),该第一值可以表示当前设备正常,以便继续向对端设备请求数据。
在SPI通信的双方设备通过本实施例进行数据和指令交互过程中,可能产生异常事件,而异常事件很可能导致SPI通信的双方设备交互的数据出现错误。替换地,在至少一些实施例中,出现以下一种或多种事件的时候SPI通信的双方设备可以通过纠错机制来进行纠正:1.当前设备接收对端设备的数据出现错误;2.对端设备接收到当前设备的指令和数据出现错误。
一些示例中,纠错机制可以包括:对端设备的当前状态正常,但对端设备接收到当前设备的指令或数据出现错误,对端设备可以在提供给当前设备的帧中携带相应帧号(例如,在上述图3的示例中的Byte3~5),这样,当前设备可以将下一第一数据帧中的当前帧帧号赋值为第二数据帧中携带的上一帧帧号,同时将下一第一数据帧中的状态标志设置为上述的第一值,以便继续向对端设备请求数据。
一些示例中,纠错机制还可以包括:当前设备接收对端设备的数据出现错误(即在目标数据接收失败时),可以将下一第一数据帧中的下一帧帧号赋值为当前第一数据帧中的当前帧帧号,同时将下一第一数据帧中的状态标志设置为预定的第二值(例如,上文图3、图4的示例中Byte6的bit0-3取值为1),第二值可用于指示当前设备接收数据异常。这样,可以在当前设备接收到的数据出现错误时重新向对端设备请求相应数据。
至少一些实施例中,验证目标数据是否接收成功,可以包括:判断第二数据帧与第一数据帧中的当前帧帧号是否一致;以及,验证第二数据帧中的数据是否正确;在第二数据帧与第一数据帧中的当前帧帧号一致且第二数据帧中的数据正确时,目标数据接收成功;在第二数据帧与第一数据帧中的当前帧帧号一致而第二数据帧中的数据错误时,目标数据接收失败。该实施例中,可以及时地通过帧号来确定数据是否成功接收。
一些示例中,验证第二数据帧中的数据是否正确的具体过程可以包括:解析第二数据帧以获得数据(例如,图3的示例中的Byte1~N-1或者图3的示例中的Byte7~N-1)和校验码,基于该数据(例如,图3的示例中的Byte1~N-1或者图3的示例中的Byte7~N-1)计算得到校验和(校验码的一种),将计算得到的校验和与从第二数据帧中解析出来的校验码比较,两者一致说明第二数据帧中的数据正确,两者不一致则说明第二数据帧中的数据不正确。
至少一些实施例中,在第二数据帧与第一数据帧中的当前帧帧号不一致时,可以继续判断第二数据帧中的当前帧帧号是否等于上述预定帧号(例如,上文的第一帧的帧号1),以确认对端设备是否在请求重新帧对齐。如果第二数据帧中的当前帧帧号等于预定帧号,确定下一第一数据帧为第一对齐帧,以便重新进行帧对齐。这里,帧对齐的具体过程可参考上文相关描述,不再赘述。
至少一些实施例中,在第二数据帧与第一数据帧中的当前帧帧号不一致时,如果第二数据帧中的当前帧帧号不等于预定帧号,则可以将下一第一数据帧中的当前帧帧号赋值为预定帧号(例如,上文的第一帧的帧号1),同时将下一第一数据帧中的状态标志赋值为预定的第三值(例如,上文图3、图4的示例中Byte6的bit0-3取值为2),第三值用于指示当前设备发出的指令与接收的数据不符,通过该第三值可以通知对端设备当前设备因接收到的数据与其发出的指令不相符而发起了帧对齐操作,以便及时纠错,确保SPI通信正常。
例如,当前设备接收对端设备的数据出现错误时(例如,当前设备解析来自对端设备的第二数据帧获得其中的数据和校验和值,通过计算这些数据中的检验和值,发现计算得到的检验和值和第二数据帧中的校验和值不一致,从而判定接收的数据出现错误),需要向对端设备重新请求该帧中的数据,可以把下一第一数据帧的状态指示位Byte6赋值为0x01(指示“接收数据异常”)、Byte3赋值为该帧的指令号(即帧号)、Byte4-5赋值为该帧的长度值,同时在下一次数据交互时告知MCU重新发送该帧的数据,这样,在数据错误的时候可以告知对端设备重新发送该帧的数据,避免数据遗漏或错误时而无法修复。表4示出一纠错示例,当前设备在向对端设备发送帧号为3的第一数据帧时同时接收帧号为3的第二数据帧,通过解析该帧号为3的第二数据帧中的字段Byte6发现接收到的数据错误,那么在帧号为4的第一数据帧中的Byte3~5中携带该第3帧的帧号和帧数据长度、将帧号为4的第一数据帧中的Byte6置为指示“接收数据异常”的值“0x01”,当前设备发出该帧号为4的第一数据帧给对端设备、同时接收对端设备返回的帧号为4的第二数据帧,对端设备收到上述帧号为4的第一数据帧后发现其中Byte3是帧号3,则准备帧号3的第二数据帧。在下一次数据交互中,当前设备向对端设备重新发送帧号为3的第一数据帧、同时对端设备向当前设备返回帧号为3的第二数据帧,这样,当前设备重新从对端设备获取到了发生错误的数据,实现了数据纠错。
当前设备 | 对端设备 | |
当前帧 | Byte0=3;Byte=4;Byte6=0 | Byte0=3;Byte=0 |
下一帧 | Byte0=4;Byte=3;Byte6=0x01 | Byte0=4;Byte=0 |
下下一帧 | Byte0=3;Byte=4;Byte6=0 | Byte0=3;Byte=0 |
下下一帧的下一帧 | Byte0=4;Byte=5;Byte6=0 | Byte0=4;Byte=0 |
表4
再例如,对端设备接收到的来自当前设备的数据和/或指令出现错误时(例如,对端设备解析来自当前设备的第一数据帧获得其中的数据和校验和值,通过计算这些数据中的检验和值,发现计算得到的检验和值和第一数据帧中的校验和值不一致,从而判定接收的数据和/或指令出现错误),需要向当前设备重新请求该帧中的数据和/或指令,可以把下一第二数据帧的状态指示位Byte6赋值为0x10(指示“接收指令数据异常”)、Byte3赋值为该帧的指令号(即帧号)、Byte4-5赋值为该帧的长度值,同时在下一次数据交互时告知当前设备重新发送该帧的指令和/或数据,这样,在对端设备接收到的指令和/或数据错误的时候可以告知当前设备重新发送该帧的指令和/或数据,避免指令或数据遗漏或错误而无法修复。表5示出一纠错示例,当前设备在向对端设备发送帧号为3的第一数据帧时对端设备发现其接收到的数据或指令错误,那么在帧号为4的第二数据帧中的Byte3~5中携带该第3帧的帧号和帧数据长度、将帧号为4的第二数据帧中的Byte6置为指示“接收指令数据异常”的值“0x10”,当前设备发出帧号为4的第一数据帧给对端设备、同时接收对端设备返回的该帧号为4的第二数据帧,当前设备收到上述帧号为4的第二数据帧后发现其中Byte3是帧号3,则在下一次数据交互中,当前设备重新向对端设备发送帧号为3的第一数据帧、同时对端设备向当前设备返回的帧号为3的第二数据帧,这样,对端设备重新向当前设备请求了发生指令或数据错误的第一数据帧,实现了数据纠错。
表5
假设当前设备是SoC、对端设备是MCU,图7示出了当前设备侧的SPI通信过程,该示例性通信过程可以包括如下步骤:
步骤S701,开始;
步骤S702,判断当前的同步次数(即帧对齐总数)是否小于预设的上限值M,是则继续步骤S703,否则继续步骤S717;
步骤S703,发送用于帧对齐的第一对齐帧并接收MCU发送的第二对齐帧;
步骤S704,判断第二对齐帧中的数据是否正确,是则继续步骤S705,否则返回步骤S702;
步骤S705,判断第二对齐帧中Byte0中的帧号和第一对齐帧中Byte0的帧号是否一致,是则继续步骤S706,否则返回步骤S702;
步骤S706,判断第二对齐帧中Byte6指示的MCU状态是否正常,是则继续步骤S707,否则返回步骤S702;
步骤S707,将Byte3的帧号赋值给Byte0,Byte4~5的长度赋值给Byte1~2,生成即将要发送的第一数据帧,等待;
步骤S708,当前设备发起用于控制当前设备与对端设备之间SPI通信的时钟,在该时钟的控制下发送上述第一数据帧,同时接收MCU返回的第二数据帧,该第二数据帧中的Byte0的帧号等于该第一数据帧Byte0的帧号、且其携带有对应该帧号的数据;
步骤S709,判断第二数据帧中的Byte0帧号是否与发出的第一数据帧中Byte0的帧号相一致,是则继续步骤S710,否则继续步骤S713;
步骤S710,判断第二数据帧中的数据是否正确,是则继续步骤S711,否则继续步骤S715;
步骤S711,判断第二数据帧中Byte6指示的MCU状态是否正常,是则继续步骤S712,否则继续步骤S716;
步骤S712,Byte6赋值为0x0、Byte3赋值为下一帧数据、Byte4~5赋值为下一帧的长度值,以生成即将要发送的下一第一数据帧,等待一段时间,返回步骤S707;
步骤S713,判断第二数据帧是否为第二对齐帧,是则返回步骤S702,否则继续步骤S714;
具体地,解析第二数据帧获得其Byte0字段中的帧号,如果帧号是1,则说明是第二对齐帧,如果帧号不是1,则说明该第二数据帧不是第二对齐帧。
步骤S714,Byte6赋值为0x02、Byte3赋值为上一帧帧号、Byte4~5赋值为上一帧的长度值,以生成即将要发送的下一第一数据帧,等待一段时间,继续步骤S707;
步骤S715,Byte6赋值为0x01、Byte3赋值为上一帧帧号、Byte4~5赋值为上一帧的长度值,以生成即将要发送的下一第一数据帧,等待一段时间,继续步骤S707;
步骤S716,Byte6赋值为0x0、Byte3赋值为上一帧帧号、Byte4~5赋值为上一帧的长度值,以生成即将要发送的下一第一数据帧,等待一段时间,继续步骤S707;
步骤S717,SoC向上层控制模块(例如,车身***中的AI芯片)上报SPI通信错误;
替换地,SoC也可以自己处理该SPI通信错误。
步骤S718,结束当前SPI通信。
图8示出了对端设备侧的SPI通信过程,该示例性通信过程可以包括如下步骤:
步骤S801,开始;
步骤S802,接收用于帧对齐的第一对齐帧并发送第二对齐帧;
步骤S803,判断第一对齐帧中的数据是否正确,是则继续步骤S804,否则返回步骤S802;
步骤S804,解析第一对齐帧中的Byte3~5,并按照该Byte3~5指示的帧号和帧长度来准备即将要发送的第二数据帧中的数据;
步骤S805,在当前设备发起的时钟控制下,接收来自SoC的第一数据帧,同时向SoC发送第二数据帧,该第二数据帧中包含步骤S804准备的数据;
步骤S806,判断来自SoC的第一数据帧中的指令和/或数据是否正确,是则继续步骤S807,否则继续步骤S808;
步骤S807,Byte6赋值为0x0、Byte3赋值为0、Byte4~5赋值为0,以生成即将要发送的下一第二数据帧,等待一段时间,继续步骤S805;
步骤S808,判断来自SoC的第一数据帧是否为第一对齐帧,也即第一数据帧中Byte0的取值是否为1,是则返回步骤S802,否则继续步骤S809;
步骤S809,Byte6赋值为0x10、Byte3赋值为上一帧帧号、Byte4~5赋值为上一帧的数据长度,以生成即将要发送的下一第二数据帧,等待一段时间,继续步骤S805。
第二实施例
在该第二实施例中,当前设备为从设备、对端设备为主设备。
第二实施例中的具体实现过程与上述第一实施例中的实现过程相同,所不同的是,第二实施例中的当前设备相当于第一实施例中的“对端设备”,“第一对齐帧”相当于第一实施例中的“第二对齐帧”、“第一数据帧”相当于第一中示例性方案中的“第二数据帧”,而第二实施例中的“对端设备”则相当于第一实施例中的“当前设备”,“第二对齐帧”相当于第一实施例中的“第一对齐帧”、“第二数据帧”相当于第一中示例性方案中的“第一数据帧”,具体过程不再赘述。
本实施例中,第二数据帧可以携带有如下信息中之一或其任意组合:当前帧帧号、当前帧数据长度、下一帧帧号、下一帧的数据长度、用于指示当前设备状态的状态标志、当前帧传输控制数据和/或帧数据、用于验证数据正确与否的校验码。
本实施例中,第二对齐帧可以携带有如下信息中之一或其任意组合:取值为预定帧号的当前帧帧号、下一帧帧号、下一帧的数据长度、用于指示当前设备状态的状态标志、当前帧传输控制数据和/或帧数据、用于验证数据正确与否的校验码。
本实施例中,第一数据帧可以携带有如下信息中之一或其任意组合:当前帧帧号、当前帧数据长度、用于指示所述对端设备状态的状态标志、对应当前帧帧号的数据、用于验证数据正确与否的校验码。
本实施例中,第一对齐帧可以携带有如下信息中之一或其任意组合:取值为预定帧号的当前帧帧号、当前帧数据长度、用于指示所述对端设备状态的状态标志、对应当前帧帧号的数据、用于验证数据正确与否的校验码。
本实施例中,在当前设备异常重启后,确定第一对齐帧中的数据,即准备第一对齐帧中的数据,以便在对端设备(即第一实施例中的“当前设备”,上文的“主设备”)发起的时钟信号的触发下向对端设备发送该第一对齐帧。
本实施例中,当来自对端设备的第二数据帧中的状态标志为上述的第三值时,确定第一对齐帧中的数据,即准备第一对齐帧所需的数据,以便在对端设备(即第一实施例中的“当前设备”,上文的“主设备”)发起的时钟信号的触发下向对端设备发送该第一对齐帧。
本实施例中,当来自对端设备的第二数据帧中包括下一帧帧号且第二数据帧中的状态标志为预定的第一值时,确定对应下一帧帧号的数据,即准备对应下一帧帧号的数据,生成当前帧号为下一帧帧号的第一数据帧,以便在对端设备发起的时钟信号的触发下向对端设备发送该第一数据帧。
本实施例中,当来自对端设备的第二数据帧中包括上一帧帧号且第二数据帧中的状态标志为预定的第二值(例如,上文的Byte6=0x01)时,确定对应该上一帧帧号的数据,即准备对应该上一帧帧号的数据,生成当前帧号为上一帧帧号的第一数据帧,以便在对端设备发起的时钟信号的触发下向对端设备发送该第一数据帧。
本实施例中,验证第二数据帧中的数据是否正确;判断第二数据帧的当前帧帧号是否等于预定帧号(例如,上文的第一帧的帧号1)。在第二数据帧中的数据错误且第二数据帧中的当前帧帧号是预定帧号时,确定第一对齐帧中的数据,即准备第一对齐帧所需的数据,生成第一对齐帧,以便在对端设备发起的时钟信号的触发下向对端设备发送该第一对齐帧。在第二数据帧中的数据错误且第二数据帧中的当前帧帧号不是第二对齐帧时,确定对应下一帧帧号的数据(即准备或者收集对应下一帧帧号的数据),同时在下一第一数据帧中携带当前帧帧号,并设置下一第一数据帧中的状态标志为预定的第四值(例如,上文的Byte6=0x10),该第四值可以用于指示当前设备接收数据异常。
本申请实施例的上述方法可以取得如下技术效果:1.实现了SPI的全双工通信,比之前的SPI半双工的方案,节省了SoC和MCU的等待时间,提高了效率;2.节省了硬件的IO口,使得SoC减少了不必要的IO口中断触发;3.可调整的数据个数传输,优化SPI总线的使用率;4.传输标准统一化,方便后续SoC和MCU关于SPI总线协议的开发。
示例性装置
图9是本公开一实施例中基于SPI的通信装置的结构示意图。如图9所示,本公开一实施例中基于SPI的通信装置可以包括:
接收单元91,配置为接收来自对端设备的第二对齐帧,以进行帧对齐;以及,接收来自所述对端设备的第二数据帧;
发送单元92,配置为在所述接收单元接收所述第二对齐帧的同时向对端设备发送第一对齐帧,以进行所述帧对齐;以及,在所述接收单元接收所述第二数据帧的同时向所述对端设备发送第一数据帧;
解析单元93,配置为解析所述第二数据帧。
图9所示的基于SPI的通信装置所属设备是主设备时可通过如下第一实施例实现,图9所示的基于SPI的通信装置所属设备是从设备时可通过如下第二实施例来实现。
第一实施例
第一数据帧可以携带有如下信息中之一或其任意组合:当前帧帧号、当前帧数据长度、下一帧帧号、下一帧的数据长度、用于指示当前设备状态的状态标志、当前帧传输控制数据和/或帧数据、用于验证数据正确与否的校验码;和/或,
第一对齐帧可以携带有如下信息中之一或其任意组合:取值为预定帧号的当前帧帧号、下一帧帧号、下一帧的数据长度、用于指示当前设备状态的状态标志、当前帧传输控制数据和/或帧数据、用于验证数据正确与否的校验码;和/或,
第二数据帧可以携带有如下信息中之一或其任意组合:当前帧帧号、当前帧数据长度、用于指示所述对端设备状态的状态标志、对应当前帧帧号的数据、用于验证数据正确与否的校验码;和/或,
第二对齐帧可以携带有如下信息中之一或其任意组合:取值为预定帧号的当前帧帧号、当前帧数据长度、用于指示所述对端设备状态的状态标志、对应当前帧帧号的数据、用于验证数据正确与否的校验码。
一些示例中,上述基于SPI的通信装置还可包括:帧对齐判定单元,配置为判断帧对齐是否成功,并在帧对齐成功时通知发送单元92可以开始第一数据帧与第二数据帧的传送。
一些示例中,帧对齐判定单元,具体可配置为通过如下之一或两项来判断帧对齐是否成功:验证所述第二对齐帧中的数据是否正确;判断所述第一对齐帧与所述第二对齐帧中的当前帧帧号是否一致。
一些示例中,上述帧对齐单元,还可配置为根据第二对齐帧中的状态标志判断所述对端设备的状态是否正常,并且在对端设备的状态正常时通知发送单元92向对端设备发送第一数据帧。
一些示例中,发送单元92还可配置为在当前设备异常重启后向对端设备发送第一对齐帧以重新进行帧对齐。
一些示例中,上述基于SPI的通信装置还可包括:数据帧判定单元,配置为验证目标数据是否接收成功,该目标数据通过解析单元93解析第二数据帧得到,并与第一数据帧中的当前帧帧号相对应。
一些示例中,上述基于SPI的通信装置还可包括:帧生成单元。上述数据帧判定单元,还可配置为在目标数据接收成功时,根据所述第二数据帧中的状态标志,确定所述对端设备的当前状态是否正常,并在确定对端设备的状态正常时通知帧生成单元;帧生成单元,可配置为在所述数据帧判定单元确定对端设备的当前状态正常时,执行如下之一的操作:1)将下一第一数据帧中的当前帧帧号赋值为当前第一数据帧中的下一帧帧号,将所述下一第一数据帧中的下一帧帧号赋值为当前第一数据帧中下一帧帧号的下一帧号,同时设置所述下一第一数据帧中的状态标志为预定的第一值,所述第一值表示当前设备正常;2)将下一第一数据帧中的当前帧帧号赋值为所述第二数据帧中携带的上一帧帧号,同时将所述下一第一数据帧中的状态标志设置为所述第一值。
一些示例中,上述数据帧判定单元配置为验证目标数据是否接收成功,可以包括:判断所述第二数据帧与所述第一数据帧中的当前帧帧号是否一致;以及,验证所述第二数据帧中的数据是否正确;在所述第二数据帧与所述第一数据帧中的当前帧帧号一致且所述第二数据帧中的数据正确时,所述目标数据接收成功;在所述第二数据帧与所述第一数据帧中的当前帧帧号一致而所述第二数据帧中的数据错误时,所述目标数据接收失败。
一些示例中,上述数据帧判定单元还可配置为在确定目标数据接收失败时通知所述帧生成单元,所述帧生成单元还可配置为在目标数据接收失败时,将下一第一数据帧中的下一帧帧号赋值为当前第一数据帧中的当前帧帧号,同时将所述下一第一数据帧中的状态标志设置为预定的第二值,所述第二值用于指示当前设备接收数据异常。
一些示例中,上述数据帧判定单元还可配置为在所述第二数据帧与所述第一数据帧中的当前帧帧号不一致时,继续判断所述第二数据帧中的当前帧帧号是否等于所述预定帧号,并通知所述帧生成单元。帧生成单元还可配置为在所述数据帧判定单元的通知表示所述第二数据帧中的当前帧帧号等于所述预定帧号时,确定下一第一数据帧为所述第一对齐帧;以及,在所述数据帧判定单元的通知表示所述第二数据帧中的当前帧帧号不等于所述预定帧号,将下一第一数据帧中的当前帧帧号赋值为所述预定帧号,同时将所述下一第一数据帧中的状态标志赋值为预定的第三值,所述第三值用于指示当前设备发出的指令与接收的数据不符。
第二实施例
第二数据帧可以携带有如下信息中之一或其任意组合:当前帧帧号、当前帧数据长度、下一帧帧号、下一帧的数据长度、用于指示当前设备状态的状态标志、当前帧传输控制数据和/或帧数据、用于验证数据正确与否的校验码;和/或,
第二对齐帧可以携带有如下信息中之一或其任意组合:取值为预定帧号的当前帧帧号、下一帧帧号、下一帧的数据长度、用于指示当前设备状态的状态标志、当前帧传输控制数据和/或帧数据、用于验证数据正确与否的校验码;和/或,
第一数据帧可以携带有如下信息中之一或其任意组合:当前帧帧号、当前帧数据长度、用于指示所述对端设备状态的状态标志、对应当前帧帧号的数据、用于验证数据正确与否的校验码;和/或,
第一对齐帧可以携带有如下信息中之一或其任意组合:取值为预定帧号的当前帧帧号、当前帧数据长度、用于指示所述对端设备状态的状态标志、对应当前帧帧号的数据、用于验证数据正确与否的校验码。
一些示例中,上述帧生成单元还可配置为执行如下之一或多项:1)在当前设备异常重启后,确定第一对齐帧中的数据;2)当所述第二数据帧中的状态标志为预定的第三值,所述第三值用于指示对端设备发出的指令与接收的数据不符时,确定所述第一对齐帧中的数据;3)在所述第二数据帧中包括下一帧帧号且所述第二数据帧中的状态标志为预定的第一值时,确定对应所述下一帧帧号的数据;4)在所述第二数据帧中包括上一帧帧号且所述第二数据帧中的状态标志为预定的第二值时,确定对应所述上一帧帧号的数据。
一些示例中,上述数据帧判定单元还可配置为验证所述第二数据帧中的数据是否正确;和/或,判断所述第二数据帧的当前帧帧号是否等于所述预定帧号,并通知所述帧生成单元;帧生成单元,还可配置为在第二数据帧中的数据错误且第二数据帧中的当前帧帧号是所述预定帧号时,确定第一对齐帧中的数据;和/或,在第二数据帧中的数据错误且第二数据帧中的当前帧帧号不是第二对齐帧时,确定对应下一帧帧号的数据,同时在下一第一数据帧中携带当前帧帧号,并设置下一第一数据帧中的状态标志为预定的第四值,该第四值可用于指示当前设备接收数据异常。
需要说明的是,本申请实施例中基于SPI的通信装置可以通过软件、硬件或两者的结合来实现。
示例性电子设备
图10图示了根据本申请实施例的电子设备10的框图。
如图10所示,电子设备10可以包括一个或多个处理器101和存储器102。
处理器131可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备10中的其他组件以执行期望的功能。
存储器102可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器101可以运行所述程序指令,以实现上文所述的本申请的各个实施例的确定物体朝向的方法以及/或者其他期望的功能。
在一个示例中,电子设备10还可以包括:输入装置103和输出装置104,这些组件通过总线***和/或其他形式的连接机构(未示出)互连。例如,该输入装置133可以是麦克风或麦克风阵列。此外,该输入设备103还可以包括例如键盘、鼠标等等。该输出装置104可以向外部输出各种信息。该输出设备134可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
当然,为了简化,图10中仅示出了该电子设备10中与本申请有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备10还可以包括任何其他适当的组件。
示例性计算机程序产品和计算机可读存储介质
除了上述方法和设备以外,本申请的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本申请各种实施例的基于SPI的通信方法中的步骤。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本申请实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本申请的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本申请各种实施例的基于SPI的通信方法中的步骤。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
以上结合具体实施例描述了本申请的基本原理,但是,需要指出的是,在本申请中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本申请的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本申请为必须采用上述具体的细节来实现。
本申请中涉及的器件、装置、设备、***的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、***。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
还需要指出的是,在本申请的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本申请的等效方案。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本申请。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本申请的范围。因此,本申请不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本申请的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。
Claims (10)
1.一种基于串行外设接口的通信方法,包括:
向对端设备发送第一对齐帧,同时接收来自所述对端设备的第二对齐帧,以进行帧对齐;
当所述帧对齐成功时,向对端设备发送第一数据帧,同时接收来自所述对端设备的第二数据帧;
解析所述第二数据帧。
2.如权利要求1所述的方法,其中,
所述第一数据帧至少携带有如下信息中之一:当前帧帧号、当前帧数据长度、下一帧帧号、下一帧的数据长度、用于指示当前设备状态的状态标志、当前帧传输控制数据和/或帧数据、用于验证数据正确与否的校验码;和/或,
所述第一对齐帧至少携带有如下信息中之一:取值为预定帧号的当前帧帧号、下一帧帧号、下一帧的数据长度、用于指示当前设备状态的状态标志、当前帧传输控制数据和/或帧数据、用于验证数据正确与否的校验码;和/或,
所述第二数据帧至少携带如下信息中之一:当前帧帧号、当前帧数据长度、用于指示所述对端设备状态的状态标志、对应当前帧帧号的数据、用于验证数据正确与否的校验码;和/或,
所述第二对齐帧至少携带有如下信息中之一:取值为预定帧号的当前帧帧号、当前帧数据长度、用于指示所述对端设备状态的状态标志、对应当前帧帧号的数据、用于验证数据正确与否的校验码。
3.如权利要求2所述的方法,向所述对端设备发送第一数据帧之前,还包括:判断所述帧对齐是否成功,以便在所述帧对齐成功时开始所述第一数据帧与所述第二数据帧的传送。
4.如权利要求1所述的方法,还包括:根据所述第二对齐帧中的状态标志,判断所述对端设备的状态是否正常,并且在所述对端设备的状态正常时执行向对端设备发送第一数据帧的步骤。
5.如权利要求1或2所述的方法,还包括:在当前设备异常重启后,向所述对端设备发送第一对齐帧以重新进行帧对齐。
6.如权利要求1所述的方法,解析所述第二数据帧后,还包括:验证目标数据是否接收成功,所述目标数据通过解析所述第二数据帧得到,并与所述第一数据帧中的当前帧帧号相对应。
7.如权利要求1所述的方法,其中,
所述第二数据帧至少携带有如下信息中之一:当前帧帧号、当前帧数据长度、下一帧帧号、下一帧的数据长度、用于指示当前设备状态的状态标志、当前帧传输控制数据和/或帧数据、用于验证数据正确与否的校验码;和/或,
所述第二对齐帧至少携带有如下信息中之一:取值为预定帧号的当前帧帧号、下一帧帧号、下一帧的数据长度、用于指示当前设备状态的状态标志、当前帧传输控制数据和/或帧数据、用于验证数据正确与否的校验码;和/或,
所述第一数据帧至少携带如下信息中之一:当前帧帧号、当前帧数据长度、用于指示所述对端设备状态的状态标志、对应当前帧帧号的数据、用于验证数据正确与否的校验码;和/或,
所述第一对齐帧至少携带有如下信息中之一:取值为预定帧号的当前帧帧号、当前帧数据长度、用于指示所述对端设备状态的状态标志、对应当前帧帧号的数据、用于验证数据正确与否的校验码。
8.一种基于串行外设接口的通信装置,包括:
接收单元,配置为接收来自对端设备的第二对齐帧,以进行帧对齐;以及,接收来自所述对端设备的第二数据帧;
发送单元,配置为在所述接收单元接收所述第二对齐帧的同时向对端设备发送第一对齐帧,以进行所述帧对齐;以及,在所述接收单元接收所述第二数据帧的同时向所述对端设备发送第一数据帧;
解析单元,配置为解析所述第二数据帧。
9.一种电子设备,包括:
一个或多个处理器;以及
存储器,存储有计算机程序,所述计算机程序在被所述处理器运行时使所述处理器执行根据权利要求1至7中任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序在被处理器运行时使得所述处理器执行如权利要求1至7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110002599.2A CN112822002B (zh) | 2021-01-04 | 2021-01-04 | 基于spi的通信方法及装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110002599.2A CN112822002B (zh) | 2021-01-04 | 2021-01-04 | 基于spi的通信方法及装置、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112822002A true CN112822002A (zh) | 2021-05-18 |
CN112822002B CN112822002B (zh) | 2023-07-21 |
Family
ID=75856925
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110002599.2A Active CN112822002B (zh) | 2021-01-04 | 2021-01-04 | 基于spi的通信方法及装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112822002B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113688094A (zh) * | 2021-08-24 | 2021-11-23 | 中汽创智科技有限公司 | 一种车机***的数据通信方法、装置、***及存储介质 |
CN116032733A (zh) * | 2022-11-29 | 2023-04-28 | 合众新能源汽车股份有限公司 | 基于智能中控***车控通信的方法、装置、设备及介质 |
CN116032733B (zh) * | 2022-11-29 | 2024-08-27 | 合众新能源汽车股份有限公司 | 基于智能中控***车控通信的方法、装置、设备及介质 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1851682A (zh) * | 2006-03-28 | 2006-10-25 | 华为技术有限公司 | 一种串行外设接口的实现方法 |
CN101119224A (zh) * | 2006-08-01 | 2008-02-06 | 上海未来宽带技术及应用工程研究中心有限公司 | 基于atca机架的fru调试和测试装置 |
CN102819512A (zh) * | 2012-06-28 | 2012-12-12 | 惠州市德赛西威汽车电子有限公司 | 一种基于spi的全双工通信装置及其方法 |
CN104836927A (zh) * | 2015-02-10 | 2015-08-12 | 数据通信科学技术研究所 | 一种语音同步方法和终端 |
CN105208467A (zh) * | 2015-08-20 | 2015-12-30 | 电子科技大学 | 宽带接入网***的帧对齐装置 |
CN107562666A (zh) * | 2017-09-26 | 2018-01-09 | 威创集团股份有限公司 | 基于spi总线的设备间通信的方法、***及相关装置 |
CN109787703A (zh) * | 2019-02-28 | 2019-05-21 | 烽火通信科技股份有限公司 | 一种时间戳的修正方法、时钟同步方法及*** |
CN109902053A (zh) * | 2017-12-07 | 2019-06-18 | 厦门雅迅网络股份有限公司 | 一种基于双控制器的spi通信方法、终端设备及存储介质 |
CN110311875A (zh) * | 2018-03-20 | 2019-10-08 | 华为技术有限公司 | 一种数据传输方法及装置 |
CN110334046A (zh) * | 2019-07-11 | 2019-10-15 | 南方电网科学研究院有限责任公司 | 一种spi全双工的通信方法、装置及*** |
US10467007B1 (en) * | 2017-08-08 | 2019-11-05 | Bae Systems Information And Electronic Systems Integration Inc. | Core for controlling multiple serial peripheral interfaces (SPI's) |
CN110463135A (zh) * | 2017-03-31 | 2019-11-15 | 华为技术有限公司 | 全双工传输方法及装置 |
CN111130710A (zh) * | 2019-12-10 | 2020-05-08 | 常州新途软件有限公司 | 一种基于spi的双工通信方法 |
-
2021
- 2021-01-04 CN CN202110002599.2A patent/CN112822002B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1851682A (zh) * | 2006-03-28 | 2006-10-25 | 华为技术有限公司 | 一种串行外设接口的实现方法 |
CN101119224A (zh) * | 2006-08-01 | 2008-02-06 | 上海未来宽带技术及应用工程研究中心有限公司 | 基于atca机架的fru调试和测试装置 |
CN102819512A (zh) * | 2012-06-28 | 2012-12-12 | 惠州市德赛西威汽车电子有限公司 | 一种基于spi的全双工通信装置及其方法 |
CN104836927A (zh) * | 2015-02-10 | 2015-08-12 | 数据通信科学技术研究所 | 一种语音同步方法和终端 |
CN105208467A (zh) * | 2015-08-20 | 2015-12-30 | 电子科技大学 | 宽带接入网***的帧对齐装置 |
CN110463135A (zh) * | 2017-03-31 | 2019-11-15 | 华为技术有限公司 | 全双工传输方法及装置 |
US10467007B1 (en) * | 2017-08-08 | 2019-11-05 | Bae Systems Information And Electronic Systems Integration Inc. | Core for controlling multiple serial peripheral interfaces (SPI's) |
CN107562666A (zh) * | 2017-09-26 | 2018-01-09 | 威创集团股份有限公司 | 基于spi总线的设备间通信的方法、***及相关装置 |
CN109902053A (zh) * | 2017-12-07 | 2019-06-18 | 厦门雅迅网络股份有限公司 | 一种基于双控制器的spi通信方法、终端设备及存储介质 |
CN110311875A (zh) * | 2018-03-20 | 2019-10-08 | 华为技术有限公司 | 一种数据传输方法及装置 |
CN109787703A (zh) * | 2019-02-28 | 2019-05-21 | 烽火通信科技股份有限公司 | 一种时间戳的修正方法、时钟同步方法及*** |
CN110334046A (zh) * | 2019-07-11 | 2019-10-15 | 南方电网科学研究院有限责任公司 | 一种spi全双工的通信方法、装置及*** |
CN111130710A (zh) * | 2019-12-10 | 2020-05-08 | 常州新途软件有限公司 | 一种基于spi的双工通信方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113688094A (zh) * | 2021-08-24 | 2021-11-23 | 中汽创智科技有限公司 | 一种车机***的数据通信方法、装置、***及存储介质 |
CN113688094B (zh) * | 2021-08-24 | 2024-03-22 | 中汽创智科技有限公司 | 一种车机***的数据通信方法、装置、***及存储介质 |
CN116032733A (zh) * | 2022-11-29 | 2023-04-28 | 合众新能源汽车股份有限公司 | 基于智能中控***车控通信的方法、装置、设备及介质 |
CN116032733B (zh) * | 2022-11-29 | 2024-08-27 | 合众新能源汽车股份有限公司 | 基于智能中控***车控通信的方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112822002B (zh) | 2023-07-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8892714B2 (en) | Managing inventory data for components of a server system | |
TWI602122B (zh) | 韌體更新方法 | |
WO2011137640A1 (zh) | 文件传输方法、文件发送装置和文件接收装置 | |
US20130003751A1 (en) | Method and system for exponential back-off on retransmission | |
CN109450912B (zh) | 数据传输方法、装置和设备 | |
CN111752579B (zh) | 蓝牙终端升级方法、装置、存储介质与电子设备 | |
WO2023124098A1 (zh) | 用于在ieee 802.15.4网络中生成和发送应答帧的方法及通信装置 | |
CN112822002A (zh) | 基于spi的通信方法及装置、电子设备和存储介质 | |
CN112423321A (zh) | 一种基于无线广播的升级方法和装置及电子设备 | |
US7783964B2 (en) | Redundant 3-wire communication system and method | |
US6977901B2 (en) | Packet transmission/reception processor | |
JP2009244991A (ja) | データ通信方法、データ通信システム、電子制御ユニット、及び回路基板 | |
US20210014006A1 (en) | System and method for implementing a hybrid automatic repeat request process | |
US10101987B2 (en) | Method and system of processing an image upgrade | |
CN116204214A (zh) | Bmc升级方法、装置、***、电子设备及存储介质 | |
US9621339B1 (en) | Host devices and data transmission methods | |
CN107665123B (zh) | 固件更新方法 | |
CN112511636B (zh) | 数据传输***、方法、装置、计算机设备及存储介质 | |
JP6110415B2 (ja) | 通信装置及び通信方法 | |
CN108075860B (zh) | 与听力装置进行数据传输的方法和装置 | |
CN117076371B (zh) | 一种多机数据传输方法、装置、存储介质及电子设备 | |
WO2024161803A1 (ja) | 端末装置、通信システムおよび端末装置の通信アドレス設定方法 | |
CN112363962A (zh) | 数据通信方法、***、电子设备及计算机存储介质 | |
CN111666089B (zh) | 电子设备的固件更新方法、芯片、电子设备及存储介质 | |
CN117411593A (zh) | Usb3.1主机降速桥的协议层包传输序列处理***、方法及介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |