CN116860688A - 一种数据传输方法、相关装置、设备以及可读存储介质 - Google Patents
一种数据传输方法、相关装置、设备以及可读存储介质 Download PDFInfo
- Publication number
- CN116860688A CN116860688A CN202310796994.1A CN202310796994A CN116860688A CN 116860688 A CN116860688 A CN 116860688A CN 202310796994 A CN202310796994 A CN 202310796994A CN 116860688 A CN116860688 A CN 116860688A
- Authority
- CN
- China
- Prior art keywords
- transmission data
- bit width
- transmission
- data
- spi
- 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
Links
- 230000005540 biological transmission Effects 0.000 title claims abstract description 497
- 238000000034 method Methods 0.000 title claims abstract description 59
- 230000015654 memory Effects 0.000 claims abstract description 39
- 230000002093 peripheral effect Effects 0.000 claims abstract description 39
- 238000012546 transfer Methods 0.000 claims description 35
- 238000004590 computer program Methods 0.000 claims description 7
- 239000000872 buffer Substances 0.000 description 43
- 230000008569 process Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 4
- 230000003139 buffering effect Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000000630 rising effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- 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)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
Abstract
本申请实施例提供了一种数据传输方法、相关装置、设备以及可读存储介质,该方法包括:获取第一传输数据;若单个第一传输数据的位宽小于或等于第一位宽,将相邻的N个第一传输数据进行合并,得到第二传输数据,第二传输数据的位宽小于或等于第二位宽,第二传输数据的位宽大于第一传输数据的位宽;将第二传输数据通过直接存储器访问DMA方式依次传输给串行外设接口的从设备。通过这种方式,可以减少DMA数据传输的间隔,提高数据传输的效率。
Description
技术领域
本发明涉及数据传输领域,尤其涉及一种数据传输方法、相关装置、设备以及可读存储介质。
背景技术
串行外围设备接口(SerialPeripheralInterface,SPI)是一种同步串行传输接口,主要用于微控制器和外围设备、微控制器与微控制器之间的通信。具有电路实现简单、总线引脚少、传输速率较快等特点。
传统的SPI接口包括4根信号线:SS(SlaveSelect,从机选择线)、SCK(SPIClock,SPI时钟线)、MOSI(MasterOutput/SlaveInput,主机输出从机输入线)和MISO(MasterInput/SlaveOutput,主机输入从机输出线)。
随着SPI接口技术的发展,人们对SPI接口的数据可靠性和吞吐率提出了越来越高的需求,主流的SPI存储器的传输速度超过了100MB/s。多数据通道、高速率、高可靠性的SPI通信,能够使得片上系统(SystemonChip,SoC)芯片可以快速访问外部存储器。这样可以减少SoC芯片内部的内存大小,减小SoC芯片的面积和功耗,从而极大地提升嵌入式系统的性能。
然而,SPI传输的工作配置众多,例如不同SPI接口设备所需的SPI接口时钟模式、数据采样模式、全双工/半双工通信模式、控制模式各不相同,而不同SPI存储器支持的数据通道模式(例如1/2/4/8比特的数据通道模式)也不尽相同。因此,SPI接口设备的兼容性问题不容忽视。另外,在SPI通信中,CPU对SPI控制器的工作配置进行调整会增加CPU的开销,从而影响CPU的性能。当SPI控制器在不同的工作配置之间进行切换时,CPU对SPI控制器工作配置的调整造成连续传输之间的等待时间过长,从而对数据传输连续性和多次SPI传输的速度会产生明显的瓶颈。
发明内容
本申请实施例提供了一种数据传输方法、相关装置、设备以及可读存储介质,通过该方法传输数据能有效减少数据传输时间,提高数据传输效率。
第一方面,本申请实施例提供了一种数据传输方法,包括:获取第一传输数据;若单个第一传输数据的位宽小于或等于第一位宽,将相邻的N个第一传输数据进行合并,得到第二传输数据,第二传输数据的位宽小于或等于第二位宽,第二传输数据的位宽大于第一传输数据的位宽;将第二传输数据通过直接存储器访问DMA方式依次传输给串行外设接口的从设备。在本申请实施例中,通过将数据合并后进行传输,在通过DMA方式传输的过程中,可以减少DMA操作的次数,从而可以减少数据传输过程中DMA操作的时间间隔的数量,从而提高数据传输的效率。
结合第一方面,在一种可能实现的方式中,将第二传输数据通过DMA方式传输给串行外设接口的从设备之前,还包括:设置第二传输数据的传输位宽;其中,设置第二传输数据的传输位宽,具体包括:将串行外设接口的传输位宽设置为第三位宽,第三位宽为第二传输数据的位宽;将DMA传输的位宽设置为第四位宽,第四位宽大于或等于第三位宽。这样,可以保证传输数据的位宽始终小于SPI的传输位宽和DMA传输位宽,避免因为传输数据的位宽大于SPI传输位宽和/或DMA传输位宽而造成数据不能正常传输。
结合第一方面,在一种可能实现的方式中,将相邻的N个第一传输数据进行合并,得到第二传输数据,具体包括:确定每个第二传输数据中合并的第一传输数据的数量N,N个第一传输数据合并后的位宽等于或最接近于第二位宽;将相邻的N个第一传输数据进行合并,得到第二传输数据。
结合第一方面,在一种可能实现的方式中,将相邻的N个第一传输数据进行合并,得到第二传输数据,具体包括:确定每个第二传输数据中合并的第一传输数据的数量N;其中,将第一传输数据以N个为一组进行合并后,第三传输数据的数量最少,第三传输数据为不进行数据合并的第一传输数据;将相邻的N个第一传输数据进行合并,得到第二传输数据。
结合第一方面,在一种可能实现的方式中,将相邻的N个第一传输数据进行合并,得到第二传输数据,具体包括:确定每个第二传输数据中合并的第一传输数据的数量N;其中,将第一传输数据以N个为一组进行合并后,第二传输数据和第三传输数据的总量最小,第三传输数据为不进行数据合并的第一传输数据;将相邻的N个第一传输数据进行合并,得到第二传输数据。
结合第一方面,在一种可能实现的方式中,第二位宽为8比特或16比特或32比特。
第二方面,本申请实施例提供了一种数据传输装置,该装置包括串行外设接口主控制器以及串行外设接口发送模块,其中:串行外设接口主控制器,用于获取第一传输数据;若单个第一传输数据的位宽小于或等于第一位宽,将相邻的N个第一传输数据进行合并,得到第二传输数据,第二传输数据的位宽小于或等于第二位宽,第二传输数据的位宽大于第一传输数据的位宽;将第二传输数据发送给串行外设接口发送模块;串行外设接口发送模块,用于将第二传输数据通过DMA方式依次传输给串行外设接口的从设备。
结合第二方面,在一种可能实现的方式中,串行外设接口发送模块还用于设置第二传输数据的传输位宽;其中,设置第二传输数据的传输位宽,具体包括:将串行外设接口的传输位宽设置为第三位宽,第三位宽为第二传输数据的位宽;将DMA传输的位宽设置为第四位宽,第四位宽大于或等于第三位宽。
结合第二方面,在一种可能实现的方式中,将相邻的N个第一传输数据进行合并,得到第二传输数据,具体包括:确定每个第二传输数据中合并的第一传输数据的数量N,N个第一传输数据合并后的位宽等于或最接近于第二位宽;将相邻的N个第一传输数据进行合并,得到第二传输数据。
结合第二方面,在一种可能实现的方式中,将相邻的N个第一传输数据进行合并,得到第二传输数据,具体包括:确定每个第二传输数据中合并的第一传输数据的数量N;其中,将第一传输数据以N个为一组进行合并后,第三传输数据的数量最少,第三传输数据为不进行数据合并的第一传输数据;将相邻的N个第一传输数据进行合并,得到第二传输数据。
结合第二方面,在一种可能实现的方式中,将相邻的N个第一传输数据进行合并,得到第二传输数据,具体包括:确定每个第二传输数据中合并的第一传输数据的数量N;其中,将第一传输数据以N个为一组进行合并后,第二传输数据和第三传输数据的总量最小,第三传输数据为不进行数据合并的第一传输数据;将相邻的N个第一传输数据进行合并,得到第二传输数据。
第三方面,本申请实施例提供了一种数据传输的设备,该设备包括存储器和处理器;
其中,该存储器用于存储程序代码,该处理器用于调用所述存储器存储的程序代码,执行:获取第一传输数据;若单个第一传输数据的位宽小于或等于第一位宽,将相邻的N个第一传输数据进行合并,得到第二传输数据;通过串行外设接口发送模块将第二传输数据通过直接存储器访问DMA方式依次传输给串行外设接口的从设备。
结合第三方面,在一种可能实现的方式中,该处理器用于调用所述存储器存储的程序代码执行:设置第二传输数据的传输位宽;其中,设置第二传输数据的传输位宽,具体包括:将串行外设接口的传输位宽设置为第三位宽,第三位宽为第二传输数据的位宽;将DMA传输的位宽设置为第四位宽,第四位宽大于或等于第三位宽。
结合第三方面,在一种可能实现的方式中,该处理器用于调用所述存储器存储的程序代码执行:确定每个第二传输数据中合并的第一传输数据的数量N,N个第一传输数据合并后的位宽等于或最接近于第二位宽;将相邻的N个第一传输数据进行合并,得到第二传输数据。
结合第三方面,在一种可能实现的方式中,该处理器用于调用所述存储器存储的程序代码执行:确定每个第二传输数据中合并的第一传输数据的数量N;其中,将第一传输数据以N个为一组进行合并后,第三传输数据的数量最少,第三传输数据为不进行数据合并的第一传输数据;将相邻的N个第一传输数据进行合并,得到第二传输数据。
结合第三方面,在一种可能实现的方式中,该处理器用于调用所述存储器存储的程序代码执行:确定每个第二传输数据中合并的第一传输数据的数量N;其中,将第一传输数据以N个为一组进行合并后,第二传输数据和第三传输数据的总量最小,第三传输数据为不进行数据合并的第一传输数据;将相邻的N个第一传输数据进行合并,得到第二传输数据。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时,实现上述第一方面及其各种可能实现的方式中数据传输方法。
第五方面,本申请实施例提供了一种计算机程序,该计算机程序包括指令,当所述计算机程序被计算机执行时,使得引脚配置的设备可以执行上述第一方面及其各种可能实现的方式中数据传输的设备所执行的流程。
附图说明
下面对本申请实施例用到的附图进行介绍。
图1是本申请实施例提供的一种DMA传输的信号波形示例图;
图2是本申请实施例提供的一种LCD显示屏数据写入效果图;
图3是本申请实施例提供的一种数据传输方法的流程图;
图4是本申请实施例提供了一种存储器的数据缓存示例图;
图5是本申请实施例提供了一种数据传输装置的结构示意图;
图6是本申请实施例提供了一种数据传输设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或者特性可以包含在本实施例申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是相同的实施例,也不是与其它实施例互斥的独立的或是备选的实施例。本领域技术人员可以显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。本申请的说明书和权利要求书及所述附图中术语“第一”、“第二”、“第三”等是区别于不同的对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如,包含了一系列步骤或单元,或者可选地,还包括没有列出的步骤或单元,或者可选地还包括这些过程、方法、产品或设备固有的其它步骤或单元。附图中仅示出了与本申请相关的部分而非全部内容。在更加详细地讨论示例性实施例之前,应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
在本说明书中使用的术语“部件”、“模块”、“系统”、“单元”等用于表示计算机相关的实体、硬件、固件、硬件和软件的组合、软件或执行中的软件。例如,单元可以是但不限于在处理器上运行的进程、处理器、对象、可执行文件、执行线程、程序和/或分布在两个或多个计算机之间。此外,这些单元可从在上面存储有各种数据结构的各种计算机可读介质执行。单元可例如根据具有一个或多个数据分组(例如来自与本地系统、分布式系统和/或网络间的另一单元交互的第二单元数据。例如,通过信号与其它系统交互的互联网)的信号通过本地和/或远程进程来通信。
串行外设接口(Serial Peripheral Interface,SPI)总线是一种高速的、全双工、同步的通信总线,在芯片的管脚上只占用四个引脚,同时为印制电路板(Printed CircuitBoard,PCB)的布局上节省空间,提供方便。SPI总线以主从方式工作,这种工作模式通常有一个主设备和一个或多个从设备,需要至少4根传输线。
这4根传输线分别是:主设备数据输入(Master Input Slave Output,MISO)、主设备数据输出(Master Output Slave Input,MOSI)、时钟(Serial Clock,CLK)以及片选(Chip Select,CS)。
其中,MISO为主设备数据输入,从设备数据输出;MOSI为主设备数据输出,从设备数据输入;CLK为主设备产生的时钟信号;CS为主设备控制的从设备的使能信号。CS是从芯片是否被主芯片选中的控制信号,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),主芯片对从芯片的操作才有效。
SPI总线在传输数据的过程中,是将数据一位一位传输的,且SPI的数据输入线和输出线相互独立。所以,允许同时完成数据的输入和输出。在数据传输的过程中,由CLK信号线提供时钟脉冲,数字分量串行接口(Serial Digital Interface,SDI)、数据串行输出(Serial Data Output,SDO)线根据时钟脉冲进行数据传输。通过SDO线输出数据,数据在时钟脉冲的上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取,完成一位数据传输。同理,数据的输入也使用相同的方式。因此,至少需要8次时钟信号的改变(上沿和下沿为一次),才能完成8位数据的传输。
CLK信号线只由主设备控制,从设备不能控制CLK信号线,在一个基于SPI的设备中,至少有一个主控设备,当没有时钟跳变时,从设备不采集或传送数据。也就是说,主设备通过对CLK时钟线的控制可以完成对数据传输的控制。这样,SPI总线的数据传输相较于普通的数据传输而言,普通的串行数据传输一次连续传送至少8位数据,而SPI允许数据一位一位的传送,甚至允许暂停。
在使用SPI总线传输大数据时,通常使用直接内存访问(Direct Memory Access,DMA)的方式进行传输。DMA传输允许不同速度的硬件设备来沟通,而不需要依赖于CPU大量中断负载。从而避免了CPU因需要从用户缓存器把每一条数据复制到寄存器,然后把它们再次写回到新的地方的时间段中,CPU不能处理其它进程的问题。
DMA传输常用于将数据从一个设备的内存区传输到另外一个设备中。当CPU初始化传输动作,传输动作本身是由DMA控制器来实行和完成。例如,将数据从一个外部内存的区块移动到芯片内部更快的内存去。这样,大大节省了CPU中断负载的时间,使其可以被重新调度去处理其他的工作,从而可以更加合理地利用CPU的资源。
DMA传输的位宽一般有8bit、16bit以及32bit这三种,即:使用DMA的方式传输数据一次最多传输8bit或16bit或32bit的数据。DMA的位宽配置可以根据SPI传输的位宽来配置,要满足DMA的传输位宽始终大于或等于SPI的传输位宽,可以有以下三种情况:
第一种情况:当SPI的传输位宽小于8bit时,将DMA的传输位宽配置为8bit。
第二种情况:当SPI的传输位宽大于或等于8bit且小于16bit时,将DMA的传输位宽配置为16bit。
第三种情况:当SPI的传输位宽大于或等于16bit,小于或等于32bit时,将DMA的传输位宽配置为32bit。
在本申请实施例中,将SPI的传输位宽以第一位宽表示,将DMA的传输位宽以第二位宽表示。
下面,结合图1对DMA传输的信号波形进行简单介绍。假设SPI总线的传输位宽为9bit,DMA的传输位宽为16bit,时钟信号波形CLK如图1所示。由图1可知,SPI总线通过DMA传输方式单次仅传输9bit的数据,在每次DMA传输数据之间,会有一个时间间隔,这个时间间隔是DMA的处理时间,也即是DMA操作所需的时间。在数据传输的过程中,若DMA操作次数越多,会导致DMA的时间间隔的数量越多,会造成SPI从设备接收数据的时间变长,从而会降低数据传输的效率,进而延长了对端数据处理的等待时间。
以SPI总线挂载LCD屏为例,进行说明。当使用SPI总线外接LCD屏时,LCD屏的分辨率一般是240*320,若SPI采用三线9bit模式。那么,一屏的数据一般是240*320*2字节(byte),即:每一个像素点的数据大小为2字节。那么,传输一屏的数据需要进行153600次DMA操作,就会存在153599个DMA的时间间隔。这样,就会导致一屏数据写入LCD显存的时间过长,在LCD刷屏时,可能出现如图2所示的只刷半屏的情况。如图2所示,在屏幕211中只显示部分图像,这就大大降低了用户的使用体验。
因此,为了解决在DMA传输过程中,数据传输效率低的问题,本申请实施例提供了一种数据传输方法,该方法包括:SPI主控制器判断缓存区中每个字段的数据的位宽大小,在每个字段数据的位宽较小的情况下,SPI主控制器将多个小字段数据合并成一个大小小于或等于第一位宽的大数据。然后,SPI主控制器通过SPI总线将该大数据传输给从设备。通过上述将多字字段较小的数据合并成大数据进行DMA传输,能够减少在DMA传输过程中DMA时间间隔的数量,从而提高数据传输效率。
下面,结合附图对本申请实施例提供的一种数据传输方法的流程进行介绍。请参见图3,图3是本申请实施例提供的一种数据传输方法的流程图,具体流程如下:
S301:SPI主控制器从第一缓存区中获取第一传输数据。
具体的,在使用SPI总线传输数据之前,SPI主控制器要先在第一缓存区中获取第一传输数据。
其中,第一缓存区用于缓存待传输的数据,该待传输的数据为第一传输数据。在第一缓存区中,第一传输数据是按照顺序缓存在第一缓存区中,且单个第一传输数据的位宽大小均相同(例如,都为9bit)。示例性的,第一缓存区可以为用户缓存区。
如图4所示为本申请实施例提供的第一传输数据缓存在第一缓存区中的示例图。如图4所示,第一传输数据是按照顺序缓存在第一缓存区中的,每个第一数据的大小均为9bit,第一传输数据按照顺序编号(假设在第一缓存区中缓存有10个第一传输数据,顺序编号分别为0~9)分别存储在第一缓存区对应的位置中。例如,编号为0的第一传输数据存储在第一缓存区中编号为0的缓存区域中,编号为1的第一传输数据存储在用户缓存区中编号为1的缓存区域中,……以此类推。SPI主控制器在接收到数据传输的指令后,会在第一缓存区中按照区域的编号依次获取第一传输数据,并解析第一传输数据,从而得到每个第一传输数据的比特数(即第一传输数据的位宽)。
S302:所述SPI主控制器判断单个第一传输数据的位宽是否小于或等于第一位宽,若判断为是,执行步骤S303,若判断为否,执行步骤S309。
具体的,SPI主控制器在获取到单个第一传输数据的位宽后,可以判断单个第一传输数据的位宽是否小于或等于第一位宽。其中,第一位宽为DMA传输的最大位宽值的二分之一,即:若DMA传输的最大位宽为32bit(通过DMA方式传输数据一次最多传输32bit的数据),那么第一位宽为16bit。
S303:所述SPI主控制器依次将第一缓存区中相邻N个第一传输数据进行合并,得到M个第二传输数据,每个第二传输数据的位宽小于或等于第二位宽。
具体的,第二位宽可以为DMA传输的最大位宽(例如,DMA传输的最大位宽为32bit)。SPI主控制器在确定单个第一传输数据的位宽小于或等于第一位宽后,SPI主控制器将第一缓存区中所有的第一传输数据以相邻N个第一传输数据为一组,将每组的第一传输数据进行合并,从而得到位宽小于或等于第二位宽的第二传输数据。
例如,假设在第一缓存区中有12个第一传输数据(编号分别为0~11),每个第一传输数据的位宽为9bit,DMA传输位宽为32bit。那么,SPI主控制器可以将3(N=3)个相邻的第一传输数据作为一组,即:将编号为0~2的第一传输数据作为一组,将编号为3~5的第一传输数据作为一组,将编号为6~8的第一传输数据作为一组,将编号为9~11的第一传输数据作为一组,将每一组的第一传输数据进行合并,从而得到4(M=4)个比特数为27bit的第二传输数据。
在一些情况下,由于N和第一缓存区中第一传输数据的数量不同,可能存在未合并的第一传输数据,未参与合并的第一传输数据为第三传输数据。例如,若在第一缓存区中存在13个第一传输数据(编号分别为0~12),若N=3,那么编号为12的第一传输数据就未参与合并,编号12的第一传输数据为第三传输数据。
在一些实施例中,SPI主控制器可以将第一缓存区中所有的第一传输数据以相邻N个第一传输数据为一组,将每组的第一传输数据进行合并,从而得到位宽小于且最接近于第二位宽,或者等于第二位宽的第二传输数据。
例如,假设在第一缓存区有10个第一传输数据,每个第一传输数据的位宽为9bit,DMA传输的最大位宽为32bit。那么,SPI主控制器合并第一传输数据得到第二传输数据的方法有两种:
第一种方法,SPI主控制器可以将每3个相邻的第一传输数据进行合并,得到3个位宽为27bit的第二传输数据和1个位宽为9bit的第三传输数据。
第二种方法,SPI主控制器将每2个相邻的第一传输数据进行合并,得到5个位宽为18Bit的第二传输数据。由于要求单个第二传输数据的位宽最接近第二位宽。因此,SPI主控制器选择第一种方法对多个第一传输数据进行合并,从而得到第二传输数据,即:SPI主控制器将每3个相邻的第一传输数据进行合并,从而得到3个位宽为27bit的第二传输数据和1个位宽为9bit的第三传输数据。
在一些实施例中,SPI主控制器可以根据第三传输数据数量最小原则依次将第一缓存区中N个相邻第一传输数据进行合并,从而得到M个第二传输数据。
例如,假设有10个第一传输数据,每个第一传输数据的位宽为9bit,DMA传输的最大位宽为32bit。那么,SPI主控制器合并第一传输数据得到第二传输数据的方法有两种:
第一种方法,SPI主控制器可以将每3个相邻的第一传输数据进行合并,得到3个位宽为27bit的第二传输数据和1个位宽为9bit的第三传输数据。
第二种方法,SPI主控制器将每2个相邻的第一传输数据进行合并,得到5个位宽为18Bit的第二传输数据。第三传输数据的数量为0。由于要求第三传输数据的数量最小。因此,SPI主控制器选择第二种方法对第一缓存区中的每2个相邻的第一传输进行合并,从而得到5个位宽为18bit的第二传输数据。
在一些实施例中,SPI主控制器可以计算所有将第一传输数据合并成第二传输数据的方法对应的第二传输数据与第三传输数据的数量之和L。然后,按照L最小的对应合并方案对其获取的第一传输数据进行合并,从而得到第二传输数据。
示例性的,假设有10个第一传输数据,每个第一传输数据的位宽为9bit,DMA传输的最大位宽为32bit。那么,SPI主控制器合并第一传输数据得到第二传输数据的方法有两种:
第一种方法,SPI主控制器可以将每3个相邻的第一传输数据进行合并,得到3个位宽为27bit的第二传输数据和1个位宽为9bit的第三传输数据。那么第一传输数据和第三传输数据的数量之和为4。第二种方法,SPI主控制器将每2个相邻的第一传输数据进行合并,得到5个位宽为18Bit的第二传输数据。第三传输数据的数量为0。那么,第一传输数据和第三传输数据的数量之和为5。因此SPI主控制器可以选择第一种方法对第一传输数据进行合并从而得到第二传输数据。在一种可能实现的方式中,若存在两种及其以上的方法对应的L相同且最小,则SPI主控制器可以选择这两种方法中的任意一种合并第一传输数据,从而得到第二传输数据。
S304:所述SPI主控制器将第二传输数据和第三传输数据依次缓存在第二缓存区中。
具体的,SPI主控制器在将第一传输数据合并,得到第二传输数据后,SPI主控制器可以依次将第二传输数据以及第三传输数据(未合并的第一传输数据)依次存储在第二缓存区中。
示例性的,SPI主控制器可以根据第二传输数据的编号将第二传输数据存储在第二缓存区的对应编号的地址区域中。例如,对于编号为0的第二传输数据,SPI主控制器可以将其存储在编号为0的第二缓存区的缓存区域中,对于编号为1的第二传输数据,SPI主控制器可以将其存储在编号为1的第二缓存区的缓存区域中,……以此类推。SPI主控制器在存储在将所有第二传输数据存储到第二缓存区后,SPI主控制器再根据第三传输数据的编号(未参与合并的第一传输数据)将其存储到第二缓存区对应的缓存区域中。
S305:所述SPI主控制器将所述第二缓存区的地址信息发送给SPI发送模块。
具体的,SPI主控制器在将第二传输数据和第三传输数据缓存到第二缓存区中后,SPI主控制器可以将第二缓存区的地址信息发送给SPI发送模块,从而触发SPI发送模块配置SPI的传输位宽以及DMA的传输位宽,进而将第二传输数据和第三传输数据通过SPI总线依次传输给SPI从设备(例如,LCD显示屏)。示例性的,SPI发送模块可以为SPI接口,所述SPI接口为软件接口。
S306:所述SPI发送模块基于所述第二缓存区的地址信息从第二缓存区中依次获取第二传输数据和第三传输数据。
S307:所述SPI发送模块根据单个第二传输数据的位宽设置SPI传输位宽和DMA传输位宽。
具体的,SPI发送模块从第二缓存区中获取到第二传输数据后,解析单个第二传输数据的比特数,并根据单个第二传输数据的比特数设置SPI传输位宽和DMA传输位宽。
其中,SPI传输位宽用于指示通过SPI总线单次传输数据的最大比特数,DMA位宽用于指示通过DMA方式单次传输数据的最大比特数,SPI传输位宽大于或等于单个第二传输数据的比特数,DMA传输位宽大于或等于SPI传输位宽。
在一些实施例中,DMA传输位宽有8bit、16bit以及32bit这三种。因此,SPI发送模块可以根据单个第二传输数据的比特数对应选择这三个数值中的一个。例如,假设单个第二传输数据的比特数是27bit,可以将SPI传输位宽设置为27bit,将DMA传输位宽设置为32bit。又例如,若单个第二传输数据的比特数是9bit,可以将SPI传输位宽设置为9bit,将DMA传输位宽设置为16bit。
S308:所述SPI发送模块依次将第二传输数据和第三传输数据通过DMA的传输方式发送给SPI从设备。
具体的,SPI发送模块可以依次将第二传输数据通过DMA的传输方式经由SPI总线发送给SPI从设备。
其中,在第二传输数据传输完毕后,在存在第三传输数据的情况下,SPI发送模块可以依次将第三传输数据通过DMA的传输方式发送给SPI从设备。应理解,在SPI发送模块依次将第三传输数据发送给SPI从设备之前,SPI发送模块可以根据单个第三传输数据的位宽设置SPI传输位宽和DMA传输位宽,可以参考上述步骤S307中的相关描述。
S309:所述SPI主控制器将所述第一传输数据发送给所述SPI发送模块。
S310:所述SPI发送模块依次将第一传输数据发送给SPI从设备。
本申请实施例,SPI主控制器在通过SPI总线传输数据之前,SPI总控制器将待传输的第一传输数据按照合并成多个第二数据传输数据进行传输。由于每两次DMA传输数据之间都会有DMA时间间隔。因此,通过将第一传输数据域合并成第二传输数据进行数据传输,可以有效减少DMA数据传输的时间间隔的数量,从而减少数据传输时间,提高数据传输效率。
请参见图5,图5是本申请实施例提供了一种数据传输装置的结构示意图,该数据传输装置50包括:串行外设接口主控制器501以及串行外设接口发送模块502,其中:
串行外设接口主控制器501,用于获取第一传输数据;
若单个第一传输数据的位宽小于或等于第一位宽,将相邻的N个第一传输数据进行合并,得到第二传输数据,第二传输数据的位宽小于或等于第二位宽,第二传输数据的位宽大于第一传输数据的位宽;
将第二传输数据发送给串行外设接口发送模块502;
串行外设接口发送模块502,用于将第二传输数据通过DMA方式依次传输给串行外设接口的从设备。
在一种可能实现的方式中,串行外设接口发送模块502还用于设置第二传输数据的传输位宽;其中,设置第二传输数据的传输位宽,具体包括:将串行外设接口的传输位宽设置为第三位宽,第三位宽为第二传输数据的位宽;将DMA传输的位宽设置为第四位宽,第四位宽大于或等于第三位宽。
在一种可能实现的方式中,将相邻的N个第一传输数据进行合并,得到第二传输数据,具体包括:确定每个第二传输数据中合并的第一传输数据的数量N,N个第一传输数据合并后的位宽等于或最接近于第二位宽;将相邻的N个第一传输数据进行合并,得到第二传输数据。
在一种可能实现的方式中,将相邻的N个第一传输数据进行合并,得到第二传输数据,具体包括:确定每个第二传输数据中合并的第一传输数据的数量N;其中,将第一传输数据以N个为一组进行合并后,第三传输数据的数量最少,第三传输数据为不进行数据合并的第一传输数据;将相邻的N个第一传输数据进行合并,得到第二传输数据。
在一种可能实现的方式中,将相邻的N个第一传输数据进行合并,得到第二传输数据,具体包括:确定每个第二传输数据中合并的第一传输数据的数量N;其中,将第一传输数据以N个为一组进行合并后,第二传输数据和第三传输数据的总量最小,第三传输数据为不进行数据合并的第一传输数据;将相邻的N个第一传输数据进行合并,得到第二传输数据。
请参见图6,图6是数据传输设备的结构示意图。如图6所示,该数据传输设备60包括:至少一个处理器601、存储器602。可选的,该数据传输设备60还可包括网络接口603,所述处理器601、网络接口603以及存储器602通过内部总线604相互连接。其中,所述处理器601、存储器602以及网络接口603之间可以交互数据,网络接口603受所述处理器601的控制用于收发消息,存储器602用于存储计算机程序,所述计算机程序包括程序指令,处理器601用于执行存储器602存储的程序指令。其中,所述处理器601调用该计算机指令以使得该设备,执行以下步骤:获取第一传输数据;若单个第一传输数据的位宽小于或等于第一位宽,将相邻的N个第一传输数据进行合并,得到第二传输数据;通过串行外设接口发送模块将第二传输数据通过直接存储器访问DMA方式依次传输给串行外设接口的从设备。
在一种可能实现的方式中,所述处理器601调用该计算机指令以使得该数据传输设备60执行:设置第二传输数据的传输位宽;其中,设置第二传输数据的传输位宽,具体包括:将串行外设接口的传输位宽设置为第三位宽,第三位宽为第二传输数据的位宽;将DMA传输的位宽设置为第四位宽,第四位宽大于或等于第三位宽。
在一种可能实现的方式中,所述处理器601调用该计算机指令以使得该数据传输设备60执行:确定每个第二传输数据中合并的第一传输数据的数量N,N个第一传输数据合并后的位宽等于或最接近于第二位宽;将相邻的N个第一传输数据进行合并,得到第二传输数据。
在一种可能实现的方式中,所述处理器601调用该计算机指令以使得该数据传输设备60执行:确定每个第二传输数据中合并的第一传输数据的数量N;其中,将第一传输数据以N个为一组进行合并后,第三传输数据的数量最少,第三传输数据为不进行数据合并的第一传输数据;将相邻的N个第一传输数据进行合并,得到第二传输数据。
在一种可能实现的方式中,所述处理器601调用该计算机指令以使得该数据传输设备60执行:确定每个第二传输数据中合并的第一传输数据的数量N;其中,将第一传输数据以N个为一组进行合并后,第二传输数据和第三传输数据的总量最小,第三传输数据为不进行数据合并的第一传输数据;将相邻的N个第一传输数据进行合并,得到第二传输数据。
本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时,实现上述实施例及其各种可能的实现方式中的数据传输的方法。
本申请实施例提供了一种计算机程序,该计算机程序包括指令,当所述计算机程序被计算机执行时,使得通信设备可以执行上述实施例及其各种可能的实现方式中通信设备所执行的流程。
需要说明的是,上述实施例中的存储器,可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其它类型的静态存储设备,随机存储器(random accessmemory,RAM)或者可存储信息和指令的其它类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、只读光盘(compact disc read-only memory,CD-ROM)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于于此。存储器可以是独立存在,通过总线于处理器相连接。存储器可以和处理器集成在一起。
上述实施例中的处理器,可以是通用中央处理器(CPU),微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制以上方案程序执行的集成电路。
对于前述各方法实施例,为了简单描述,故将其都表达为一系列的动作组合,但是本领域的技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可能可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
上述作为分离部件说明的单元可以是或者不是也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,既可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以为个人计算机、服务器或者网络设备等,具体可以是计算机设备中的处理器)执行本申请各个实施例上述方法的全部或部分步骤。其中,前述的存储介质可包括:U盘、移动硬盘、磁碟、光盘、只读存储器(read-only memory,ROM)或者随机存取存储器(random access memory,RAM)等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (9)
1.一种数据传输方法,其特征在于,包括:
获取第一传输数据;
若所述单个第一传输数据的位宽小于或等于第一位宽,将相邻的N个第一传输数据进行合并,得到第二传输数据,所述第二传输数据的位宽小于或等于第二位宽,所述第二传输数据的位宽大于所述第一传输数据的位宽;
将所述第二传输数据通过直接存储器访问DMA方式依次传输给串行外设接口的从设备。
2.如权利要求1所述的方法,其特征在于,所述将所述第二传输数据通过DMA方式传输给串行外设接口的从设备之前,还包括:设置所述第二传输数据的传输位宽;
其中,所述设置所述第二传输数据的传输位宽,具体包括:
将串行外设接口的传输位宽设置为第三位宽,所述第三位宽为所述第二传输数据的位宽;
将DMA传输的位宽设置为第四位宽,所述第四位宽大于或等于所述第三位宽。
3.如权利要求1-2任一项所述的方法,其特征在于,所述将相邻的N个第一传输数据进行合并,得到第二传输数据,具体包括:
确定每个第二传输数据中合并的第一传输数据的数量N,所述N个第一传输数据合并后的位宽等于或最接近于所述第二位宽;
将相邻的N个第一传输数据进行合并,得到第二传输数据。
4.如权利要求1-2任一项所述的方法,其特征在于,所述将相邻的N个第一传输数据进行合并,得到第二传输数据,具体包括:
确定每个第二传输数据中合并的第一传输数据的数量N;其中,将所述第一传输数据以N个为一组进行合并后,第三传输数据的数量最少,所述第三传输数据为不进行数据合并的第一传输数据;
将相邻的N个第一传输数据进行合并,得到第二传输数据。
5.如权利要求1-2任一项所述的方法,其特征在于,所述将相邻的N个第一传输数据进行合并,得到第二传输数据,具体包括:
确定每个第二传输数据中合并的第一传输数据的数量N;其中,将所述第一传输数据以N个为一组进行合并后,第二传输数据和第三传输数据的总量最小,所述第三传输数据为不进行数据合并的第一传输数据;
将相邻的N个第一传输数据进行合并,得到第二传输数据。
6.如权利要求2所述的方法,其特征在于,所述第二位宽为8比特或16比特或32比特。
7.一种数据传输的装置,其特征在于,所述装置包括串行外设接口主控制器以及串行外设接口发送模块,其中:
所述串行外设接口主控制器,用于获取第一传输数据;
若所述单个第一传输数据的位宽小于或等于第一位宽,将相邻的N个第一传输数据进行合并,得到第二传输数据,所述第二传输数据的位宽小于或等于第二位宽,所述第二传输数据的位宽大于所述第一传输数据的位宽;
将所述第二传输数据发送给所述串行外设接口发送模块;
所述串行外设接口发送模块,用于将所述第二传输数据通过DMA方式依次传输给串行外设接口的从设备。
8.一种数据传输的设备,其特征在于,包括存储器和处理器;
其中,所述存储器用于存储程序代码,所述处理器用于调用所述存储器存储的程序代码,执行如权利要求1-6任意一项所述的数据传输方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时,实现如权利要求1-6任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310796994.1A CN116860688A (zh) | 2023-06-30 | 2023-06-30 | 一种数据传输方法、相关装置、设备以及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310796994.1A CN116860688A (zh) | 2023-06-30 | 2023-06-30 | 一种数据传输方法、相关装置、设备以及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116860688A true CN116860688A (zh) | 2023-10-10 |
Family
ID=88231547
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310796994.1A Pending CN116860688A (zh) | 2023-06-30 | 2023-06-30 | 一种数据传输方法、相关装置、设备以及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116860688A (zh) |
-
2023
- 2023-06-30 CN CN202310796994.1A patent/CN116860688A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7506093B2 (en) | Apparatus and method for converting parallel and serial PCI hot plug signals | |
JP6517243B2 (ja) | リンクレイヤ/物理レイヤ(phy)シリアルインターフェース | |
CN112802518B (zh) | 数据写入方法、片上系统芯片及计算机可读存储介质 | |
CA2723056C (en) | Multimedia card interface method, computer program product and apparatus | |
US8184110B2 (en) | Method and apparatus for indirect interface with enhanced programmable direct port | |
KR100403404B1 (ko) | 양방향병렬신호인터페이스 | |
CN112559410A (zh) | 一种基于fpga的lio总线扩展uart外设系统及方法 | |
AU756039B2 (en) | An interface apparatus for connecting devices operating at different clock rates, and a method of operating the interface | |
CN116860688A (zh) | 一种数据传输方法、相关装置、设备以及可读存储介质 | |
EP2136298A1 (en) | Data saving system, data returning system, data saving method and data returning method | |
JP2007011783A (ja) | データ転送制御装置及び電子機器 | |
JP4442523B2 (ja) | データ転送制御装置及び電子機器 | |
KR100591243B1 (ko) | 온-칩 직렬 주변장치 버스 시스템 및 그 운용방법 | |
KR100361511B1 (ko) | 다기능 직렬 통신 인터페이스 장치 | |
CN117056274B (zh) | 一种用于单核处理器的并行数据通信架构及方法 | |
CN114880270B (zh) | Spi设备及其数据传输方法 | |
WO2024017337A1 (zh) | 一种fifo存储控制电路、方法、芯片及电子设备 | |
US11609876B1 (en) | USB multiplexing single-wire interface unit, chip and communication system | |
CN100419851C (zh) | 移动终端及用于控制该移动终端的系统和方法 | |
CN116610601A (zh) | 一种数据传输装置及其控制方法、装置、介质 | |
CN116149453A (zh) | 控制器、电子设备和数据传输系统 | |
CN115729863A (zh) | 数据传输方法、装置、电子设备及介质 | |
CN117311662A (zh) | 一种数据清除系统及方法 | |
JP2001160001A (ja) | 半導体集積回路及びチップ間記憶部同期化方法 | |
JPS58200323A (ja) | 入出力処理装置 |
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 |