基于SPI通信的数据写入方法、电子终端及存储介质与流程

文档序号:33459916发布日期:2023-03-15 03:28阅读:28来源:国知局
基于SPI通信的数据写入方法、电子终端及存储介质与流程
基于spi通信的数据写入方法、电子终端及存储介质
技术领域
1.本技术涉及主从设备通信技术领域,特别是涉及基于spi通信的数据写入方法、电子终端及存储介质。


背景技术:

2.串行外设接口(serial peripheral,spi)是一种4线高速的、高效率的串行接口技术,且具备简单易用的优点,因此已在通信领域被广泛使用,且越来越多的芯片集成了这种通信协议。
3.在spi的通信过程中,由于主机和从机之间存在通信时钟频率差异以及管脚传输的延迟,容易导致数据在传输过程中因未能正确写入fifo中从而丢失的现象,影响了主机从机的通信质量。


技术实现要素:

4.本技术主要解决的技术问题是提供基于spi通信的数据写入方法、电子终端及存储介质,可以有效减少数据在传输过程中不能正确写入而出现的丢失情况,进而改善通信系统的可靠性。
5.为解决上述技术问题,本技术采用的第一个技术方案是:提供一种基于spi通信的数据写入方法。该方法包括:通过spi接口接收主机传输的当前预设字节数据;基于与当前预设字节数据对应的数据接收标志位和fifo存储器的非空标志位判断fifo存储器的写使能是否有效;若fifo存储器的写使能有效,则将当前预设字节数据写入fifo存储器。
6.为解决上述技术问题,本技术采用的第二个技术方案是:提供一种电子终端。该电子终端包括处理器、耦接处理器的spi接口、耦接处理器的存储器以及耦接处理器的fifo存储器,存储器存储有计算机程序,处理器用于执行计算机程序以实现第一个技术方案的数据写入方法。
7.为解决上述技术问题,本技术采用的第三个技术方案是:提供一种计算机可读的存储介质。该计算机可读的存储介质存储有计算机程序,计算机程序能够被处理器执行以实现第一个技术方案的数据写入方法。
8.本技术的有益效果是:区别于现有技术的情况,本技术可以通过设置数据接收标志位以及fifo存储器非空标志位两个条件来综合判断fifo存储器写使能是否有效,以能够提升fifo存储器的写使能判断的精确性,减少因写使能判断出错而导致数据写入失败的情况,而且综合上述两个条件可以有效对应到更多的数据传输过程中出现的场景,进而针对不同的场景优化写使能的判断,从而有效减少主机和从机通过spi接口传输数据过程中不能正确写入而出现的丢失情况,进而改善通信系统的可靠性以及鲁棒性。
附图说明
9.图1是本技术通信系统实施例的结构示意框图;
10.图2是本技术基于spi通信的数据写入方法一实施例的流程示意图;
11.图3是本技术基于spi通信的数据写入方法另一实施例的流程示意图;
12.图4是本技术电子终端实施例的结构示意框图;
13.图5是本技术计算机可读的存储介质实施例的结构示意框图。
具体实施方式
14.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本技术的一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
15.在spi的通信过程中,由于主机和从机之间存在通信时钟频率差异以及管脚传输的延迟,容易导致数据在传输过程中因未能正确写入fifo(first in first out)存储器中从而丢失的现象。若一个或多个数据在传输过程中丢失,可能会导致传输的数据整体出现错码的现象。循环冗余校验(cyclic redundancy check,crc)是一种在通信过程中用于对传输或保存的数据信息可能存在的错误进行检测、校核的方法,若数据丢失导致数据错码,有可能导致主机和从机之间传输的数据发生冗余校验错误的现象,影响了通信质量。为改善或解决上述技术问题,本技术提出至少如下实施例。
16.如图1所示,本技术通信系统实时例描述的通信系统100包括主机101和从机102。主机101和从机102通过spi接口连接。可选地,主机101和从机102可以是设备,也可以是模块等。spi接口是一种4线高速的、高效率的串行接口技术,连接主机101和从机102的4根线分别是串行时钟信号(serial clock,sck)、主发从收信号(master output slave input,mosi)、主收从发信号(master input slave output,miso)以及片选信号(slave select,nss)。其中sck由主机101产生,后由主机101发送至从机102。mosi用于作为主机输出/从机输入引脚,用于主机101在主模式下发送数据,在从模式下接收数据。miso作为主机输入/从机输出引脚,用于主机101在从模式下发送数据,在主模式下接收数据。nss由主机101控制,用来作为“片选引脚”,也就是选择指定的从机102,让主机101可以单独地与从设备通讯,避免数据线上的冲突。spi接口主要以主从方式工作,因此通常由一个主机101和一个或多个从机102组成,主机101选择一个从机102进行同步通信,从而完成数据的交换。主机101与从机102之间的通信可以是双向的,也可以是单向的。
17.如图2所示,本基于spi通信的数据写入方法实施例至少包括以下步骤:
18.s100:通过spi接口接收主机传输的当前预设字节数据。
19.在spi的通信过程中,主机和从机之间可以相互传输数据。例如,主机可以向从机单向传输数据,具体地,主机可以用于发送数据至从机,从机可以用于接收主机发送的数据。可选地,主机先向从机中的fifo存储器发送数据,再将数据从fifo存储器中读出并传输至存储器。因为主机和从机具有两个时钟,当数据信号在这两个时钟域之间传输时很容易引起亚稳态现象。使用fifo存储器可以实现在发送时钟域内将数据写入,在接收时钟域内将数据读出,从而有效减少亚稳态现象的出现,实现跨时钟域的数据传输。可选地,fifo存储器可以是同步的,也可以是异步的。其中,每次数据传输都会向fifo存储器中传输预设字节数据,预设字节数据可以是1字节数据,可以是2字节数据,甚至可以是更多字节数据。当
然,预设字节数据也可以是一位(1比特)数据、两位数据,甚至是多位数据。可选地,接收当前预设字节数据的可以为内存缓冲区。
20.s200:基于与当前预设字节数据对应的数据接收标志位和fifo存储器的非空标志位判断fifo存储器的写使能是否有效。
21.每次接收完当前预设字节数据后,想要将当前预设字节数据写入fifo存储器中,需要满足fifo存储器的写使能有效,因此在数据传输后需要先对fifo存储器的写使能是否有效进行判断。写使能是用于指示可以写入,fifo存储器的写使能有效是指可以将数据写入fifo存储器,因此通过判断fifo存储器的写使能是否有效即可以判断此时fifo存储器是否可以写入当前预设字节数据。判断fifo存储器的写使能是否有效的方式例如可以包括判断是否成功接收到当前预设字节数据,例如还可以包括判断fifo存储器的存储情况。其中,当对是否成功接收到当前预设字节数据进行判断时,可以将结果对应数据接收标志位;当对fifo存储器的存储空间进行判断时,可以将结果对应fifo存储器的非空标志位。通过对数据接收标志位和fifo存储器的非空标志位进行判断即可以判断出fifo存储器的写使能是否有效。
22.s300:若fifo存储器的写使能有效,则将当前预设字节数据写入fifo存储器。
23.当判定fifo存储器的写使能有效时,可以认为此时可以将当前预设字节数据写进fifo存储器中,因此可以进行写入操作。
24.通过设置预设字节数据接收标志位以及fifo存储器非空标志位两个条件来判断fifo存储器写使能是否有效。只有当两个条件同时成立时才能判定fifo存储器写使能有效即才能进行数据的写入,因此可以有效对应到更多的数据传输过程中出现的场景,可以有效增加判断的准确性,从而有效减少数据在传输过程中不能正确写入而出现的丢失情况,进而改善通信系统的可靠性。
25.如图3所示,通过对数据接收标志位和fifo存储器的非空标志位进行判断来判断出fifo的写使能是否有效的方式,即步骤s200可以包括至少以下步骤:
26.s210:判断数据接收标志位是否为第一标志位。
27.数据接收标志位用于指示当前预设字节数据的接收情况,通过对数据接收标志位进行判断可以对是否成功接收到当前预设字节数据进行判断。在进行判断之前,应明确标志位的1和0是两种相对的情况,1和0所对应的具体状态可根据不同的情况设定为对应不同的状态。例如将1对应成功接收到当前预设字节数据,将0对应未成功接收到当前预设字节数据。第一标志位用于标识数据已接收完成,例如可以为1。因此可以通过判断接收完数据接收标志位是否为1来判断是否成功接收到当前预设字节数据。
28.通过检测是否成功接收到当前预设字节数据来控制数据接收标志位,用于检测的例如可以为状态机。当检测到对应的存储位置内已成功接收当前预设字节数据即已存储有当前预设字节数据,例如状态机检测到内存缓冲区成功接收到当前预设字节数据时,会控制数据接收标志位为1,即指示此时数据已接收完成,未出现丢失。当检测到对应的存储位置未成功接收当前预设字节数据即未存储有当前预设字节数据,例如状态机检测到内存缓冲区中未接收当前预设字节数据时,会控制数据接收标志位为0,即指示此时数据未接收完成,可能出现丢失,或者数据可能仍未从主机中传输出来。因此,当判定数据接收标志位为1时,即数据接收标志位为第一标志位时,可以认为当前预设字节数据已经成功接收。当判定
数据接收标志位为0时,即数据接收标志位不为第一标志位时,可以认为当前预设字节数据未成功接收。通过对数据接收标志位是否为第一标志位进行判断,可以有效了解当前预设字节数据是否成功接收的实际情况。
29.数据接收标志位可以用于反映当前预设字节数据的接收状态,控制数据接收标志位的方法例如可以为通过信号控制,即步骤s210可以包括至少以下步骤:
30.s211:确定置位输入信号和清零输入信号的信号状态。
31.数据接收标志位由输入信号控制,例如可以由置位输入信号控制,例如还可以由置位输入信号和清零输入信号共同控制。其中,置位输入信号用来指示将数据接收标志位置1,清零输入信号用来指示将数据接收标志位置0。通过控制置位输入信号和清零输入信号的信号状态可以控制数据接收标志位。因此,通过确定置位输入信号和清零输入信号的信号状态可以确定数据接收标志位。
32.s212:在第一时钟域内将置位输入信号配置为高电平信号,且清零输入信号配置为低电平信号。
33.在数据传输中,信号状态例如电平信号可以用于表示逻辑1和逻辑0,例如高电平信号可以用于表示逻辑1,低电平信号可以用于表示逻辑0。通过控制置位输入信号置1来指示将数据接收标志位置1,可以将置位输入信号配置为高电平信号。通过控制清零输入信号置1来指示将数据接收标志位置0,可以将清零输入信号配置为高电平信号。当检测到成功接收到当前预设字节数据,应该将数据接收标志位置1,在做出该判断后就会在第一时钟域内将置位输入信号置1,即对应的在第一时钟域内将置位输入信号配置为高电平信号来实现。而此时不控制清零输入信号,所以清零输入信号仍保持为低电平状态。其中,第一时钟为接口时钟。
34.s213:若置位输入信号为高电平信号,且清零输入信号为低电平信号时,判定数据接收标志位为第一标志位。
35.当对信号状态例如电平信号进行检测时,若检测到置位输入信号为高电平信号,且清零输入信号为低电平信号,即将置位输入信号置1,将清零输入信号置0,此时可以判定数据接收标志位为第一标志位,即判定数据接收标志位为1。
36.通过设置置位输入信号和清零输入信号可以根据数据接收的实际情况来控制数据接收标志位,从而便于用户实时了解到数据接收情况,以便及时解决传输过程中出现的异常等问题。
37.s214:在第二时钟域内使用数据接收标志位,以判断数据接收标志位是否为第一标志位。
38.判定数据接收标志位为1后,要将数据接收标志位同步至第二时钟域进行使用。其中,第二时钟域不同于第一时钟域,第二时钟为主线时钟。在第二时钟域内,通过判断该数据接收标志位是否为第一标志位,即数据接收标志位是否为1来判断当前预设字节数据是否已成功接收。如果在第二时钟域内,数据接收标志位为1,可以认为当前预设字节数据已经成功接收,即数据已经准备好可以用于写进fifo存储器,因此满足判定写使能有效的其中一个条件。
39.判断fifo存储器的写使能是否有效的另一个条件是对非空标志位进行判断,即步骤s200可以包括至少以下步骤:
40.s220:判断非空标志位是否为第二标志位。
41.对非空标志位进行判断可以认为是对当前fifo存储器的存储情况进行判断,非空标志位用于指示当前fifo存储器为非空状态。例如将1对应fifo存储器的非空状态,将0对应fifo存储器的空状态。第二标志位用于标识fifo存储器为非空状态。例如可以为1。因此可以通过判断非空标志位是否为1来判断当前fifo存储器的存储情况以及是否成功接收到前一预设字节数据。
42.通过检测fifo存储器中是否存在数据来控制非空标志位,用于检测的例如可以为状态机。当检测到fifo存储器中存在数据时,会控制数据接收标志位为1,即指示此时fifo存储器非空。当检测到fifo存储器中不存在数据时,会控制数据接收标志位为0,即指示此时fifo存储器为空。因此,当判定非空标志位为1时,即非空标志位为第二标志位时,可以认为fifo存储器中存在数据。当判定非空标志位为0时,即数据接收标志位不为第二标志位时,可以认为fifo存储器中不存在数据。
43.对非空标志位进行判断也可以认为是对是否成功接收到前一预设字节数据进行判断。当判定非空标志位为0时,即fifo存储器为空的时候,fifo存储器可能存在写空以及读空两种情况,写空对应说明前一传输的预设字节数据未成功传输至fifo存储器中,读空对应说明当前传输的预设字节数据已经被读出fifo存储器。由于无法将fifo存储器的存储情况具体对应为上述哪一种情况,因此不能确定前一预设字节数据已经成功传输至fifo中。对应地,当判定非空标志位为1时,即数据接收标志位为第二标志位时,可以认为fifo存储器中成功接收到前一预设字节数据,因此自接收预设字节数据至写入至fifo存储器的过程是正常的,即可以进行当前预设字节数据的传输。
44.想要将数据写入fifo存储器中还需要满足fifo存储器中为非满状态。因此可以将fifo存储器的满状态对应非空标志位为0,从而避免判断错误。可选地,指示当前fifo存储器的存储情况的状态标志位还可以是fifo的写满标志位。当使用的fifo的存储空间与传输的数据一样大时,即每次写入预设字节数据,都会使得fifo写满,即将fifo的写满标志位置1。因此可以通过判断fifo的写满标志位是否为1来判断fifo是否成功将数据传入fifo中。
45.通过设置fifo存储器的非空标志位可以指示当前fifo存储器中的存储情况,若其为第二标志位即为1时,可以认为fifo存储器中存储有前一传输的预设字节数据,因此传输过程没有问题,可以进行当前预设字节数据的传输,因此满足判定写使能有效的另外一个条件。
46.s230:若数据接收标志位为第一标志位,且非空标志位为第二标志位,则判定fifo存储器的写使能有效。
47.当数据接收标志位和非空标志位分别为第一标志位和第二标志位同时成立时,可以认为此时可以将当前预设字节数据写进fifo存储器中。例如当数据接收标志位和非空标志位同时都为1时,证明前一写入fifo存储器的数据成功写入fifo存储器中即将读出,且传输过程正常,当前预设字节数据也已经接收完成准备传输,因此可以判定fifo存储器的写使能有效,即可以进行写入操作。
48.在判定写使能有效后,可以将当前预设字节数据写入fifo存储器中,以完成当前预设字节数据的传输,步骤s300包括至少如下步骤:
49.s310:在将当前预设字节数据的前一预设字节数据从fifo存储器读取后,将当前
预设字节数据写入fifo存储器。
50.由于fifo存储器可以实现跨时钟域传输,因此每次在发送时钟域内将数据写入fifo存储器后,都可以相应的在接收时钟域内将数据读出。例如fifo存储器的存储空间正好对应存储预设字节数据,每次将当前预设字节数据写入至fifo存储器中后,都将当前预设字节数据从fifo存储器中读出,即在每一次数据传输后fifo存储器都会恢复读空状态。而在fifo存储器中的前一预设字节数据被读出后即fifo存储器恢复空状态时,将当前预设字节数据写入fifo存储器。当然,fifo存储器内也可以存储多个预设字节数据,每次要将当前预设字节数据传写入fifo存储器前,可以先将fifo存储器当前存储最早的预设字节数据读出,进而再将当前预设字节数据写入fifo存储器,实现先进先出。
51.s320:在时钟边沿触发写使能,以将当前预设字节数据写入fifo存储器。
52.所有的状态变化都发生在时钟边沿到来的时刻,因此想要将数据写入fifo存储器中,必须满足在时钟边沿到来的时候写使能有效且fifo非满。在满足写使能有效且fifo非满两个条件时,写使能就可以在时钟边沿触发。可选地,触发写使能的时钟边沿可以为上升沿、下降沿,也可以包括上升沿和下降沿。
53.s330:将数据接收标志位同步到第一时钟域,并在第一时钟域内将清零输入信号配置为高电平信号。
54.在第二时钟域内使用完数据接收标志位后,即判断写使能有效后,当前预设字节数据会在时钟边沿到来时写入fifo存储器中。之后例如内存缓冲区恢复空状态,因此需要对数据接收标志位置0,即将数据接收标志位同步至第一时钟域内将清零输入信号配置为高电平信号。由于未对置位输入信号进行控制,且置位输入信号无法长期处于高电平信号状态,因此此时可能会出现置位输入信号为高电平信号或者低电平信号的两种情况。置位输入信号和清零输入信号通过触发器控制数据接收标志位,触发器例如可以为复位优先触发器和置位优先触发器。当触发器为复位优先触发器时,清零输入信号优先级大于置位输入信号,即当清零输入信号为高电平信号时,无论置位输入信号为高电平信号还是低电平信号,都判定数据接收标志位不为第一标志位,即数据接收标志位都为0。
55.清零输入信号配置为高电平信号的时间与将置位输入信号配置为高电平信号的时间之差t3设置成t3+t4>k*(mt1+nt2),其中,t1为主机和从机工作时钟周期,t2为从机的总线时钟周期,t4是当前预设字节数据的接收时间;t3+t4=j*t1,t3+t4为接收完当前预设字节数据的需要时间;k,m,n和j均为正整数。从机接收处理一帧数据的时长为t1+t2,若每次传输预设字节数据的时间小于对应的从机处理传输预设字节数据所需要的时间,可能会出现当前帧数据仍未传输完,下一帧数据开始传输从而出现丢数的情况,因此使得t3+t4满足上述条件,可以实现数据的完整传输,减少数据丢失的可能性。
56.如图4所示,本技术电子终端实施例描述的电子终端110包括:处理器111、spi接口112、存储器113以及fifo存储器114。其中,spi接口112、存储器113以及fifo存储器114分别耦接处理器111。
57.处理器111用于执行计算机程序,处理器111还可以称为cpu(central processing unit,中央处理单元)。处理器111可能是一种集成电路芯片,具有信号的处理能力。处理器111还可以是通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器
可以是微处理器(mcu)或者该处理器111也可以是任何常规的处理器等。
58.处理器111用于执行存储器113中存储的计算机程序以实现本技术基于spi通信的数据写入方法实施例描述的数据写入方法。
59.spi接口112是一种4线高速的、高效率的串行接口技术。spi接口112主要以主从方式工作,因此通常由一个主机和一个或多个从机组成,主机选择一个从机进行同步通信,从而完成数据的交换。主机与从机之间的通信可以是双向的,也可以是单向的。可选地,主机和从机可以是设备、模块等。
60.存储器113存储有计算机程序,可以是ram,也是可以rom,或者其他类型的存储设备。具体地,存储器可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器中的非暂态的计算机可读存储介质用于存储至少一条程序代码。
61.fifo存储器114是一个先入先出的双口缓冲器,其中一个是输入口,一个是输出口。fifo存储器114具有读地址和写地址两个指针,可以实现数据的写入和读出,从而可以实现跨时钟域的数据交换。其中,第一个进入fifo存储器114内的数据第一个被移出。
62.在本技术所提供的几个实施例中,应该理解到,所揭露的基于spi通信的数据写入方法,可以通过其它的方式实现。例如,以上所描述的电子终端各实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
63.作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。
64.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
65.如图5所示,上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在计算机可读存储介质200中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令/计算机程序用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施方式方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种介质以及具有上述存储介质的电脑、手机、笔记本电脑、平板电脑、相机等电子终端。
66.以上所述仅为本技术的实施例,并非因此限制本技术的专利范围,凡是利用本技术说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本技术的专利保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1