CN115858414A - 基于中断和缓冲区的spi数据传输方法、系统和控制器 - Google Patents

基于中断和缓冲区的spi数据传输方法、系统和控制器 Download PDF

Info

Publication number
CN115858414A
CN115858414A CN202211595009.2A CN202211595009A CN115858414A CN 115858414 A CN115858414 A CN 115858414A CN 202211595009 A CN202211595009 A CN 202211595009A CN 115858414 A CN115858414 A CN 115858414A
Authority
CN
China
Prior art keywords
transmission
data
spi
address
interrupt
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
CN202211595009.2A
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.)
Eastcompeace Technology Co Ltd
Original Assignee
Eastcompeace Technology 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 Eastcompeace Technology Co Ltd filed Critical Eastcompeace Technology Co Ltd
Priority to CN202211595009.2A priority Critical patent/CN115858414A/zh
Publication of CN115858414A publication Critical patent/CN115858414A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Communication Control (AREA)

Abstract

本发明公开了一种基于中断和缓冲区的SPI数据传输方法、基于中断和缓冲区的SPI数据传输系统、控制器及计算机存储介质,SPI数据传输系统设置于无DMA和/或硬件SPI无缓存区的MCU控制器中,SPI数据传输方法包括:根据传输数据启动SPI传输,并获取传输数据的数据地址和数据量,根据数据地址和数据量生成缓冲区的传输状态参数,将传输数据中的目标数据储存至SPI的传输寄存器,对目标数据进行SPI传输,并进行SPI的硬件中断,根据传输数据总量和已传输数据量更新传输完成标志,根据传输完成标志关闭SPI的硬件中断,以停止SPI传输,提高系统数据传输的实时性,使得没有DMA及SPI硬件不带缓存的MCU能有效的进行数据传输,提高用户的使用体验。

Description

基于中断和缓冲区的SPI数据传输方法、系统和控制器
技术领域
本申请涉及数据传输技术领域,具体涉及一种基于中断和缓冲区的SPI数据传输方法、基于中断和缓冲区的SPI数据传输系统、控制器及计算机存储介质。
背景技术
现有技术中,在通过SPI进行数据传输的时候,一般会有阻塞传输,中断传输及DMA传输3种方式,对于后两种传输一般是利用系统SPI硬件自带的缓冲区加快数据传输的效率,当涉及大数据量的SPI传输时,为了兼顾系统的实时性,一般都采用后两种传输方式;
然而,当在一个没有DMA及SPI硬件不带缓存的MCU中,对于大数据量的传输一般都是采取阻塞的方式进行,当传输数据量较大时会影响系统数据传输的实时性,使得没有DMA及SPI硬件不带缓存的MCU无法有效的进行数据传输,影响用户的使用体验。
发明内容
本申请实施例提供一种基于中断和缓冲区的SPI数据传输方法、基于中断和缓冲区的SPI数据传输系统、控制器及计算机存储介质,至少能保证,本申请方案通过根据传输数据启动SPI传输,并获取所述传输数据的数据地址和数据量,根据所述数据地址和所述数据量生成缓冲区的传输状态参数,所述传输状态参数包括数据传输地址、传输数据总量、已传输数据量和传输完成标志,在没有DMA及SPI硬件不带缓存的MCU中,提高传输数据量较大时系统数据传输的实时性,使得没有DMA及SPI硬件不带缓存的MCU能有效的进行数据传输,提高用户的使用体验。
第一方面,本申请实施例提供了一种基于中断和缓冲区的SPI数据传输方法,所述SPI数据传输方法应用于SPI数据传输系统,所述SPI数据传输系统设置于无DMA和/或硬件SPI无缓存区的MCU控制器中,所述SPI数据传输方法包括:
根据传输数据启动SPI传输,并获取所述传输数据的数据地址和数据量;
根据所述数据地址和所述数据量生成缓冲区的传输状态参数,所述传输状态参数包括数据传输地址、传输数据总量、已传输数据量和传输完成标志;
根据所述数据传输地址和所述已传输数据量,将所述传输数据中的目标数据储存至SPI的传输寄存器,对所述目标数据进行SPI传输,并进行SPI的硬件中断;
根据所述传输数据总量和所述已传输数据量更新所述传输完成标志;
根据所述传输完成标志关闭SPI的硬件中断,以停止SPI传输。
在一些实施例中,所述根据所述数据地址和所述数据量生成缓冲区的传输状态参数,包括:
将所述数据传输地址确定为所述数据地址;
将所述传输数据总量确定为所述数据量;
将已传输数据量和传输完成标志确定为0。
在一些实施例中,所述根据所述数据传输地址和所述已传输数据量,将所述传输数据中的目标数据储存至SPI的传输寄存器,包括:
根据所述数据传输地址和所述已传输数据量确定目标数据地址;
根据所述目标数据地址得到所述传输数据中的目标数据;
将所述传输数据中的目标数据储存至SPI的传输寄存器,并更新所述已传输数据量。
在一些实施例中,所述目标数据的大小为1字节,所述根据所述数据传输地址和所述已传输数据量,将所述传输数据中的目标数据储存至SPI的传输寄存器,对所述目标数据进行SPI传输,并进行SPI的硬件中断,包括:
根据所述数据传输地址和所述已传输数据量,将所述传输数据中的目标数据储存至SPI的传输寄存器,对所述目标数据进行SPI传输;
在根据所述目标数据进行SPI传输,并传输完成1字节后,进行SPI的硬件中断。
在一些实施例中,在根据所述目标数据进行SPI传输,并传输完成1字节后,进行SPI的硬件中断之后,包括:
根据更新后的所述已传输数据量和所述数据传输地址更新所述目标数据地址;
根据更新后的所述目标数据地址对应的1字节数据确定为所述目标数据,并将所述目标数据储存至SPI的传输寄存器。
在一些实施例中,所述根据所述传输数据总量和所述已传输数据量更新所述传输完成标志,包括:
在所述已传输数据量大于或者等于所述传输数据总量的情况下,将所述传输完成标志确定为1。
在一些实施例中,所述根据所述传输完成标志关闭SPI的硬件中断,以停止SPI传输,包括:
在所述传输完成标志为1的情况下,关闭SPI的硬件中断,以停止SPI传输;
清除SPI的中断标准,并清除所述传输状态参数包括数据传输地址、传输数据总量、已传输数据量和传输完成标志。
第二方面,本申请实施例提供了一种基于中断和缓冲区的SPI数据传输系统,所述SPI数据传输系统设置于无DMA和/或硬件SPI无缓存区的MCU控制器中,所述SPI数据传输系统包括传输启动模块、传输中断模块、传输状态确定模块和传输停止模块,
所述传输启动模块,用于根据传输数据启动SPI传输,并获取所述传输数据的数据地址;
所述传输中断模块,用于根据所述传输数据和所述数据地址生成缓冲区的传输状态参数,所述传输状态参数包括数据传输地址、传输数据总量、已传输数据量和传输完成标志,根据所述数据传输地址和所述已传输数据量,将所述传输数据中的目标数据储存至SPI的传输寄存器,对所述目标数据进行SPI传输,并进行SPI的硬件中断;
所述传输状态确定模块,用于根据所述传输数据总量和所述已传输数据量更新所述传输完成标志;
所述传输停止模块,用于根据所述传输完成标志关闭SPI的硬件中断,以停止SPI传输。
第三方面,本申请实施例提供了一种控制器,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面中任意一项实施例所述的基于中断和缓冲区的SPI数据传输方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,存储有计算机可执行指令,计算机可执行指令用于执行如第一方面中任意一项实施例所述的基于中断和缓冲区的SPI数据传输方法。
本申请至少具有以下有益效果:所述SPI数据传输方法应用于SPI数据传输系统,所述SPI数据传输系统设置于无DMA和/或硬件SPI无缓存区的MCU控制器中,所述SPI数据传输方法包括,根据传输数据启动SPI传输,并获取所述传输数据的数据地址和数据量,根据所述数据地址和所述数据量生成缓冲区的传输状态参数,所述传输状态参数包括数据传输地址、传输数据总量、已传输数据量和传输完成标志,根据所述数据传输地址和所述已传输数据量,将所述传输数据中的目标数据储存至SPI的传输寄存器,对所述目标数据进行SPI传输,并进行SPI的硬件中断,根据所述传输数据总量和所述已传输数据量更新所述传输完成标志,根据所述传输完成标志关闭SPI的硬件中断,以停止SPI传输,在没有DMA及SPI硬件不带缓存的MCU中,提高传输数据量较大时系统数据传输的实时性,使得没有DMA及SPI硬件不带缓存的MCU能有效的进行数据传输,提高用户的使用体验。
附图说明
图1为本申请一实施例提出的基于中断和缓冲区的SPI数据传输方法的流程图;
图2为本申请另一实施例提出的基于中断和缓冲区的SPI数据传输方法的流程图;
图3为本申请另一实施例提出的基于中断和缓冲区的SPI数据传输方法的流程图;
图4为本申请另一实施例提出的基于中断和缓冲区的SPI数据传输方法的流程图;
图5为本申请另一实施例提出的基于中断和缓冲区的SPI数据传输方法的流程图;
图6为本申请另一实施例提出的基于中断和缓冲区的SPI数据传输方法的流程图;
图7为本申请另一实施例中提出的启动spi传输函数的流程图;
图8为本申请另一实施例中提出的停止spi传输函数的流程图;
图9为本申请另一实施例中提出的进行spi中断函数的流程图;
图10为本申请另一实施例提出的控制器的结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
在一些实施例中,虽然在系统示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于系统中的模块划分,或流程图中的顺序执行所示出或描述的步骤。说明书和权利要求书及上述附图中的术语第一、第二等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
目前,现有技术中,在通过SPI进行数据传输的时候,一般会有阻塞传输,中断传输及DMA传输3种方式,对于后两种传输一般是利用系统SPI硬件自带的缓冲区加快数据传输的效率,当涉及大数据量的SPI传输时,为了兼顾系统的实时性,一般都采用后两种传输方式;然而,当在一个没有DMA及SPI硬件不带缓存的MCU中,对于大数据量的传输一般都是采取阻塞的方式进行,当传输数据量较大时会影响系统数据传输的实时性,使得没有DMA及SPI硬件不带缓存的MCU无法有效的进行数据传输,影响用户的使用体验。
为至少解决上述问题,本申请公开了一种基于中断和缓冲区的SPI数据传输方法、基于中断和缓冲区的SPI数据传输系统、控制器及计算机存储介质,其中,SPI数据传输方法应用于SPI数据传输系统,SPI数据传输系统设置于无DMA和/或硬件SPI无缓存区的MCU控制器中,SPI数据传输方法包括,根据传输数据启动SPI传输,并获取传输数据的数据地址和数据量,根据数据地址和数据量生成缓冲区的传输状态参数,传输状态参数包括数据传输地址、传输数据总量、已传输数据量和传输完成标志,根据数据传输地址和已传输数据量,将传输数据中的目标数据储存至SPI的传输寄存器,对目标数据进行SPI传输,并进行SPI的硬件中断,根据传输数据总量和已传输数据量更新传输完成标志,根据传输完成标志关闭SPI的硬件中断,以停止SPI传输,在没有DMA及SPI硬件不带缓存的MCU中,提高传输数据量较大时系统数据传输的实时性,使得没有DMA及SPI硬件不带缓存的MCU能有效的进行数据传输,提高用户的使用体验。
下面结合附图,对本申请实施例作进一步描述。
参考图1,图1为本申请第一方面的实施例提出的基于中断和缓冲区的SPI数据传输方法的流程图,在一些实施例中,本申请实施例提供了一种基于中断和缓冲区的SPI数据传输方法,SPI数据传输方法应用于SPI数据传输系统,SPI数据传输系统设置于无DMA和/或硬件SPI无缓存区的MCU控制器中,SPI数据传输方法包括但不限于有以下步骤S110、步骤S120、步骤S130、步骤S140和步骤S150;
步骤S110,根据传输数据启动SPI传输,并获取传输数据的数据地址和数据量;
步骤S120,根据数据地址和数据量生成缓冲区的传输状态参数,传输状态参数包括数据传输地址、传输数据总量、已传输数据量和传输完成标志;
步骤S130,根据数据传输地址和已传输数据量,将传输数据中的目标数据储存至SPI的传输寄存器,对目标数据进行SPI传输,并进行SPI的硬件中断;
步骤S140,根据传输数据总量和已传输数据量更新传输完成标志;
步骤S150,根据传输完成标志关闭SPI的硬件中断,以停止SPI传输。
在一些实施例中,本申请通过根据数据地址和数据量生成缓冲区的传输状态参数,传输状态参数包括数据传输地址、传输数据总量、已传输数据量和传输完成标志,其中,缓冲区为环形缓冲区,本申请通过采用中断及环形缓冲区配合的方式提供一种在无DMA及硬件SPI无缓存区的MCU中高效进行SPI传输的方法,提高系统数据传输的实时性,使得没有DMA及SPI硬件不带缓存的MCU能有效的进行数据传输,提高用户的使用体验。
在一些实施例中,本申请中缓存区定义的结构体如下:
typedef struct
{
uint8_t*pBuf;
uint16_t size;
uint16_t count;
uint8_t flag;
}SPI_FIFO;
其中,对于各部分叙述:
uint8_t*pBuf,该数据指针指向要进行数据传输的存在地址,对应本申请的传输状态参数中的数据传输地址;
uint16_t size,该变量存储需要进行数据传输的数据大小,对应本申请的传输状态参数中的传输数据总量;
uint16_t count,该变量记录已经传输的数量,对应本申请的传输状态参数中的已传输数据量;
uint8_t flag,该变量记录是否传输完成的标志,当正在传输中,值为0,传输完成时该变量为1,对应本申请的传输状态参数中的传输完成标志。
在一些实施例中,根据上述结构体,本申请数据传输过程如下:启动SPI传输,将需要传输的数据的地址赋值给pBuf,传输数据的数量赋值给size,将count清零,将flag清零。并且将传输的第一个数据放入SPI的传输寄存器中,将count置为1,开启SPI的硬件中断,启动SPI的传输;当SPI硬件传输完成1个字节后,会进入SPI的硬件中断程序,SPI硬件中断程序先判断是否所有数据都已经传输完成,如果所有数据都传输完成就关闭SPI中断,将flag置为1,结束整个传输。如果没有传输完成则根据count,从pBuf中取出下一个需要传输的数据放入SPI传输寄存器中,启动传输,count加1,进而在没有DMA及SPI硬件不带缓存的MCU中,提高传输数据量较大时系统数据传输的实时性,使得没有DMA及SPI硬件不带缓存的MCU能有效的进行数据传输,提高用户的使用体验。
参考图2,图2为本申请另一实施例提出的基于中断和缓冲区的SPI数据传输方法的流程图,在一些实施例中,根据数据地址和数据量生成缓冲区的传输状态参数,包括但不限于有以下步骤S210、步骤S220和步骤S230;
步骤S210,将数据传输地址确定为数据地址;
步骤S220,将传输数据总量确定为数据量;
步骤S230,将已传输数据量和传输完成标志确定为0。
在一些实施例中,在进行SPI传输前,需要对缓冲区参数进行初始化,故将数据传输地址确定为数据地址,将传输数据总量确定为数据量,将已传输数据量和传输完成标志确定为0,通过设置缓冲区的传输状态参数,生成可用于缓存数据的缓冲区,充当没有DMA及SPI硬件不带缓存的MCU中DMA或SPI硬件缓存介质,提高传输数据量较大时系统数据传输的实时性,使得没有DMA及SPI硬件不带缓存的MCU能有效的进行数据传输。
参考图3,图2为本申请另一实施例提出的基于中断和缓冲区的SPI数据传输方法的流程图,在一些实施例中,根据数据传输地址和已传输数据量,将传输数据中的目标数据储存至SPI的传输寄存器,包括但不限于有以下步骤S310、步骤S320和步骤S330;
步骤S310,根据数据传输地址和已传输数据量确定目标数据地址;
步骤S320,根据目标数据地址得到传输数据中的目标数据;
步骤S330,将传输数据中的目标数据储存至SPI的传输寄存器,并更新已传输数据量。
在一些实施例中,将传输数据中的目标数据储存至SPI的传输寄存器,并更新已传输数据量,其中,每传输一次传输寄存器中数据,会进入SPI的硬件中断程序,SPI硬件中断程序先判断是否所有数据都已经传输完成,同时更新已传输数据量,进而在后续步骤中通过已传输数据量更新传输完成标志,并判断传输完成标志flag的值来获知SPI的传输状态,当为0表示正在传输过程中,当为1表示传输完成,进而通过采用中断及环形缓冲区配合的方式提供一种在无DMA及硬件SPI无缓存区的MCU中高效进行SPI传输的方法。
参考图4,图4为本申请另一实施例提出的基于中断和缓冲区的SPI数据传输方法的流程图,在一些实施例中,述目标数据的大小为1字节,根据数据传输地址和已传输数据量,将传输数据中的目标数据储存至SPI的传输寄存器,对目标数据进行SPI传输,并进行SPI的硬件中断,包括但不限于有以下步骤S410和步骤S420;
步骤S410,根据数据传输地址和已传输数据量,将传输数据中的目标数据储存至SPI的传输寄存器,对目标数据进行SPI传输;
步骤S420,在根据目标数据进行SPI传输,并传输完成1字节后,进行SPI的硬件中断。
参考图5,图5为本申请另一实施例提出的基于中断和缓冲区的SPI数据传输方法的流程图,在一些实施例中,在根据目标数据进行SPI传输,并传输完成1字节后,进行SPI的硬件中断之后,包括但不限于有以下步骤S510和步骤S520;
步骤S510,根据更新后的已传输数据量和数据传输地址更新目标数据地址;
步骤S520,根据更新后的目标数据地址对应的1字节数据确定为目标数据,并将目标数据储存至SPI的传输寄存器。
上述步骤S410、步骤420、步骤510和步骤S520具体对应,上述实施例提供的当SPI硬件传输完成1个字节后,会进入SPI的硬件中断程序,SPI硬件中断程序先判断是否所有数据都已经传输完成,如果所有数据都传输完成就关闭SPI中断,将flag置为1,结束整个传输。如果没有传输完成则根据count,从pBuf中取出下一个需要传输的数据放入SPI传输寄存器中,启动传输,count加1的过程。
在一些实施例中,根据传输数据总量和已传输数据量更新传输完成标志,包括,在已传输数据量大于或者等于传输数据总量的情况下,将传输完成标志确定为1。
参考图6,图6为本申请另一实施例提出的基于中断和缓冲区的SPI数据传输方法的流程图,在一些实施例中,根据传输完成标志关闭SPI的硬件中断,以停止SPI传输,包括但不限于有以下步骤S610和步骤S620;
步骤S610,在传输完成标志为1的情况下,关闭SPI的硬件中断,以停止SPI传输;
步骤S620,清除SPI的中断标准,并清除传输状态参数包括数据传输地址、传输数据总量、已传输数据量和传输完成标志。
在一些实施例中,在完成数据传输之后,通过清除SPI的中断标准,并清除传输状态参数包括数据传输地址、传输数据总量、已传输数据量和传输完成标志,重置缓冲区状态,进而释放系统内存,并使重置后的缓冲区可以用于下次数据传输。
参考图7,图7为本申请另一实施例中提出的启动spi传输函数的流程图,在一些实施例中,对应本申请中根据传输数据启动SPI传输,并获取传输数据的数据地址和数据量,根据数据地址和数据量生成缓冲区的传输状态参数,传输状态参数包括数据传输地址、传输数据总量、已传输数据量和传输完成标志,根据数据传输地址和已传输数据量,将传输数据中的目标数据储存至SPI的传输寄存器,对目标数据进行SPI传输的过程,SPI传输包括以下步骤:开始启动传输;赋值pBuf及size;清除count及flag;开启SPI传输中断及发送第一个数据;Count++;结束。
参考图8,图8为本申请另一实施例中提出的停止spi传输函数的流程图,在一些实施例中,对应本申请中根据传输数据总量和已传输数据量更新传输完成标志,根据传输完成标志关闭SPI的硬件中断,以停止SPI传输的过程,停止spi传输函数过程包括以下步骤:停止传输开始;关闭SPI中断;清除SPI中断标志;清除pBuf,size,count及flag;结束。
参考图9,图9为本申请另一实施例中提出的进行spi中断函数的流程图,在一些实施例中,对应本申请中根据数据传输地址和已传输数据量,将传输数据中的目标数据储存至SPI的传输寄存器,对目标数据进行SPI传输,并进行SPI的硬件中断的过程,进行spi中断函数的过程包括以下步骤:SPI中断函数开始;判断Count>=size,在Count>=size的情况下,flag置1,关闭SPI中断;或者,在Count<size的情况下,将pBuf[count]放入SPI传输寄存器,启动SPI传输,Count++;结束。
在一些实施例中,本申请提出了一种基于中断和缓冲区的SPI数据传输系统,SPI数据传输系统设置于无DMA和/或硬件SPI无缓存区的MCU控制器中,SPI数据传输系统包括传输启动模块、传输中断模块、传输状态确定模块和传输停止模块,传输启动模块用于根据传输数据启动SPI传输,并获取传输数据的数据地址;传输中断模块用于根据传输数据和数据地址生成缓冲区的传输状态参数,传输状态参数包括数据传输地址、传输数据总量、已传输数据量和传输完成标志,根据数据传输地址和已传输数据量,将传输数据中的目标数据储存至SPI的传输寄存器,对目标数据进行SPI传输,并进行SPI的硬件中断;传输状态确定模块用于根据传输数据总量和已传输数据量更新传输完成标志;传输停止模块用于根据传输完成标志关闭SPI的硬件中断,以停止SPI传输。
在一些实施例中,基于中断和缓冲区的SPI数据传输系统能实现上述任意一项基于中断和缓冲区的SPI数据传输方法,SPI数据传输系统设置于无DMA和/或硬件SPI无缓存区的MCU控制器中,使得没有DMA及SPI硬件不带缓存的MCU能有效的进行数据传输,提高用户的使用体验。
参考图10,图10是本发明实施例提供的控制器的结构示意图。
本发明的一些实施例提供了一种控制器,控制器包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述任意一项实施例的基于中断和缓冲区的SPI数据传输方法,例如,执行以上描述的图1中的方法步骤S110至步骤S150、图2中的方法步骤S210至步骤S230、图3中的方法步骤S310至步骤S330、图4中的方法步骤S410至步骤S420、图5中的方法步骤S510至步骤S520、图6中的方法步骤S610至步骤S620。
本发明实施例的控制器1000包括一个或多个处理器1010和存储器1020,图10中以一个处理器1010及一个存储器1020为例。
处理器1010和存储器1020可以通过总线或者其他方式连接,图10中以通过总线连接为例。
存储器1020作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序以及非暂态性计算机可执行程序。此外,存储器1020可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。
在一些实施方式中,存储器1020可选包括相对于处理器1010远程设置的存储器1020,这些远程存储器可以通过网络连接至控制器1000,同时,上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
在一些实施例中,处理器执行计算机程序时按照预设间隔时间执行上述任意一项实施例的基于中断和缓冲区的SPI数据传输方法。
本领域技术人员可以理解,图10中示出的装置结构并不构成对控制器1000的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
在图10所示的控制器1000中,处理器1010可以用于调用存储器1020中储存的基于中断和缓冲区的SPI数据传输方法,从而实现基于中断和缓冲区的SPI数据传输方法。
基于上述控制器1000的硬件结构,提出本发明的基于中断和缓冲区的SPI数据传输系统的各个实施例,同时,实现上述实施例的基于中断和缓冲区的SPI数据传输方法所需的非暂态软件程序以及指令存储在存储器中,当被处理器执行时,执行上述实施例的基于中断和缓冲区的SPI数据传输方法。
此外,本发明实施例的还提供了一种基于中断和缓冲区的SPI数据传输系统,该基于中断和缓冲区的SPI数据传输系统包括由上述的控制器。
在一些实施例中,由于本发明实施例的基于中断和缓冲区的SPI数据传输系统具有上述实施例的控制器,并且上述实施例的控制器能够执行上述实施例的基于中断和缓冲区的SPI数据传输方法,因此,本发明实施例的基于中断和缓冲区的SPI数据传输系统的具体实施方式和技术效果,可以参照上述任一实施例的基于中断和缓冲区的SPI数据传输方法的具体实施方式和技术效果。
本发明实施例的还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机可执行指令,计算机可执行指令用于执行上述的基于中断和缓冲区的SPI数据传输方法,例如,可使得上述一个或多个处理器执行上述方法实施例中的基于中断和缓冲区的SPI数据传输方法,例如,执行以上描述的图1中的方法步骤S110至步骤S150、图2中的方法步骤S210至步骤S230、图3中的方法步骤S310至步骤S330、图4中的方法步骤S410至步骤S420、图5中的方法步骤S510至步骤S520、图6中的方法步骤S610至步骤S620。
以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,即可以位于一个地方,或者也可以分布到多个网络节点上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统可以被实施为软件、固件、硬件及其适当的组合。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机可读存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机可读存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机可读存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
以上是对本申请的较佳实施进行了具体说明,但本申请并不局限于上述实施方式,熟悉本领域的技术人员在不违背本申请精神的前提下还可作出种种等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。

Claims (10)

1.一种基于中断和缓冲区的SPI数据传输方法,所述SPI数据传输方法应用于SPI数据传输系统,其特征在于,所述SPI数据传输系统设置于无DMA和/或硬件SPI无缓存区的MCU控制器中,所述SPI数据传输方法包括:
根据传输数据启动SPI传输,并获取所述传输数据的数据地址和数据量;
根据所述数据地址和所述数据量生成缓冲区的传输状态参数,所述传输状态参数包括数据传输地址、传输数据总量、已传输数据量和传输完成标志;
根据所述数据传输地址和所述已传输数据量,将所述传输数据中的目标数据储存至SPI的传输寄存器,对所述目标数据进行SPI传输,并进行SPI的硬件中断;
根据所述传输数据总量和所述已传输数据量更新所述传输完成标志;
根据所述传输完成标志关闭SPI的硬件中断,以停止SPI传输。
2.根据权利要求1所述的基于中断和缓冲区的SPI数据传输方法,其特征在于,所述根据所述数据地址和所述数据量生成缓冲区的传输状态参数,包括:
将所述数据传输地址确定为所述数据地址;
将所述传输数据总量确定为所述数据量;
将已传输数据量和传输完成标志确定为0。
3.根据权利要求2所述的基于中断和缓冲区的SPI数据传输方法,其特征在于,所述根据所述数据传输地址和所述已传输数据量,将所述传输数据中的目标数据储存至SPI的传输寄存器,包括:
根据所述数据传输地址和所述已传输数据量确定目标数据地址;
根据所述目标数据地址得到所述传输数据中的目标数据;
将所述传输数据中的目标数据储存至SPI的传输寄存器,并更新所述已传输数据量。
4.根据权利要求3所述的基于中断和缓冲区的SPI数据传输方法,其特征在于,所述目标数据的大小为1字节,所述根据所述数据传输地址和所述已传输数据量,将所述传输数据中的目标数据储存至SPI的传输寄存器,对所述目标数据进行SPI传输,并进行SPI的硬件中断,包括:
根据所述数据传输地址和所述已传输数据量,将所述传输数据中的目标数据储存至SPI的传输寄存器,对所述目标数据进行SPI传输;
在根据所述目标数据进行SPI传输,并传输完成1字节后,进行SPI的硬件中断。
5.根据权利要求4所述的基于中断和缓冲区的SPI数据传输方法,其特征在于,在根据所述目标数据进行SPI传输,并传输完成1字节后,进行SPI的硬件中断之后,包括:
根据更新后的所述已传输数据量和所述数据传输地址更新所述目标数据地址;
根据更新后的所述目标数据地址对应的1字节数据确定为所述目标数据,并将所述目标数据储存至SPI的传输寄存器。
6.根据权利要求1所述的基于中断和缓冲区的SPI数据传输方法,其特征在于,所述根据所述传输数据总量和所述已传输数据量更新所述传输完成标志,包括:
在所述已传输数据量大于或者等于所述传输数据总量的情况下,将所述传输完成标志确定为1。
7.根据权利要求6所述的基于中断和缓冲区的SPI数据传输方法,其特征在于,所述根据所述传输完成标志关闭SPI的硬件中断,以停止SPI传输,包括:
在所述传输完成标志为1的情况下,关闭SPI的硬件中断,以停止SPI传输;
清除SPI的中断标准,并清除所述传输状态参数包括数据传输地址、传输数据总量、已传输数据量和传输完成标志。
8.一种基于中断和缓冲区的SPI数据传输系统,其特征在于,所述SPI数据传输系统设置于无DMA和/或硬件SPI无缓存区的MCU控制器中,所述SPI数据传输系统包括传输启动模块、传输中断模块、传输状态确定模块和传输停止模块,
所述传输启动模块,用于根据传输数据启动SPI传输,并获取所述传输数据的数据地址;
所述传输中断模块,用于根据所述传输数据和所述数据地址生成缓冲区的传输状态参数,所述传输状态参数包括数据传输地址、传输数据总量、已传输数据量和传输完成标志,根据所述数据传输地址和所述已传输数据量,将所述传输数据中的目标数据储存至SPI的传输寄存器,对所述目标数据进行SPI传输,并进行SPI的硬件中断;
所述传输状态确定模块,用于根据所述传输数据总量和所述已传输数据量更新所述传输完成标志;
所述传输停止模块,用于根据所述传输完成标志关闭SPI的硬件中断,以停止SPI传输。
9.一种控制器,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至7中任意一项所述的基于中断和缓冲区的SPI数据传输方法。
10.一种计算机可读存储介质,存储有计算机可执行指令,计算机可执行指令用于执行如权利要求1至7中任意一项所述的基于中断和缓冲区的SPI数据传输方法。
CN202211595009.2A 2022-12-13 2022-12-13 基于中断和缓冲区的spi数据传输方法、系统和控制器 Pending CN115858414A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211595009.2A CN115858414A (zh) 2022-12-13 2022-12-13 基于中断和缓冲区的spi数据传输方法、系统和控制器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211595009.2A CN115858414A (zh) 2022-12-13 2022-12-13 基于中断和缓冲区的spi数据传输方法、系统和控制器

Publications (1)

Publication Number Publication Date
CN115858414A true CN115858414A (zh) 2023-03-28

Family

ID=85672342

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211595009.2A Pending CN115858414A (zh) 2022-12-13 2022-12-13 基于中断和缓冲区的spi数据传输方法、系统和控制器

Country Status (1)

Country Link
CN (1) CN115858414A (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001249857A (ja) * 2000-03-07 2001-09-14 Matsushita Electric Ind Co Ltd ファイル転送システム
CN1754155A (zh) * 2003-01-17 2006-03-29 泰斯特网络公司 使用分布式文件系统进行存储式高速缓存的方法和系统
CN102495817A (zh) * 2011-12-08 2012-06-13 成都林海电子有限责任公司 一种基于pci总线的高速数据传输方法
KR20180045103A (ko) * 2016-10-24 2018-05-04 삼성전자주식회사 적응형 인터럽트를 생성하는 데이터 저장 장치 및 그것의 동작 방법
CN109189701A (zh) * 2018-08-20 2019-01-11 深圳忆联信息系统有限公司 一种针对嵌入式存储接口数据传输的方法及其系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001249857A (ja) * 2000-03-07 2001-09-14 Matsushita Electric Ind Co Ltd ファイル転送システム
CN1754155A (zh) * 2003-01-17 2006-03-29 泰斯特网络公司 使用分布式文件系统进行存储式高速缓存的方法和系统
CN102495817A (zh) * 2011-12-08 2012-06-13 成都林海电子有限责任公司 一种基于pci总线的高速数据传输方法
KR20180045103A (ko) * 2016-10-24 2018-05-04 삼성전자주식회사 적응형 인터럽트를 생성하는 데이터 저장 장치 및 그것의 동작 방법
CN109189701A (zh) * 2018-08-20 2019-01-11 深圳忆联信息系统有限公司 一种针对嵌入式存储接口数据传输的方法及其系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
李胜蓝;姜宏旭;符炜剑;陈姣;: "基于PCIe的多路传输系统的DMA控制器设计", 计算机应用, no. 03, 10 March 2017 (2017-03-10), pages 691 - 716 *

Similar Documents

Publication Publication Date Title
CN108681565B (zh) 区块链数据并行处理方法、装置、设备和存储介质
CN109597818A (zh) 数据更新方法、装置、存储介质和设备
US20190377593A1 (en) Communication method, apparatus and system for virtual machine and host machine
CN116303119B (zh) 冷热数据的识别方法、系统及存储介质
CN112799696A (zh) 固件升级方法和相关设备
CN110912990B (zh) 一种共识周期的更新方法及相关设备
CN111694848B (zh) 使用引用计数更新数据缓冲的方法及装置
CN111158607A (zh) 数据擦写操作的处理方法、系统、电子设备及存储介质
CN108108126B (zh) 一种数据处理方法、装置及设备
CN112883041A (zh) 一种数据更新方法、装置、电子设备及存储介质
CN115858414A (zh) 基于中断和缓冲区的spi数据传输方法、系统和控制器
CN113190334A (zh) 流程引擎的控制方法、装置、终端和存储介质
CN113590017A (zh) 用于处理数据的方法、电子设备和计算机程序产品
CN108446144B (zh) 一种应用程序启动方法、装置、终端及存储介质
US20190377577A1 (en) Dynamic adjustment of issue-to-issue delay between dependent instructions
CN110502891B (zh) 一种获取进程内存泄露的方法、装置、介质和电子设备
CN109995855B (zh) 一种数据获取方法、装置及终端
US6535943B1 (en) Information processing device enabling floating interrupt to be pending and a method executing an interrupt condition change instruction
CN113852610A (zh) 报文处理方法、装置、计算机设备和存储介质
CN113127082A (zh) 数据处理方法、服务器、服务节点、系统和存储介质
CN107454018B (zh) 报文缓存管理器异常的处理方法及装置
CN112527363A (zh) 软件包版本更新方法、装置、系统、设备及介质
CN113934692A (zh) 文件清理方法、装置、存储介质及设备
CN108269104B (zh) 媒体信息投放方法、投放引擎服务器和媒体信息投放系统
CN111625358A (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