CN113312284A - 数据传输方法、装置、***、存储介质及电子装置 - Google Patents
数据传输方法、装置、***、存储介质及电子装置 Download PDFInfo
- Publication number
- CN113312284A CN113312284A CN202110621062.4A CN202110621062A CN113312284A CN 113312284 A CN113312284 A CN 113312284A CN 202110621062 A CN202110621062 A CN 202110621062A CN 113312284 A CN113312284 A CN 113312284A
- Authority
- CN
- China
- Prior art keywords
- data
- potential
- slave
- host
- target pin
- 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 109
- 238000000034 method Methods 0.000 title claims abstract description 47
- 238000004590 computer program Methods 0.000 claims description 16
- 238000001514 detection method Methods 0.000 claims description 3
- 230000000694 effects Effects 0.000 abstract description 7
- 238000005516 engineering process Methods 0.000 abstract description 5
- 238000004891 communication Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 8
- 235000015429 Mirabilis expansa Nutrition 0.000 description 4
- 244000294411 Mirabilis expansa Species 0.000 description 4
- 235000013536 miso Nutrition 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
Images
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/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0002—Serial port, e.g. RS232C
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
本发明实施例提供了一种数据传输方法、装置、***、存储介质及电子装置;其中,该方法包括:在确定从机中存在待传输至主机中的第一数据的情况下,获取所述从机中设置的第一直接存储器访问DMA的数据接收状态;确定所述主机与所述从机之间预先设置的目标引脚的电位;在确定所述数据接收状态为未接收数据状态,且目标引脚的电位为第二电位的情况下,将目标引脚的电位调整为第一电位,以指示主机读取从机中的第一数据。通过本发明,解决了相关技术中存在的数据传输过程中从机向主机发送数据会造成浪费处理器资源、只能传输定长数据的问题,达到节省处理器资源、传输不定长数据的效果。
Description
技术领域
本发明实施例涉及通信领域,具体而言,涉及一种数据传输方法、装置、***、存储介质及电子装置。
背景技术
在相关技术中,SPI主、从机的数据传输过程中,从机可以通过令主机周期性产生时钟信号的方式主动通过SPI(Serial Peripheral Interface,串行外设接口)向主机发送数据,但采用令主机周期性产生时钟信号的方式发送数据的方式会浪费处理器资源。
SPI,即串行外设接口,是一种高速的,全双工,同步的通信总线。这种总线一般用于嵌入式处理器与外设芯片的数据传输上。SPI是一种全双工的同步的通信总线,也就是说主机在发送数据的时候也在接收数据,反之亦然。例如,主机发送数据时从机必须返回一些数据,这些数据可能是从机想要发送的,但也可能是从机为了应答主机而发送的空数据。这就意味着主机在发送时,无法判断其接受的数据是否是从机发送的空数据。一般SPI通信要提高通信速率都会使用硬件DMA(Direct Memory Access,直接存储器访问),而使用DMA时需要指定发送数据的长度,对于从机而言,当从机使用DMA发送数据时,若主机也在发送数据,且主机发送的数据量比从机发送的数据量大,这就意味着从机接收的数据会有丢失。简而言之,在全双工模式下使用DMA进行SPI发送与接收时,DMA的数据大小设置是个棘手的问题。
由此可知,相关技术中存在数据传输过程中从机向主机发送数据会造成浪费处理器资源、只能传输定长数据的问题。
针对相关技术中存在的上述问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种数据传输方法、装置、***、存储介质及电子装置,以至少解决相关技术中存在的数据传输过程中从机向主机发送数据会造成浪费处理器资源、只能传输定长数据的问题。
根据本发明的一个实施例,提供了一种数据传输方法,包括:在确定从机中存在待传输至主机中的第一数据的情况下,获取所述从机中设置的第一直接存储器访问DMA的数据接收状态;在确定所述数据接收状态为未接收数据状态的情况下,确定所述主机与所述从机之间预先设置的目标引脚当前的电位,其中,所述目标引脚当前的电位用于指示所述主机和所述从机之间的数据传输方向,当所述电位为第一电位时,所述数据传输方向为由所述主机读取所述从机中的数据,当所述电位为第二电位时,所述数据传输方向由所述主机向所述从机发送数据;在确定所述目标引脚当前的电位为第二电位的情况下,将所述目标引脚的电位调整为第一电位,以指示所述主机读取所述从机中的所述第一数据。
根据本发明的一个实施例,还提供了一种数据传输方法,包括:检测主机与从机之间预先设置的目标引脚当前的电位,其中,所述目标引脚当前的电位用于指示所述主机和所述从机之间的数据传输方向,当所述电位为第一电位时,所述数据传输方向为由所述主机读取所述从机中的数据,当所述电位为第二电位时,所述数据传输方向由所述主机向所述从机发送数据;在确定所述目标引脚当前的电位为第一电位的情况下,读取存储在所述从机中的待传输至主机的第一数据;在确定所述目标引脚当前的电位为第二电位的情况下,向所述从机发送存储在所述主机中的待传输至所述从机的第二数据。
根据本发明的另一个实施例,提供了一种数据传输装置,包括:获取模块,用于在确定从机中存在待传输至主机中的第一数据的情况下,获取所述从机中设置的第一直接存储器访问DMA的数据接收状态;确定模块,用于在确定所述数据接收状态为未接收数据状态的情况下,确定所述主机与所述从机之间预先设置的目标引脚当前的电位,其中,所述目标引脚当前的电位用于指示所述主机和所述从机之间的数据传输方向,当所述电位为第一电位时,所述数据传输方向为由所述主机读取所述从机中的数据,当所述电位为第二电位时,所述数据传输方向由所述主机向所述从机发送数据;调整模块,用于在确定所述目标引脚当前的电位为第二电位的情况下,将所述目标引脚的电位调整为第一电位,以指示所述主机读取所述从机中的所述第一数据。
根据本发明的另一个实施例,还提供了一种数据传输装置,包括:检测模块,用于检测主机与从机之间预先设置的目标引脚当前的电位,其中,所述目标引脚当前的电位用于指示所述主机和所述从机之间的数据传输方向,当所述电位为第一电位时,所述数据传输方向为由所述主机读取所述从机中的数据,当所述电位为第二电位时,所述数据传输方向由所述主机向所述从机发送数据;读取模块,用于在确定所述目标引脚当前的电位为第一电位的情况下,读取存储在所述从机中的待传输至主机的第一数据;发送模块,用于在确定所述目标引脚当前的电位为第二电位的情况下,向所述从机发送存储在所述主机中的待传输至所述从机的第二数据。
根据本发明的又一个实施例,提供了一种数据传输***,包括上述任一实施例中所述的主机、从机及目标引脚,其中,所述主机及所述从机通过所述目标引脚连接。
根据本发明的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
通过本发明,在确定从机中存在待发送至主机中的第一数据的情况下,获取从机中设置的第一直接存储器访问DMA的数据接收状态,在确定数据接收状态为未接收数据状态的情况下,确定主机与从机之间预先设置的目标引脚当前的电位,在确定目标引脚当前的电位为第二电位的情况下,将目标引脚当前的电位调整为第一电位,此时,主机可以读取从机中的第一数据。由于在目标引脚当前的电位为第二电位时,主机可以向从机发送数据。在第一直接存储器访问DMA为未接收数据状态,目标引脚当前的电位为第一电位时,主机可以读取从机中的数据,基于目标引脚的电位即可实现数据的传输,无需主机周期性产生时钟信号。此外,当目标引脚的电位为第一电位时,主机可以持续读取从机中的数据,当目标引脚的电位为第二电位时,主机可以持续向从机发送数据,实现不定长数据的传输。因此,可以解决相关技术中存在的数据传输过程中从机向主机发送数据会造成浪费处理器资源、只能传输定长数据的问题,达到节省处理器资源、传输不定长数据的效果。
附图说明
图1是本发明实施例的一种数据传输方法的移动终端的硬件结构框图;
图2是根据本发明实施例的数据传输方法的流程图一;
图3是根据本发明示例性实施例的主机与从机通信连接示意图;
图4是根据本发明示例性实施例的从机向主机发送数据流程图;
图5是根据本发明示例性实施例的从机发送数据时的波形图;
图6是根据本发明示例性实施例的从机接收主机发送的数据流程图;
图7是根据本发明实施例的数据传输方法的流程图二;
图8是根据本发明示例性实施例的主机接收从机发送的数据流程图;
图9是根据本发明示例性实施例的主机向从机发送数据流程图;
图10是根据本发明示例性实施例的主机发送数据时的波形图;
图11是根据本发明实施例的数据传输装置的结构框图一;
图12是根据本发明实施例的数据传输装置的结构框图二。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明的实施例。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
本申请实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本发明实施例的一种数据传输方法的移动终端的硬件结构框图。如图1所示,移动终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,其中,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的数据传输方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种数据传输方法,图2是根据本发明实施例的数据传输方法的流程图一,如图2所示,该流程包括如下步骤:
步骤S202,在确定从机中存在待传输至主机中的第一数据的情况下,获取所述从机中设置的第一直接存储器访问DMA的数据接收状态;
步骤S204,在确定所述数据接收状态为未接收数据状态的情况下,确定所述主机与所述从机之间预先设置的目标引脚当前的电位,其中,所述目标引脚当前的电位用于指示所述主机和所述从机之间的数据传输方向,当所述电位为第一电位时,所述数据传输方向为由所述主机读取所述从机中的数据,当所述电位为第二电位时,所述数据传输方向由所述主机向所述从机发送数据;
步骤S206,在确定所述目标引脚当前的电位为第二电位的情况下,将所述目标引脚的电位调整为第一电位,以指示所述主机读取所述从机中的所述第一数据。
在上述实施例中,主机和从机可以分别为处理器,主机和从机可以通过SPI总线连接。其中,主机与从机通信连接示意图可参见附图3,如图3所示,MOSI、MISO、CLK、CS四根线为SPI主从通信必要的4根线。由于SPI分别连接主机和从机,时钟信号由主机提供,因此,在仅有MOSI、MISO、CLK、CS四根线时,从机无法主动给主机发送信号。故在标准4线SPI的基础上引入NOTIFY线,用于从机在发送数据前,让主机提供时钟信号及让主机做好接收数据的准备。例如,当从机需要发送数据前,将NOTIFY引脚拉高,此时,主机将会提供时钟信号,从机将数据发送完毕后,将NOTIFY引脚拉低,主机停止产生时钟信号。
在上述实施例中,第一数据可以存储在从机缓冲区,如内存中的数据。目标引脚可以为NOTIFY引脚,当从机中存在待传输至主机中的第一数据时,确定NOTIFY引脚的电位,当NOTIFY引脚的电位是第一电位时,主机可以读取从机中的第一数据,当NOTIFY引脚的电位是第二电位且第一直接存储器访问DMA为未接收数据状态时,可以将NOTIFY引脚的电位调整为第一电位,主机在检测到第一电位时,可以读取第一数据。其中,第一电位可以为高电位,第二电位可以低电位。当然,第一电位也可以为低电位,第二电位为高电位。本发明对电位对应的数据传输方向不做限制,即,主机可以在NOTIFY引脚的电位为高电位时,读取从机的第一数据,也可以在NOTIFY引脚的电位为低电位时,读取从机的第一数据。
需要说明的是,主机读取从机中的数据实际上即是从机向主机发送数据的过程。当从机中存在待发送至主机中的第一数据时,从机可以通过将NOTIFY引脚的电位设置为第一电位,主机在检测到第一电位时即可读取第一数据,因此,实现了主动向主机发送数据的效果。无需主机周期性提供时钟信号,节省了处理器(如CPU)的资源。
在上述实施例中,从机中可以设置有直接存储器访问DMA,DMA可以用于接收主机发送的数据。在确定DMA处于未接收数据,且在从机的缓冲区中包括待发送至主机的数据的情况下,在目标引脚的电位为第二电位时,将目标引脚的电位调整为第一电位。即,在将目标引脚的电位调整为第一电位之前,需要确定DMA的数据接收状态,若DMA处于接收数据状态,则保持目标引脚的电位不变,当DMA接收数据完毕时,再将电位调整为第一电位。即,采用半双工模式实现数据传输,实现在接收数据时,不发送数据。需要说明的是,在主机和从机通过SPI传输数据时,实际上使用的SPI在硬件结构上是全双工模式(SPI本身支持全双工模式和半双工模式),此处采用的半双工模式为软件上的半双工,即通过目标引脚的电位避免两端同时发送数据,实现软件上的半双工模式。
通过本发明,在确定从机中存在待发送至主机中的第一数据的情况下,获取从机中设置的第一直接存储器访问DMA的数据接收状态,在确定数据接收状态为未接收数据状态的情况下,确定主机与从机之间预先设置的目标引脚当前的电位,在确定目标引脚当前的电位为第二电位的情况下,将目标引脚当前的电位调整为第一电位,此时,主机可以读取从机中的第一数据。由于在目标引脚当前的电位为第二电位时,主机可以向从机发送数据。在第一直接存储器访问DMA为未接收数据状态,目标引脚的电位为第一电位时,主机可以读取从机中的数据,基于目标引脚的电位即可实现数据的传输,无需主机周期性产生时钟信号。此外,当目标引脚的电位为第一电位时,主机可以持续读取从机中的数据,当目标引脚的电位为第二电位时,主机可以持续向从机发送数据,实现不定长数据的传输。因此,可以解决相关技术中存在的数据传输过程中从机向主机发送数据会造成浪费处理器资源、只能传输定长数据的问题,达到节省处理器资源、传输不定长数据的效果。
可选地,上述步骤的执行主体可以是从机。
在一个示例性实施例中,在将所述目标引脚当前的电位调整为第一电位之后,所述方法还包括:获取所述主机读取所述第一数据的状态;在确定所述主机读取所述第一数据完成的情况下,将所述目标引脚当前的电位调整为所述第二电位。在本实施例中,将目标引脚当前的电位调整为第一电位时,主机可以读取第一数据,在确定主机读取数据完成的情况下,将目标引脚当前的电位调整为第二电位。当主机读取数据完成时,则认为从机将第一数据发送给了主机。即,在目标引脚的电位为第一电位时,主机可以一直读取从机中的数据,直到目标引脚的电位变为第二电位,实现了主机接收不定长数据。其中,从机向主机发送数据流程图可参见附图4,由于从机大部分时间处于接收状态,因此,在发送数据前需要重新设置用于发送数据的DMA,在设置前还需要检查DMA当前是否在接收数据,如果当前正在接收,则不允许发送,需要等定时器下一次超时时再次判断是否允许发送。判断是否正处于接收状态的方法是判断DMA中接收的数据量是否非零。从机发送完数据后,需要立即切换回接收状态,即将目标引脚的电位调整为第二电位,以快速准备接收主机随时可能发送的数据。引入定时器监测DMA,当DMA处于接收数据状态时,保持目标引脚的电位不变,保证从机可以一直接收数据,即无需额外的硬件即可使从机完成接收主机发送的不定长数据的功能。其中,从机发送数据时的波形图可参见附图5。
在一个示例性实施例中,在将所述目标引脚当前的电位调整为所述第二电位之后,所述方法还包括:利用所述第一直接存储器访问DMA接收所述主机发送的第二数据,并记录接收所述第二数据的接收时间;在所述接收时间超过预定时间的情况下,确定所述第一直接存储器访问DMA的第一存储状态;在确定所述第一存储状态指示所述第一直接存储器访问中包括的数据量恒定且大于预定阈值的情况下,确定接收完成所述第二数据。在本实施例中,从机在接收主机发送的第二数据之前,可以设定第一直接存储器访问DMA的存储容量。由于从机不知道主机待发送的数据量大小,因此,第一直接存储器访问DMA的存储容量需要设置地稍大些,只要不小于主机的最大的一帧数据量即可(例如,128字节,该取值仅是一种示例性说明,本发明对DMA的存储容量不作限制,如,还可以设定为64字节,256字节等)。同样,因为从机不知道主机待发送的数据量大小,因此,从机不知何时主机发送完成,为了解决该问题,可以引入一个定时器来检测DMA的接收状态,只要DMA接收的数据量维持一小段时间(对应于上述预定时间,例如,5ms,该取值仅是一种示例性说明,本发明对预定时间不做限制,本领域技术人员可以根据具体应用的SPI通信速率和传输的字节数自定义设置预定时间,例如,还可以取3ms,6ms等)不变且非零,从机就认为接收已经完成(这里的定时器也可以是线程)。实际上,有些单片机的串口带有空闲中断功能,可以接收不定长数据,而SPI一般没有空闲中断功能,这里引入定时器,就是通过软件方式来实现类似功能。需要说明的是,预定阈值可以设置为0,还可以设置为其他值,本发明对预定阈值不做限制。其中,从机接收主机发送的数据流程图可参见附图6。
在本实施例中还提供了一种数据传输方法,图7是根据本发明实施例的数据传输方法的流程图二,如图7所示,该流程包括如下步骤:
步骤S702,检测主机与从机之间预先设置的目标引脚当前的电位,其中,所述目标引脚当前的电位用于指示所述主机和所述从机之间的数据传输方向,当所述电位为第一电位时,所述数据传输方向为由所述主机读取所述从机中的数据,当所述电位为第二电位时,所述数据传输方向由所述主机向所述从机发送数据;
步骤S704,在确定所述目标引脚当前的电位为第一电位的情况下,读取存储在所述从机中的待传输至主机的第一数据;
步骤S706,在确定所述目标引脚当前的电位为第二电位的情况下,向所述从机发送存储在所述主机中的待传输至所述从机的第二数据。
在上述实施例中,主机和从机可以分别为处理器,主机和从机可以通过SPI总线连接。其中,主机与从机通信连接示意图可参见附图3,如图3所示,MOSI、MISO、CLK、CS四根线为SPI主从通信必要的4根线。由于SPI分别连接主机和从机,时钟信号由主机提供,因此,在仅有MOSI、MISO、CLK、CS四根线时,从机无法主动给主机发送信号。故在标准4线SPI的基础上引入NOTIFY线,用于从机在发送数据前,让主机提供时钟信号及让主机做好接受数据的准备。例如,当从机需要发送数据前,将NOTIFY引脚拉高,此时,主机将会提供时钟信号,从机将数据发送完毕后,将NOTIFY引脚拉低,主机停止产生时钟信号。
在上述实施例中,第一数据可以存储在从机缓冲区,如内存中的数据。目标引脚可以为NOTIFY引脚,当从机中存在待传输至主机中的第一数据时,确定NOTIFY引脚的电位,当NOTIFY引脚的电位是第一电位时,主机可以读取从机中的第一数据,当NOTIFY引脚的电位是第二电位且第一直接存储器访问DMA为未接收数据状态时,可以将NOTIFY引脚的电位调整为第一电位,主机在检测到第一电位时,可以读取第一数据。其中,第一电位可以为高电位,第二电位可以低电位。当然,第一电位也可以为低电位,第二电位为高电位。本发明对电位对应的数据传输方向不做限制,即,主机可以在NOTIFY引脚的电位为高电位时,读取从机的第一数据,也可以在NOTIFY引脚的电位为低电位时,读取从机的第一数据。
在上述实施例中,当目标引脚的电位为第二电位时,主机可以向从机发送存储在主机中的第二数据,其中,存储第二数据的位置可以为主机中的缓冲区,如内存区。
需要说明的是,主机读取从机中的数据实际上即是从机向主机发送数据的过程。当从机中存在待发送至主机中的第一数据时,从机可以通过将NOTIFY引脚的电位设置为第一电位,主机在检测到第一电位时即可读取第一数据,因此,实现了主动向主机发送数据的效果。无需主机周期性提供时钟信号,节省了处理器(如CPU)的资源。
在上述实施例中,从机中可以设置有直接存储器访问DMA,DMA可以用于接收主机发送的数据。在确定DMA处于未接收数据,且在从机的缓冲区中包括待发送至主机的数据的情况下,在目标引脚的电位为第二电位时,将目标引脚的电位调整为第一电位。即,在将目标引脚的电位调整为第一电位之前,需要确定DMA的数据接收状态,若DMA处于接收数据状态,则保持目标引脚的电位不变,当DMA接收数据完毕时,再将电位调整为第一电位。即,采用半双工模式实现数据传输,实现在接收数据时,不发送数据。需要说明的是,在主机和从机通过SPI传输数据时,实际上使用的SPI在硬件结构上是全双工模式(SPI本身支持全双工模式和半双工模式),此处采用的半双工模式为软件上的半双工,即通过目标引脚的电位避免两端同时发送数据,实现软件上的半双工模式。
通过本发明,检测主机与从机之间预先设置的目标引脚当前的电位,在确定目标引脚当前的电位为第一电位的情况下,读取存储在从机中的待传输至主机的第一数据,在确定目标引脚当前的电位为第二电位的情况下,向从机发送存储在主机中的待传输至从机的第二数据,由于不同的电位指示不同的数据传输方向,当目标引脚为第一电位时,主机即可读取从机中的第一数据,无需主机周期性产生时钟信号。此外,当目标引脚的电位为第一电位时,主机可以持续读取从机中的数据,当目标引脚的电位为第二电位时,主机可以持续向从机发送数据,实现不定长数据的传输。因此,能够解决相关技术中存在的数据通信数据传输过程中从机无法主动向主机发送数据,会造成浪费处理器资源、只能传输定长数据的问题,达到从机能够主动向主机发送数据,无需主机周期性提供时钟信号,节省处理器资源、传输不定长数据的效果。
示例性的,上述步骤的执行主体可以为主机。
在一个示例性实施例中,在确定所述目标引脚当前的电位为第一电位的情况下,读取存储在从机中的待传输至主机的第一数据包括:在确定所述目标引脚当前的电位为第一电位的情况下,产生时钟信号;在所述时钟信号达到目标状态的情况下,读取所述第一数据。在本实施例中,当主机发送目标引脚当前的电位为第一电位的情况下,主机产生时钟信号以提供时钟信号,其中,时钟信号可以为具有一定周期的时钟信号。在主机提供时钟信号后,即可读取从机中的第一数据,实现从机向主机发送第一数据的效果。例如,当第一电位为高电位时,当主机发现NOTIFY引脚的电位为高电位时,主动来读取从机的数据,直到NOTIFY引脚为低电平为止。主机主动读取从机数据,目的是为了给从机提供时钟信号。其中,主机接收从机发送的数据流程图可参见附图8,如图8所示,从机在发送数据时,实际上是主机读取从机中1字节的数据。需要说明的是,主机每次读取的字节数取决于具体应用,本发明对此不作限制。例如,主机还可以每次读取4字节,由于从机发送时,主机每次会读取4字节,可能会多读取3个字节,附图5即为这种情况。而从机在发送完成后就立即拉低了NOTIFY引脚,因此,出现附图5所示的波形,即NOTIFY之后还从机还发送了3个字节数据。
在一个示例性实施例中,在读取存储在从机中的待传输至主机的第一数据之后,所述方法还包括:利用第二直接存储器访问DMA将所述第一数据存储至所述主机中设置的直接存储器中。在本实施例中,主机可以利用第二直接存储器访问DMA将接收到第一数据存储在直接存储器中,其中,第二直接存储器访问DMA可以指定一个数据源和数据存放点(直接存储器),第二直接存储器访问DMA将数据从数据源搬运到数据存放点(直接存储器,如内存)。
在一个示例性实施例中,向所述从机发送存储在所述主机中的待传输至所述从机的第二数据包括:向所述从机发送所述第二数据;丢弃在发送所述第二数据期间所接收到的由所述从机发送的第三数据。在本实施例中,当第二电位为低电位时,主机向从机发送数据流程图可参见附图9,如图8所示,主机在发送前需要判断NOTIFY引脚是否为低电位,若为低电位就意味着从机没有数据要发送。此时,主机可直接发送数据;若NOTIFY引脚为高电位,则说明此时从机要发送数据,需要先接收从机数据后再次判断NOTIFY信号来确定能否进行发送操作。即,采用半双工的模式,在软件上控制主从双方在同一时刻只有一方在发送有效数据。因为半双工模式下,在某一时刻,只有一方在发送数据另一方在接收数据,发送方的DMA大小是可知的,此时发送方接收到的数据可直接丢弃,即,发送方在发送数据时接收到的数据无需保存,直接丢弃,因为这些数据必定是另一方应答的空数据。需要说明的是,在主机和从机通过SPI传输数据时,实际上使用的SPI在硬件结构上是全双工模式(SPI本身支持全双工模式和半双工模式),此处采用的半双工模式为软件上的半双工,即通过目标引脚的电位避免两端同时发送数据,实现软件上的半双工模式。其中,主机发送数据时的波形图可参见附图10。
在前述实施例中,使用从机主动通知主机机制,实现SPI从机可以主动给主机发送数据的功能,无需主机周期性产生时钟信号,节约了CPU资源,并且可以在从机需要发送数据时立即提供时钟信号,实时性强。引入定时器监测DMA。使用定时器或线程来定时监测从机DMA接收状态,无需额外的硬件就可使从机完成接收主机发送的不定长数据的功能。使用软件半双工机制解决DMA发送大小设置问题,并引入发送防碰撞机制避免出现主从机同时发送的情况:主机监测NOTIFY引脚的状态、从机监测DMA接收状态。此外,主机和从机都能主动发送数据,在使用上更加灵活。在一些串口等资源稀缺的情况下,可以考虑用SPI来完成嵌入式处理器之间的通信。并且,主机、从机双方均使用DMA,大大提高了SPI实际通信速率,减轻了CPU负荷。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
在本实施例中还提供了一种数据传输装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图11是根据本发明实施例的数据传输装置的结构框图一,如图11所示,该装置包括:
获取模块1102,用于在确定从机中存在待传输至主机中的第一数据的情况下获取所述从机中设置的第一直接存储器访问DMA的数据接收状态;
确定模块1104,用于在确定所述数据接收状态为未接收数据状态的情况下,确定所述主机与所述从机之间预先设置的目标引脚当前的电位,其中,所述目标引脚当前的电位用于指示所述主机和所述从机之间的数据传输方向,当所述电位为第一电位时,所述数据传输方向为由所述主机读取所述从机中的数据,当所述电位为第二电位时,所述数据传输方向由所述主机向所述从机发送数据;
调整模块1106,用于在确定所述目标引脚当前的电位为第二电位的情况下,将所述目标引脚的电位调整为第一电位,以指示所述主机读取所述从机中的所述第一数据。
在一个示例性实施例中,所述装置可以用于在将所述目标引脚当前的电位调整为第一电位之后,获取所述主机读取所述第一数据的状态;在确定所述主机读取所述第一数据完成的情况下,将所述目标引脚当前的电位调整为所述第二电位。
在一个示例性实施例中,所述装置还用于在将所述目标引脚当前的电位调整为所述第二电位之后,利用所述第一直接存储器访问DMA接收所述主机发送的第二数据,并记录接收所述第二数据的接收时间;在所述接收时间超过预定时间的情况下,确定所述第一直接存储器访问DMA的第一存储状态;在确定所述第一存储状态指示所述第一直接存储器访问中包括的数据量恒定且大于预定阈值的情况下,确定接收完成所述第二数据。
图12是根据本发明实施例的数据传输装置的结构框图二,如图12所述,该装置包括:
检测模块1202,用于检测主机与从机之间预先设置的目标引脚当前的电位,其中,所述目标引脚当前的电位用于指示所述主机和所述从机之间的数据传输方向,当所述电位为第一电位时,所述数据传输方向为由所述主机读取所述从机中的数据,当所述电位为第二电位时,所述数据传输方向由所述主机向所述从机发送数据;
读取模块1204,用于在确定所述目标引脚当前的电位为第一电位的情况下,读取存储在所述从机中的待传输至主机的第一数据;
发送模块1206,用于在确定所述目标引脚当前的电位为第二电位的情况下,向所述从机发送存储在所述主机中的待传输至所述从机的第二数据。
在一个示例性实施例中,所述读取模块1204可以通过如下方式实现在确定所述目标引脚当前的电位为第一电位的情况下,读取存储在从机中的待传输至主机的第一数据:在确定所述目标引脚当前的电位为第一电位的情况下,产生时钟信号;在所述时钟信号达到目标状态的情况下,读取所述第一数据。
在一个示例性实施例中,所述装置还可以用于在读取存储在从机中的待传输至主机的第一数据之后,利用第二直接存储器访问DMA将所述第一数据存储至所述主机中的直接存储器中。
在一个示例性实施例中,所述发送模块1206可以通过如下方式实现向所述从机发送存储在所述主机中的待传输至所述从机的第二数据:向所述从机发送所述第二数据;丢弃在发送所述第二数据期间所接收到的由所述从机发送的第三数据。
本发明的实施例还提供了一种数据传输***,包括上述任一实施例中所述的主机、从机及目标引脚,其中,所述主机及所述从机通过所述目标引脚连接。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
本发明的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种数据传输方法,其特征在于,包括:
获取从机中设置的第一直接存储器访问DMA的数据接收状态;
在确定所述数据接收状态为未接收数据状态的情况下,确定主机与所述从机之间预先设置的目标引脚当前的电位,其中,所述目标引脚当前的电位用于指示所述主机和所述从机之间的数据传输方向,当所述电位为第一电位时,所述数据传输方向为由所述主机读取所述从机中的数据,当所述电位为第二电位时,所述数据传输方向由所述主机向所述从机发送数据;
在确定所述目标引脚当前的电位为第二电位的情况下,将所述目标引脚当前的电位调整为第一电位,以指示所述主机读取所述从机中的第一数据。
2.根据权利要求1所述的方法,其特征在于,在将所述目标引脚当前的电位调整为第一电位之后,所述方法还包括:
获取所述主机读取所述第一数据的状态;
在确定所述主机读取所述第一数据完成的情况下,将所述目标引脚的电位调整为所述第二电位。
3.根据权利要求2所述的方法,其特征在于,在将所述目标引脚当前的电位调整为所述第二电位之后,所述方法还包括:
利用所述第一直接存储器访问DMA接收所述主机发送的第二数据,并记录接收所述第二数据的接收时间;
在所述接收时间超过预定时间的情况下,确定所述第一直接存储器访问的第一存储状态;
在确定所述第一存储状态指示所述第一直接存储器访问DMA中包括的数据量恒定且大于预定阈值的情况下,确定接收完成所述第二数据。
4.一种数据传输方法,其特征在于,包括:
检测主机与从机之间预先设置的目标引脚当前的电位,其中,所述目标引脚当前的电位用于指示所述主机和所述从机之间的数据传输方向,当所述电位为第一电位时,所述数据传输方向为由所述主机读取所述从机中的数据,当所述电位为第二电位时,所述数据传输方向由所述主机向所述从机发送数据;
在确定所述目标引脚当前的电位为第一电位的情况下,读取存储在所述从机中的待传输至主机的第一数据;
在确定所述目标引脚当前的电位为第二电位的情况下,向所述从机发送存储在所述主机中的待传输至所述从机的第二数据。
5.根据权利要求4所述的方法,其特征在于,在确定所述目标引脚当前的电位为第一电位的情况下,读取存储在从机中的待传输至主机的第一数据包括:
在确定所述目标引脚当前的电位为第一电位的情况下,产生时钟信号;
在所述时钟信号达到目标状态的情况下,读取所述第一数据。
6.根据权利要求4所述的方法,其特征在于,在读取存储在从机中的待传输至主机的第一数据之后,所述方法还包括:
利用第二直接存储器访问DMA将所述第一数据存储至所述主机中的直接存储器中。
7.根据权利要求4所述的方法,其特征在于,向所述从机发送存储在所述主机中的待传输至所述从机的第二数据包括:
向所述从机发送所述第二数据;
丢弃在发送所述第二数据期间所接收到的由所述从机发送的第三数据。
8.一种数据传输装置,其特征在于,包括:
获取模块,用于在确定从机中存在待传输至主机中的第一数据的情况下,获取所述从机中设置的第一直接存储器访问DMA的数据接收状态;
确定模块,用于在确定所述数据接收状态为未接收数据状态的情况下,确定所述主机与所述从机之间预先设置的目标引脚当前的电位,其中,所述目标引脚当前的电位用于指示所述主机和所述从机之间的数据传输方向,当所述电位为第一电位时,所述数据传输方向为由所述主机读取所述从机中的数据,当所述电位为第二电位时,所述数据传输方向由所述主机向所述从机发送数据;
调整模块,用于在确定所述目标引脚的电位为第二电位的情况下,将所述目标引脚当前的电位调整为第一电位,以指示所述主机读取所述从机中的所述第一数据。
9.一种数据传输装置,其特征在于,包括:
检测模块,用于检测主机与从机之间预先设置的目标引脚当前的电位,其中,所述目标引脚当前的电位用于指示所述主机和所述从机之间的数据传输方向,当所述电位为第一电位时,所述数据传输方向为由所述主机读取所述从机中的数据,当所述电位为第二电位时,所述数据传输方向由所述主机向所述从机发送数据;
读取模块,用于在确定所述目标引脚当前的电位为第一电位的情况下,读取存储在所述从机中的待传输至主机的第一数据;
发送模块,用于在确定所述目标引脚当前的电位为第二电位的情况下,向所述从机发送存储在所述主机中的待传输至所述从机的第二数据。
10.一种数据传输***,其特征在于,包括权利要求1至9任一项所述的主机、从机及目标引脚,其中,所述主机及所述从机通过所述目标引脚连接。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述权利要求1至3任一项中所述的方法,或者执行权利要求4至7任一项中所述的方法。
12.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述权利要求1至3任一项中所述的方法,或者执行权利要求4至7任一项中所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110621062.4A CN113312284A (zh) | 2021-06-03 | 2021-06-03 | 数据传输方法、装置、***、存储介质及电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110621062.4A CN113312284A (zh) | 2021-06-03 | 2021-06-03 | 数据传输方法、装置、***、存储介质及电子装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113312284A true CN113312284A (zh) | 2021-08-27 |
Family
ID=77377249
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110621062.4A Pending CN113312284A (zh) | 2021-06-03 | 2021-06-03 | 数据传输方法、装置、***、存储介质及电子装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113312284A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113886296A (zh) * | 2021-09-29 | 2022-01-04 | 上海庆科信息技术有限公司 | 数据传输方法、装置、设备和存储介质 |
CN114338530A (zh) * | 2021-12-21 | 2022-04-12 | 浙江华锐捷技术有限公司 | 设备状态的调整方法、装置、存储介质及电子装置 |
CN114528235A (zh) * | 2022-01-21 | 2022-05-24 | 厦门亿联网络技术股份有限公司 | 一种基于spi的通信方法、从设备及*** |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104462011A (zh) * | 2013-09-24 | 2015-03-25 | 株式会社东芝 | 信息处理设备与半导体设备 |
CN107092568A (zh) * | 2016-02-17 | 2017-08-25 | 亚德诺半导体集团 | 在低功耗***中处理数据的数据通信接口 |
CN109976898A (zh) * | 2017-12-27 | 2019-07-05 | 上海大郡动力控制技术有限公司 | 分层任务***的SPI与Eeprom异步通讯方法 |
CN111858419A (zh) * | 2020-06-30 | 2020-10-30 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据传输方法、装置及设备 |
-
2021
- 2021-06-03 CN CN202110621062.4A patent/CN113312284A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104462011A (zh) * | 2013-09-24 | 2015-03-25 | 株式会社东芝 | 信息处理设备与半导体设备 |
CN107092568A (zh) * | 2016-02-17 | 2017-08-25 | 亚德诺半导体集团 | 在低功耗***中处理数据的数据通信接口 |
CN109976898A (zh) * | 2017-12-27 | 2019-07-05 | 上海大郡动力控制技术有限公司 | 分层任务***的SPI与Eeprom异步通讯方法 |
CN111858419A (zh) * | 2020-06-30 | 2020-10-30 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据传输方法、装置及设备 |
Non-Patent Citations (1)
Title |
---|
DOKIN: "SPI主从机DMA通信", 《"BLOG.CSDN.NET/QQ_27575841/ARTICLE/DETAILS/106651891"》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113886296A (zh) * | 2021-09-29 | 2022-01-04 | 上海庆科信息技术有限公司 | 数据传输方法、装置、设备和存储介质 |
CN113886296B (zh) * | 2021-09-29 | 2023-10-20 | 上海庆科信息技术有限公司 | 数据传输方法、装置、设备和存储介质 |
CN114338530A (zh) * | 2021-12-21 | 2022-04-12 | 浙江华锐捷技术有限公司 | 设备状态的调整方法、装置、存储介质及电子装置 |
CN114338530B (zh) * | 2021-12-21 | 2023-09-29 | 浙江华锐捷技术有限公司 | 设备状态的调整方法、装置、存储介质及电子装置 |
CN114528235A (zh) * | 2022-01-21 | 2022-05-24 | 厦门亿联网络技术股份有限公司 | 一种基于spi的通信方法、从设备及*** |
CN114528235B (zh) * | 2022-01-21 | 2024-05-31 | 厦门亿联网络技术股份有限公司 | 一种基于spi的通信方法、从设备及*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113312284A (zh) | 数据传输方法、装置、***、存储介质及电子装置 | |
US7266625B2 (en) | Data communication system | |
CN108763140B (zh) | 一种双向通信的方法、***及终端设备 | |
CA1161136A (en) | Communication link contention resolution system | |
CN111163018B (zh) | 网络设备及其降低传输时延的方法 | |
CN111786737B (zh) | 数据的发送方法、装置、存储介质以及电子装置 | |
US20220308928A1 (en) | Resource Adjustment Method and Apparatus | |
CN110955625A (zh) | 一种基于spi的全双工实时通信的方法及装置 | |
WO2022037176A1 (zh) | 核间通信方法、装置、电子组件以及电子设备 | |
CN112260366A (zh) | 充电方法、充电装置和充电器 | |
CN112565036B (zh) | 数据传输方法、装置、存储介质及通信*** | |
CN111405534B (zh) | 信息传输方法、第一终端及计算机存储介质 | |
CN113792003A (zh) | 单总线通信单元、***及方法 | |
JP5354106B2 (ja) | 制御プログラム、制御装置、および制御方法 | |
CN107171915B (zh) | 一种通信协议的变更方法及装置 | |
CN209803775U (zh) | 数据处理装置 | |
CN108512735A (zh) | 一种数据传输方法和装置 | |
CN114090493A (zh) | 基于rs485总线的数据传输控制方法以及相关装置 | |
JP2004179983A (ja) | ネットワーク機器制御システム | |
CN110430548B (zh) | 数据补发方法、装置、采集器及存储介质 | |
CN114124821B (zh) | 一种芯片内模块间数据传输方法、装置、设备及存储介质 | |
CN115085800B (zh) | 地面卫星设备、卫星过境的监控方法及存储介质 | |
CN114884768B (zh) | 一种总线空闲状态的检测装置、***及检测方法 | |
CN112363962B (zh) | 数据通信方法、***、电子设备及计算机存储介质 | |
CN109257251B (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210827 |