CN115098428B - Spi数据传输方法、装置、电子设备及存储介质 - Google Patents

Spi数据传输方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN115098428B
CN115098428B CN202210808333.1A CN202210808333A CN115098428B CN 115098428 B CN115098428 B CN 115098428B CN 202210808333 A CN202210808333 A CN 202210808333A CN 115098428 B CN115098428 B CN 115098428B
Authority
CN
China
Prior art keywords
data
transmission
spi
transmission mode
transmitted
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.)
Active
Application number
CN202210808333.1A
Other languages
English (en)
Other versions
CN115098428A (zh
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 Gencotech Communication Equipment Co ltd
Original Assignee
Shenzhen Gencotech Communication Equipment 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 Gencotech Communication Equipment Co ltd filed Critical Shenzhen Gencotech Communication Equipment Co ltd
Priority to CN202210808333.1A priority Critical patent/CN115098428B/zh
Publication of CN115098428A publication Critical patent/CN115098428A/zh
Application granted granted Critical
Publication of CN115098428B publication Critical patent/CN115098428B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0002Serial port, e.g. RS232C
    • 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

Abstract

本申请涉及一种SPI数据传输方法、装置、电子设备及存储介质。其中,SPI数据传输方法包括:在接收到数据传输指令后,关闭数据传输寄存器;根据数据传输指令,确定期望传输模式、期望传输类型、待传输数据;所述期望传输模式包括SPI传输模式、IIC传输模式和GPIO传输模式中的任意一种传输模式;期望传输类型包括读数据、写数据、读写数据中的任意一种传输类型;当期望传输模式为SPI传输模式时,根据数据传输指令确定SPI传输模式对应的基本参数,基于期望传输类型、基本参数,设置对应的控制寄存器,以选取三个GPIO口构成SPI串口,进入SPI传输模式;基于SPI传输模式的基本参数,对待传输数据进行数据传输。

Description

SPI数据传输方法、装置、电子设备及存储介质
技术领域
本申请涉及数据传输技术领域,尤其是涉及一种SPI数据传输方法、装置、电子设备及存储介质。
背景技术
随着科学技术的发展,单片机要实现的功能越来越多,但是单片机引脚的个数是固定不变的,为了能实现单片机功能的多样化,单片机接口的复用技术应运而生。
目前市场上单片机接口的复用方法大多只能使用有限个GPIO口复用为SPI接口或者IIC接口,在这些复用方法下,单片机接口虽然实现了复用,但是利用率还不够高,单片机仍然会由于接口数量受限,从而导致可选择的数据传输类型受到限制。
因此,目前单片机接口的复用方法不再局限于单一复用,而是朝着多元复用的方向发展,即使用有限个GPIO口,既可以选择复用为SPI接口又可以复用为IIC接口。但是,由于多元复用在复用方法上的复杂性,导致多元复用下的数据传输方式更为复杂,从而导致数据传输出现问题,效率降低。
发明内容
本申请提供一种SPI数据传输方法、装置、电子设备及存储介质,旨在提供一种
第一方面,本申请提供一种SPI数据传输方法,包括:
在接收到数据传输指令后,关闭数据传输寄存器;
根据数据传输指令,确定期望传输模式、期望传输类型、待传输数据;所述期望传输模式包括SPI传输模式、IIC传输模式和GPIO传输模式中的任意一种传输模式;所述期望传输类型包括读数据、写数据、读写数据中的任意一种传输类型;
当所述期望传输模式为SPI传输模式时,根据数据传输指令确定SPI传输模式对应的基本参数,基于所述期望传输类型、所述基本参数,设置对应的控制寄存器,以选取三个GPIO口构成SPI串口,进入SPI传输模式;所述SPI传输模式对应的基本参数包括时钟极性和相位、寄存器传输波特率、帧格式、传输数据帧大小、数据传输对象对应的片选信号;
基于SPI传输模式的基本参数,对所述待传输数据进行数据传输。
根据数据传输指令 ,可以选择性进入SPI传输模式,并确定SPI传输模式对应的基本参数,通过设置对应的控制寄存器,确定SPI传输模式的基本参数,基于这些基本参数,可以保障待传输数据可以使用SPI传输的方式进行数据传输,使SPI传输的传输效率更高。
可选的,当所述期望传输类型为写数据或读写数据时,所述基于SPI传输模式的基本参数,对所述待传输数据进行数据传输,包括:
开启数据传输寄存器,向数据寄存器中写入所述待传输数据,并通过移位存储器将所述待传输数据以数据帧的形式传输到所述数据传输对象。
利用移位存储器做数据缓存区,将待传输数据存储在数据缓存区,并以数据帧的形式将待传输数据传输到数据传输对象。通过增设数据缓存区,可以避免CPU资源的浪费。
可选的,所述向数据寄存器中写入所述待传输数据,并通过移位存储器将所述待传输数据以数据帧的形式传输到所述数据传输对象,包括:
向数据寄存器中写入任一所述待传输数据后,触发数据传输过程,并通过移位存储器将所述待传输数据以数据帧的形式传输到所述数据传输对象。
通过向数据寄存器写入任一待传输数据即可开启传输,使数据传输可以随写随传,提高传输效率。
可选的,所述的方法还包括:
针对每一数据帧,基于所述SPI传输模式的基本参数,查询所述数据帧中的数据是否被传输完毕;
针对每一数据帧,若所述数据帧中的数据被传输完毕,则下载所述移位存储器中的数据,查询所述移位存储器是否为空,并且查询所有数据帧是否被传输完毕,若所述移位存储器为空且所有数据帧被传输完毕,则结束数据传输。
通过查询移位存储器和所有数据帧中及每一数据帧中是否还存在数据未被传输,确保所有待发送数据被传输完毕,避免数据丢失。
可选的,所述SPI传输模式对应的基本参数还包括:移位存储器的阈值;
所述方法还包括:
基于所述移位存储器的阈值,设置中断触发条件;
当所述移位存储器中的数据量满足所述中断触发条件,触发一次中断;
响应于所述中断,对所述待传输数据进行数据传输。
通过设置中断,并使能中断触发条件,可以使主设备主动请求 CPU对接收移位存储器中的数据进行一次传输,从而可以节省CPU资源。
可选的,所述基于SPI传输模式的基本参数,对所述待传输数据进行数据传输,包括:
当确定所述数据传输对象对应的片选信号正确时,对所述待传输数据进行数据传输。
基于数据传输对象,正确设置对应的片选信号,并将其为SPI传输模式发起数据传输的一个发起条件,通过预先设置这个发起条件,可以规避由参数错误造成的传输错误。
可选的,所述的方法还包括:
当所述期望传输类型为读数据或者读写数据时,设置CTRLR1寄存器的值,以表征单次读取数据量的上限值;
针对一次数据传输,若所述移位存储器为满,且所述移位存储器的值等于所述CTRLR1寄存器的值,则结束该次数据传输。
通过设置CTRLR1寄存器的值,可以确定从设备单次读取数据量的上限值,从而使从设备读取的数据量达到这个值,就可以自动结束传输。
根据数据传输指令 ,可以选择性进入SPI传输模式,并确定SPI传输模式对应的基本参数,通过设置对应的控制寄存器,确定SPI传输模式的基本参数,基于这些基本参数,可以保障待传输数据可以使用SPI传输的方式进行数据传输,使SPI传输的传输效率更高。
第二方面,本申请提供一种SPI数据传输装置,包括:
指令接收模块,用于在接收到数据传输指令后,关闭数据传输寄存器;
数据确定模块,用于根据数据传输指令,确定期望传输模式、期望传输类型、待传输数据;所述期望传输模式包括SPI传输模式、IIC传输模式和GPIO传输模式中的任意一种传输模式;所述期望传输类型包括读数据、写数据、读写数据中的任意一种传输类型;
寄存器设置模块,用于当所述期望传输模式为SPI传输模式时,根据数据传输指令确定SPI传输模式对应的基本参数,基于所述期望传输类型、所述基本参数,设置对应的控制寄存器,以选取三个GPIO口构成SPI串口,进入SPI传输模式;所述SPI传输模式对应的基本参数包括时钟极性和相位、寄存器传输波特率、帧格式、传输数据帧大小、数据传输对象对应的片选信号;
数据传输模块,用于基于SPI传输模式的基本参数,对所述待传输数据进行数据传输。
可选的,当所述期望传输类型为写数据或读写数据时,所述数据传输模块具体用于:
开启数据传输寄存器,向数据寄存器中写入所述待传输数据,并通过移位存储器将所述待传输数据以数据帧的形式传输到所述数据传输对象。
可选的,数据传输模块在所述向数据寄存器中写入所述待传输数据,并通过移位存储器将所述待传输数据以数据帧的形式传输到所述数据传输对象,具体用于:
向数据寄存器中写入任一所述待传输数据后,触发数据传输过程,并通过移位存储器将所述待传输数据以数据帧的形式传输到所述数据传输对象。
可选的,所述的装置还包括:数据帧检测模块,用于:
针对每一数据帧,基于所述SPI传输模式的基本参数,查询所述数据帧中的数据是否被传输完毕;
针对每一数据帧,若所述数据帧中的数据被传输完毕,则下载所述移位存储器中的数据,查询所述移位存储器是否为空,并且查询所有数据帧是否被传输完毕,若所述移位存储器为空且所有数据帧被传输完毕,则结束数据传输。
可选的,所述SPI传输模式对应的基本参数还包括:移位存储器的阈值;
所述的装置还包括:中断触发模块,用于:
基于所述移位存储器的阈值,设置中断触发条件;
当所述移位存储器中的数据量满足所述中断触发条件,触发一次中断;
响应于所述中断,对所述待传输数据进行数据传输。
可选的,所述数据传输模块,具体用于:
当确定所述数据传输对象对应的片选信号正确时,对所述待传输数据进行数据传输。
可选的,所述的装置还包括:读数据量上限值设置模块,用于
当所述期望传输类型为读数据或者读写数据时,设置CTRLR1寄存器的值,以表征单次读取数据量的上限值;
针对一次数据传输,若所述移位存储器为满,且所述移位存储器的值等于所述CTRLR1寄存器的值,则结束该次数据传输。
第三方面,本申请提供一种电子设备,包括:存储器和处理器,所述存储器上存储有能够被处理器加载并执行如第一方面任一种方法的计算机程序。
第四方面,本申请提供一种计算机可读存储介质,存储有能够被处理器加载并执行如第一方面任一种方法的计算机程序。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一实施例提供的一种应用场景示意图;
图2为本申请一实施例提供的一种SPI数据传输方法的流程图;
图3为本申请一实施例提供的另一种SPI数据传输方法的流程图;
图4为本申请一实施例提供的一种SPI数据传输装置的结构示意图;
图5为本申请一实施例提供的一种SPI数据传输设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。
下面结合说明书附图对本申请实施例作进一步详细描述。
图1为本申请提供的一种应用场景示意图,在本场景中需要将待传输数据在主设备与从设备之间进行传输。随着科学技术的发展,为了实现单片机功能的多样化,发明人一直致力于研究如何实现单片机的多元复用,即使用普通的有限个GPIO口,既可以选择复用为SPI接口又可以选择复用为IIC接口。在研究过程中发现,由于多元复用的复杂性,导致在这种情况下的数据传输方式更为复杂,从而导致数据传输出现问题,传输效率降低。因此,在可以实现多元复用的基础上,为了使数据使用SPI接口进行传输时,保证传输过程,提高数据传输效率,应用本申请的方法可以使待传输数据在主设备和从设备之间传输。具体的,可以将本申请的SPI数据传输方法部署在单片机中,当有待传输数据时,单片机执行本申请的方法,对待处理数据使用SPI数据传输方法,使待传输数据可以使用SPI传输方式传输,并提高传输效率。
服务器处具体的处理过程的实现方式可以参考以下实施例。
图2为本申请一实施例提供的一种SPI数据传输方法的流程图。本实施例的方法用于使用SPI接口对待传输数据进行传输时,提高传输效率,可以应用于上述场景中的服务器,也可应用于其它具有计算能力的电子设备。如图2所示的,本实施例的方法包括:
S201、在接收到数据传输指令后,关闭数据传输寄存器。
其中,数据传输指令可以是输入指令,即当用户通过输入设备输入需求时,关闭数据传输寄存器,从而禁用数据传输功能,便于用户后续根据输入指令设置对应的控制寄存器。
S201、根据数据传输指令,确定期望传输模式、期望传输类型、待传输数据;所述期望传输模式包括SPI传输模式、IIC传输模式和GPIO传输模式中的任意一种传输模式;所述期望传输类型包括读数据、写数据、读写数据中的任意一种传输类型。
其中,期望传输类型指的是数据在传输过程中的读写模式,由用户根据需求确定。
具体的,由于期望传输模式包括SPI传输模式、IIC传输模式和GPIO传输模式中的任意一种传输模式,因此,在一些实现方式中,可以通过输入指令确定期望传输模式。具体的,将SPI传输模式、IIC传输模式和GPIO传输模式作为选项提供给用户,用户通过输入选项,确定期望传输模式。例如,当存在数据需要被传输时,将SPI传输模式、IIC传输模式和GPIO传输模式作为选项,通过弹窗提示给用户,用户可以选择其中一种模式作为期望传输模式。
在另一些实现方式中,可以通过高低电平确定期望传输模式。具体的,将SPI传输模式、IIC传输模式和GPIO传输模式对应电平的不同状态,或者,对应多个电平,用户通过控制电平的状态确定期望传输模式。例如,将SPI传输模式、IIC传输模式分别对应于高电平和低电平,用户通过确定电平的高低,可以确定对应的期望传输模式,从而使用确定的期望传输模式对待传输数据进行传输。
其中,待传输数据可以是用户导入的,即将待传输数据导入本实施例确定的期望传输模式对应的数据存放区域,数据存放区域存放的数据即为待传输数据;待传输数据还可以是通过获取用户指定的寄存器中的数据,即指定的寄存器中的数据即为待传输数据。
S203、当所述期望传输模式为SPI传输模式时,根据数据传输指令确定SPI传输模式对应的基本参数,基于所述期望传输类型、所述基本参数,设置对应的控制寄存器,以选取三个GPIO口构成SPI串口,进入SPI传输模式;所述SPI传输模式对应的基本参数包括时钟极性和相位、寄存器传输波特率、帧格式、传输数据帧大小、数据传输对象对应的片选信号。
具体的,当期望传输模式为SPI传输模式时,根据用户指令确定使用SPI串口进行数据传输时需要的基本参数,这些基本参数包括:时钟极性和相位、寄存器传输波特率、帧格式、传输数据帧大小、数据传输对象对应的片选信号等。基于上述基本参数和传输类型,对SPI传输模式对应的控制寄存器进行设置。基于上述设置好的控制寄存器,可以选取三个GPIO口构成SPI串口,进入SPI传输模式。
在一些实现方式中,可以通过BAUDR寄存器设置波特率,使时钟分频范围为2-65536;通过SPI_FRF寄存器设置数据帧帧格式,数据帧帧格式可以包括Standard、Daul、Quad、Octal四种格式;通过SCPOL寄存器和SCPH寄存器,设置时钟极性和相位;通过SER寄存器,设置数据传输对象对应的片选信号;通过DFS_32寄存器,设置传输数据帧大小。
S204、基于SPI传输模式的基本参数,对所述待传输数据进行数据传输。
具体的,确定上述SPI传输模式的参数并为这些参数对应的寄存器进行设置之后,开启数据传输寄存器,使待传输数据可以在主设备和从设备之间传输。
根据数据传输指令,可以选择性进入SPI传输模式,并确定SPI传输模式对应的基本参数,通过设置对应的控制寄存器,确定SPI传输模式的基本参数,基于这些基本参数,可以保障待传输数据可以使用SPI传输的方式进行数据传输,使SPI传输的传输效率更高。
在一些实施例中,当所述期望传输类型为写数据或读写数据时,所述基于SPI传输模式的基本参数,对所述待传输数据进行数据传输,包括:开启数据传输寄存器,向数据寄存器中写入所述待传输数据,并通过移位存储器将所述待传输数据以数据帧的形式传输到所述数据传输对象。
其中,在本实施例中,数据传输寄存器用于控制是否可以进行串行传输,开启数据传输寄存器指的是此时可以进行串行传输;数据寄存器用于存放待传输数据。
具体的,当用户设置的期望传输类型为写数据或读写数据的时候,开启数据传输寄存器,向数据寄存器中写入待传输数据,由于CPU直接将数据存储器中的数据传输到数据传输对象的方式是逐字提取,逐字传输的,这种方式极大的浪费了CPU的资源,因此,可以利用移位存储器做数据缓存区,将待传输数据存储在数据缓存区,并以数据帧的形式将待传输数据传输到数据传输对象。通过增设数据缓存区,可以避免CPU资源的浪费。
在一些具体的实现方式中,移位存储器可以选用FIFO存储器。具体的,当用户设置的期望传输类型为写数据或读写数据的时候,开启数据传输寄存器,向数据寄存器中写入待传输数据,数据寄存器中的数据缓存在发送缓存区(TX FIFO)中,由CPU以数据帧的形式将待传输数据从发送缓存区传输到接收缓存区(RX FIFO)中,数据传输对象通过读取RXFIFO中的数据,从而完成传输。
在一些实施例中,可以通过向数据寄存器中写入任一所述待传输数据后,触发数据传输过程,并通过移位存储器将所述待传输数据以数据帧的形式传输到所述数据传输对象。
具体的,当向数据寄存器写入任一数据,即将该数据缓存到移位存储器的数据缓存区,将数据缓存区的数据以数据帧的形式传输到数据传输对象。通过向数据寄存器写入任一待传输数据即可开启传输,使数据传输可以随写随传,提高传输效率。
在另一些实施例中,为了确保所有待发送数据被传输完毕,可以查询移位存储器和所有数据帧中是否还存在数据未被传输。查询过程包括:针对每一数据帧,基于所述SPI传输模式的基本参数,查询所述数据帧中的数据是否被传输完毕;针对每一数据帧,若所述数据帧中的数据被传输完毕,则下载所述移位存储器中的数据,查询所述移位存储器是否为空,并且查询所有数据帧是否被传输完毕,若所述移位存储器为空且所有数据帧被传输完毕,则结束数据传输。
具体的,数据寄存器中的数据经由移位存储器以数据帧的形式传输给数据传输对象,因此针对每一数据帧,在传输该数据帧之后,可以根据上述的基本参数和设置的对应的寄存器的值,对该数据帧进行查询,即查询在传输该数据帧中的数据是否被传输完毕,避免某一数据帧中数据的丢失。若经查询,确定该数据帧中的数据被传输完毕,则可以确保该数据帧中的数据完整,此时从设备可以下载该数据帧中存放的数据。然后继续查询本次SPI传输过程中的所有数据帧是否被传输完毕,避免某一数据帧丢失,并查询移位存储器中是否还存在未传输的数据,避免移位存储器遗留数据未被传输,造成数据丢失,若上述所有数据帧都被传输完毕,并且移位存储器中也没有未传输的数据,则可以结束本次SPI数据传输。若查询存在数据帧未被传输完毕,则继续进行数据传输;若查询到移位存储器中还存留未被传输的数据,则继续以数据帧的形式进行传输。
在一些实施例中,SPI传输模式对应的基本参数还包括:移位存储器的阈值;所述方法还包括:基于所述移位存储器的阈值,设置中断触发条件;当所述移位存储器中的数据量满足所述中断触发条件,触发一次中断;响应于所述中断,对所述待传输数据进行数据传输。
具体的,根据数据传输指令,可以设置移位存储器的阈值,基于移位存储器的阈值,可以设置中断触发条件,当移位存储器中的数据量满足中断触发条件,就可以触发一次中断,即当移位存储器中的发送缓存区中的数据量满足中断触发条件,触发一次中断,响应于该中断,CPU将移位存储器发送缓存区中的数据以数据帧的形式传输到移位存储器接收缓存区,完成一次SPI传输。
通过设置中断,并使能中断触发条件,可以使主设备主动请求CPU对接收移位存储器中的数据进行一次传输,从而可以节省CPU资源。
在一些具体的实现方式中,移位存储器可以是FIFO存储器,基于移位存储器的阈值,可以设置两个中断条件,分别为:设置FIFO存储器的阈值分别为2和7,当FIFO中的值小于等于2时,FIFO空中断就会触发;当FIFO中的值大于等于7+1时,FIFO满中断就会触发。当中断被触发,响应于该中断,CPU将移位存储器发送缓存区中的数据以数据帧的形式传输到移位存储器接收缓存区,完成一次SPI传输。
在一些实施例中,对待传输数据进行传输的过程还包括:当确定所述数据传输对象对应的片选信号正确时,对所述待传输数据进行数据传输。
具体的,根据前述实施例可知,SPI传输模式的基本参数包括数据传输对象对应的片选信号,因此当选定某一数据传输对象(从设备)时,通过设置与该数据传输对象对应的片选信号,并保证该片选信号设置正确时,才可以对待传输数据进行数据传输;相反,当数据传输对象对应的片选信号设置错误,例如,该片选信号与选定的数据传输对象不对应时,或者没有设置片选信号的时候(说明没有数据传输对象),数据传输无法启动。因此,基于数据传输对象,正确设置对应的片选信号,并将其为SPI传输模式发起数据传输的一个发起条件,通过预先设置这个发起条件,可以规避由参数错误造成的传输错误。
在一些实施例中,当所述期望传输类型为读数据或者读写数据时,设置CTRLR1寄存器的值,以表征单次读取数据量的上限值;针对一次数据传输,若所述移位存储器为满,且所述移位寄存器的值等于所述CTRLR1寄存器的值,则结束该次数据传输。
具体的,当所述期望传输类型为读数据或者读写数据时,可以设置CTRLR1寄存器的值。通过设置CTRLR1寄存器的值,可以限制单次读取数据量的上限值,在一些具体的实现方式中,通过设置CTRLR1寄存器的值,可以限制上限值为64KB,即SPI传输最大能连续传输64KB的数据,且当接收值等于上限值+1时,会导致SPI传输停止。
在另一些具体的实现方式中,当使用的移位存储器为FIFO存储器时,TX FIFO为空的情况下,SPI传输会停止,但是RX FIFO为满的情况下,一直到FIFO存储器的值等于所述CTRLR1寄存器的值,SPI传输才会停止。
在一些具体实施例中,如图3所示,使用SPI传输模式的数据传输流程参考以下步骤:
i.写0关闭SSIENR寄存器(不使能DW_apb_ssi),之后才能操作控制寄存器;
ii.根据需求设置CTRLR0寄存器(传输类型,时钟极性和相位,spi模式,读写命令,传输数据大小等),如果设置为读写或者只读,需要设置CTRLR1寄存器去限制读的数据量;
iii.写BAUDR寄存器设置波特率;
iv.写TXFTLR and RXFTLR去设置传输和接收fifo的阈值(最高为8);
v.使能片选信号(SER寄存器);
vi.写1开启SSIENR寄存器(使能DW_apb_ssi);
vii.向DR寄存器写入需要发送的数据之后,传输会自动的发起;如果SER寄存器没有设置,传输不会启动;
viii.轮询BUSY信号,等待传输完成;如果传输FiFO在未满的情况可以持续写值,接收FIFO未空的情况下,可以持续读值;
ix.如果传输fifo为空的情况下,传输会自动停止;但是接收fifo为满的情况下不会自动停止,直到达到CTRLR1寄存器设置的数据量才会停止;传输完毕后,BUSY会复位到0
x.如果不是只读命令,需要读空接收fifo,避免出现数据丢失;
最后关闭fifo,写0到SSIENR寄存即可。其中,TMOD指的是TMOD寄存器,用于控制SPI数据传输中的传输类型,具体的,TMOD=00为读写数据,TMOD=01为只写数据,TMOD=10为只读数据。
图4为本申请一实施例提供的一种SPI数据传输装置的结构示意图,如图4所示的,本实施例的SPI数据传输装置400包括:
指令接收模块401,用于在接收到数据传输指令后,关闭数据传输寄存器;
数据确定模块402,用于根据数据传输指令,确定期望传输模式、期望传输类型、待传输数据;所述期望传输模式包括SPI传输模式、IIC传输模式和GPIO传输模式中的任意一种传输模式;所述期望传输类型包括读数据、写数据、读写数据中的任意一种传输类型;
寄存器设置模块403,用于当所述期望传输模式为SPI传输模式时,根据数据传输指令确定SPI传输模式对应的基本参数,基于所述期望传输类型、所述基本参数,设置对应的控制寄存器,以选取三个GPIO口构成SPI串口,进入SPI传输模式;所述SPI传输模式对应的基本参数包括时钟极性和相位、寄存器传输波特率、帧格式、传输数据帧大小、数据传输对象对应的片选信号;
数据传输模块404,用于基于SPI传输模式的基本参数,对所述待传输数据进行数据传输。
可选的,当所述期望传输类型为写数据或读写数据时,所述数据传输模块404具体用于:
开启数据传输寄存器,向数据寄存器中写入所述待传输数据,并通过移位存储器将所述待传输数据以数据帧的形式传输到所述数据传输对象。
可选的,数据传输模块404在所述向数据寄存器中写入所述待传输数据,并通过移位存储器将所述待传输数据以数据帧的形式传输到所述数据传输对象,具体用于:
向数据寄存器中写入任一所述待传输数据后,触发数据传输过程,并通过移位存储器将所述待传输数据以数据帧的形式传输到所述数据传输对象。
可选的,所述的装置还包括:数据帧检测模块405,用于:
针对每一数据帧,基于所述SPI传输模式的基本参数,查询所述数据帧中的数据是否被传输完毕;
针对每一数据帧,若所述数据帧中的数据被传输完毕,则下载所述移位存储器中的数据,查询所述移位存储器是否为空,并且查询所有数据帧是否被传输完毕,若所述移位存储器为空且所有数据帧被传输完毕,则结束数据传输。
可选的,所述SPI传输模式对应的基本参数还包括:移位存储器的阈值;
所述的装置还包括:中断触发模块406,用于:
基于所述移位存储器的阈值,设置中断触发条件;
当所述移位存储器中的数据量满足所述中断触发条件,触发一次中断;
响应于所述中断,对所述待传输数据进行数据传输。
可选的,所述数据传输模块404,具体用于:
当确定所述数据传输对象对应的片选信号正确时,对所述待传输数据进行数据传输。
可选的,所述的装置还包括:读数据量上限值设置模块407,用于
当所述期望传输类型为读数据或者读写数据时,设置CTRLR1寄存器的值,以表征单次读取数据量的上限值;
针对一次数据传输,若所述移位存储器为满,且所述移位存储器的值等于所述CTRLR1寄存器的值,则结束该次数据传输。
本实施例的装置,可以用于执行上述任一实施例的方法,其实现原理和技术效果类似,此处不再赘述。
图5为本申请一实施例提供的一种电子设备的结构示意图,如图5所示,本实施例的电子设备500可以包括:存储器501和处理器502。
存储器501上存储有能够被处理器502加载并执行上述实施例中方法的计算机程序。
其中,处理器502和存储器501相连,如通过总线相连。
可选地,电子设备500还可以包括收发器。需要说明的是,实际应用中收发器不限于一个,该电子设备500的结构并不构成对本申请实施例的限定。
处理器502可以是CPU(Central Processing Unit,中央处理器),通用处理器,DSP(Digital Signal Processor,数据信号处理器),ASIC(Application SpecificIntegrated Circuit,专用集成电路),FPGA(Field Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器602也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线可包括一通路,在上述组件之间传送信息。总线可以是PCI(PeripheralComponent Interconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器501可以是ROM(Read Only Memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,RAM(Random Access Memory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(Electrically ErasableProgrammable Read Only Memory,电可擦可编程只读存储器)、CD-ROM(Compact DiscRead Only Memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
存储器501用于存储执行本申请方案的应用程序代码,并由处理器502来控制执行。处理器502用于执行存储器501中存储的应用程序代码,以实现前述方法实施例所示的内容。
其中,电子设备包括但不限于:移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。还可以为服务器等。图5示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
本实施例的电子设备,可以用于执行上述任一实施例的方法,其实现原理和技术效果类似,此处不再赘述。
本申请还提供一种计算机可读存储介质,存储有能够被处理器加载并执行如上实施例中的方法的计算机程序。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

Claims (9)

1.一种SPI数据传输方法,其特征在于,包括:
在接收到数据传输指令后,关闭数据传输寄存器;
根据数据传输指令,确定期望传输模式、期望传输类型、待传输数据;所述期望传输模式包括SPI传输模式、IIC传输模式和GPIO传输模式中的任意一种传输模式;所述期望传输类型包括读数据、写数据、读写数据中的任意一种传输类型;
当所述期望传输模式为SPI传输模式时,根据数据传输指令确定SPI传输模式对应的基本参数,基于所述期望传输类型、所述基本参数,设置对应的控制寄存器,以选取三个GPIO口构成SPI串口,进入SPI传输模式;所述SPI传输模式对应的基本参数包括时钟极性和相位、寄存器传输波特率、帧格式、传输数据帧大小、数据传输对象对应的片选信号;
基于SPI传输模式的基本参数,对所述待传输数据进行数据传输;
所述SPI传输模式对应的基本参数还包括:移位存储器的阈值;
所述方法还包括:
基于所述移位存储器的阈值,设置中断触发条件;
当所述移位存储器中的数据量满足所述中断触发条件,触发一次中断;
响应于所述中断,对所述待传输数据进行数据传输。
2.根据权利要求1所述的方法,其特征在于,当所述期望传输类型为写数据或读写数据时,所述基于SPI传输模式的基本参数,对所述待传输数据进行数据传输,包括:
开启数据传输寄存器,向数据寄存器中写入所述待传输数据,并通过移位存储器将所述待传输数据以数据帧的形式传输到所述数据传输对象。
3.根据权利要求2所述的方法,其特征在于,所述向数据寄存器中写入所述待传输数据,并通过移位存储器将所述待传输数据以数据帧的形式传输到所述数据传输对象,包括:
向数据寄存器中写入任一所述待传输数据后,触发数据传输过程,并通过移位存储器将所述待传输数据以数据帧的形式传输到所述数据传输对象。
4.根据权利要求2所述的方法,其特征在于,还包括:
针对每一数据帧,基于所述SPI传输模式的基本参数,查询所述数据帧中的数据是否被传输完毕;
针对每一数据帧,若所述数据帧中的数据被传输完毕,则下载所述移位存储器中的数据,查询所述移位存储器是否为空,并且查询所有数据帧是否被传输完毕,若所述移位存储器为空且所有数据帧被传输完毕,则结束数据传输。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述基于SPI传输模式的基本参数,对所述待传输数据进行数据传输,包括:
当确定所述数据传输对象对应的片选信号正确时,对所述待传输数据进行数据传输。
6.根据权利要求1所述的方法,其特征在于,还包括:
当所述期望传输类型为读数据或者读写数据时,设置CTRLR1寄存器的值,以表征单次读取数据量的上限值;
针对一次数据传输,若所述移位存储器为满,且所述移位存储器的值等于所述CTRLR1寄存器的值,则结束该次数据传输。
7.一种SPI数据传输装置,其特征在于,包括:
指令接收模块,用于在接收到数据传输指令后,关闭数据传输寄存器;
数据确定模块,用于根据数据传输指令,确定期望传输模式、期望传输类型、待传输数据;所述期望传输模式包括SPI传输模式、IIC传输模式和GPIO传输模式中的任意一种传输模式;所述期望传输类型包括读数据、写数据、读写数据中的任意一种传输类型;
寄存器设置模块,用于当所述期望传输模式为SPI传输模式时,根据数据传输指令确定SPI传输模式对应的基本参数,基于所述期望传输类型、所述基本参数,设置对应的控制寄存器,以选取三个GPIO口构成SPI串口,进入SPI传输模式;所述SPI传输模式对应的基本参数包括时钟极性和相位、寄存器传输波特率、帧格式、传输数据帧大小、数据传输对象对应的片选信号;
数据传输模块,用于基于SPI传输模式的基本参数,对所述待传输数据进行数据传输;
所述SPI传输模式对应的基本参数还包括:移位存储器的阈值;
所述装置还包括中断触发模块,用于基于所述移位存储器的阈值,设置中断触发条件;当所述移位存储器中的数据量满足所述中断触发条件,触发一次中断;响应于所述中断,对所述待传输数据进行数据传输。
8.一种电子设备,其特征在于,包括:存储器和处理器;
所述存储器,用于存储程序指令;
所述处理器,用于调用并执行所述存储器中的程序指令,执行如权利要求1-6任一项所述的方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序;所述计算机程序被处理器执行时,实现如权利要求1-6任一项所述的方法。
CN202210808333.1A 2022-07-11 2022-07-11 Spi数据传输方法、装置、电子设备及存储介质 Active CN115098428B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210808333.1A CN115098428B (zh) 2022-07-11 2022-07-11 Spi数据传输方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210808333.1A CN115098428B (zh) 2022-07-11 2022-07-11 Spi数据传输方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN115098428A CN115098428A (zh) 2022-09-23
CN115098428B true CN115098428B (zh) 2023-07-25

Family

ID=83295947

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210808333.1A Active CN115098428B (zh) 2022-07-11 2022-07-11 Spi数据传输方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN115098428B (zh)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105824777B (zh) * 2016-03-18 2019-03-08 烽火通信科技股份有限公司 一种spi总线在ipran设备中的实现方法
CN109783416A (zh) * 2019-01-03 2019-05-21 深圳市度申科技有限公司 Spi从设备和i2c从设备共用gpio的方法、电路和电子设备
CN214846694U (zh) * 2021-03-31 2021-11-23 上海磐启微电子有限公司 一种多模式装置及芯片
CN113641610A (zh) * 2021-06-30 2021-11-12 荣耀终端有限公司 处理器接口电路及处理器接口分时复用方法、电子设备
CN114499816B (zh) * 2021-12-24 2022-10-28 深圳市金科泰通信设备有限公司 时钟同步的方法、装置、终端设备及可读存储介质

Also Published As

Publication number Publication date
CN115098428A (zh) 2022-09-23

Similar Documents

Publication Publication Date Title
US8639852B2 (en) Burst access protocol
CN108268414B (zh) 基于spi模式的sd卡驱动器及其控制方法
EP3387542B1 (en) Enhanced serial peripheral interface with hardware flow-control
EP2062147B1 (en) Method and apparatus for conditional broadcast of barrier operations
CN108304334B (zh) 应用处理器和包括中断控制器的集成电路
CN109902042B (zh) 一种实现dsp与zynq之间高速数据传输的方法及系统
CN114153779B (zh) 一种i2c通信方法、系统、设备、及存储介质
WO2022213865A1 (zh) 计算机设备、虚拟化加速设备、数据传输方法及存储介质
CN112947857B (zh) 一种数据搬移方法、装置、设备及计算机可读存储介质
CN115033520B (zh) Iic数据传输方法、装置、单片机设备及存储介质
CN115098428B (zh) Spi数据传输方法、装置、电子设备及存储介质
KR20110116990A (ko) 마이크로 컴퓨터
US8996772B1 (en) Host communication device and method with data transfer scheduler
WO2014107546A1 (en) Dma channels
CN114328350A (zh) 一种基于axi总线的通讯方法、装置以及介质
US7240144B2 (en) Arbitration of data transfer requests
JPH08241199A (ja) データ処理システム
US20060101173A1 (en) Pin sharing system
KR20080072412A (ko) 프로세서간 커맨드를 직접 전달하는 듀얼 포트 메모리 및이를 수행하기 위한 방법
CN111198837A (zh) 基于fpga的sdio接口系统、控制器桥接方法
US9766821B2 (en) Access controlling method of dual port memory system
CN111459867B (zh) 一种usb转smi方法、装置、转换器及存储介质
US20240095205A1 (en) User-defined peripheral-bus device implementation
US10860397B1 (en) Communication of data between software applications
CN110781118B (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
GR01 Patent grant
GR01 Patent grant