CN101552733A - 一种基于spi实现数据传输的方法和系统 - Google Patents

一种基于spi实现数据传输的方法和系统 Download PDF

Info

Publication number
CN101552733A
CN101552733A CNA200910141461XA CN200910141461A CN101552733A CN 101552733 A CN101552733 A CN 101552733A CN A200910141461X A CNA200910141461X A CN A200910141461XA CN 200910141461 A CN200910141461 A CN 200910141461A CN 101552733 A CN101552733 A CN 101552733A
Authority
CN
China
Prior art keywords
slave unit
main equipment
data
packet
signal
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.)
Granted
Application number
CNA200910141461XA
Other languages
English (en)
Other versions
CN101552733B (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 Zhitong World Technology Service Co. Ltd.
Original Assignee
Shenzhen Huawei Communication Technologies 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 Huawei Communication Technologies Co Ltd filed Critical Shenzhen Huawei Communication Technologies Co Ltd
Priority to CN200910141461XA priority Critical patent/CN101552733B/zh
Publication of CN101552733A publication Critical patent/CN101552733A/zh
Application granted granted Critical
Publication of CN101552733B publication Critical patent/CN101552733B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Communication Control (AREA)

Abstract

本发明公开了一种基于SPI实现数据传输的方法和系统,属于通信领域。所述方法包括:当主设备向从设备发送数据时,主设备通过所述MREQ线向所述从设备发送MREQ信号,通过所述SRDY线接收所述从设备返回的SRDY信号后,通过主设备输出从设备输入数据线MOSI向所述从设备发送第一封装的数据包,所述封装的数据包携带包头标识和长度标识;当从设备向主设备发送数据时,所述从设备通过所述SREQ线向所述主设备发送的SREQ信号,通过所述MRDY线接收所述主设备返回的MRDY信号后,通过主设备输入从设备输出数据线MISO,向所述主设备发送第二封装的数据包。本发明实现基于SPI接口发送数据时的高速数据搬移,方案简单、成本低、握手机制易于实现,降低主从设备的工作量,提高了传输效率。

Description

一种基于SPI实现数据传输的方法和系统
技术领域
本发明涉及通信领域,特别涉及一种基于SPI实现数据传输的方法和系统。
背景技术
随着通信技术的发展,当前智能移动终端的常见架构是通信Modem加AP(Application Processor,应用处理器),其中,AP用于运行应用和媒体等相关的程序,Modem用于运行与通信相关的程序。在HSPA(High-Speed PacketAccess,高速分组接入)以及HSPA+(加强高速分组接入)等宽带移动技术中,需要在Modem和AP之间进行高速的数据搬移,以满足用户的使用需求。
因此,为了达到Modem和AP之间进行高速的数据搬移的目的,现有技术在Modem侧和AP侧分别提供RAM(Random Access Memory,随机存取记忆体),通过RAM缓存接收到的数据以及缓存待发送的数据的形式,实现Modem和AP之间进行高速的数据搬移,但是该方式成本较高、代价较大。
为了节约成本,由于大多数Modem和AP都提供SPI(Serial PeripheralInterface,串行外围设备接口),因此,现有技术还提供了一种基于SPI实现Modem和AP之间进行高速的数据搬移的方案,该方案相对于上述RAM方案成本较低。其中,在基于SPI实现Modem和AP之间进行高速的数据搬移时,提供了一种SPI握手实现机制,在Modem和AP之间设置两条方向相反的握手信号线(MRDY(Master Ready Signal,主设备准备好信号)和SRDY(Slave Ready Signal,从设备准备好信号)),其中,通常AP为主设备,则MRDY为从AP到Modem方向的信号线,SRDY为从Modem到AP方向的信号线,从而基于该两条握手信号线实现Modem和AP之间的握手通信。
发明人在实现本发明的过程中发现,现有技术提供的SPI握手实现机制,只存在相反方向的两条信号线,当两端同时发送请求而出现并发冲突时,仅通过两条信号线实现握手,将导致握手方案的协议的实现非常复杂、相应的实现软件也会非常复杂。
发明内容
在基于SPI进行数据传输时,为了使握手机制简单易于实现,降低主从设备的工作量,并很容易的解决了主从设备双向并发的异常情况,本发明实施例提供了一种基于SPI实现数据传输的方法和系统,所述技术方案如下:
一方面,提供了一种基于SPI实现数据传输的方法,所述主设备和任一从设备之间至少包括四条握手信号线:主设备请求从设备信号线MREQ、主设备准备好信号线MRDY、从设备请求主设备信号线SREQ、从设备准备好信号线SRDY,所述方法包括:
当主设备向从设备发送数据时,所述主设备通过所述MREQ线向所述从设备发送MREQ信号,通过所述SRDY线接收所述从设备返回的SRDY信号后,通过主设备输出从设备输入数据线MOSI向所述从设备发送第一封装的数据包,所述第一封装的数据包携带包头标识和长度标识;
当从设备向主设备发送数据时,所述从设备通过所述SREQ线向所述主设备发送的SREQ信号,通过所述MRDY线接收所述主设备返回的MRDY信号后,通过主设备输入从设备输出数据线MISO,向所述主设备发送第二封装的数据包,所述第二封装的数据包携带包头标识和长度标识。
另一方面,提供了一种基于SPI实现数据传输的系统,所述系统包括:主设备、至少一个从设备;所述主设备和任一从设备之间至少包括四条握手信号线:主设备请求从设备信号线MREQ、主设备准备好信号线MRDY、从设备请求主设备信号线SREQ、从设备准备好信号线SRDY,
所述主设备,用于通过所述MREQ线向所述从设备发送MREQ信号,通过所述SRDY线接收所述从设备返回的SRDY信号后,通过所述MOSI向所述从设备发送第一封装的数据包,所述第一封装的数据包携带包头标识和长度标识;还用于接收所述从设备发送的SREQ信号后,向所述从设备返回MRDY信号,还用于接收所述从设备发送的第二封装的数据包;
所述从设备,用于通过所述SREQ线向所述主设备发送的SREQ信号,通过所述MRDY线接收所述主设备返回的MRDY信号后,通过主设备输入从设备输出数据线MISO,向所述主设备发送第二封装的数据包,所述第二封装的数据包携带包头标识和长度标识;还用于接收所述MREQ信号后,向所述主设备返回SRDY信号,还用于接收所述主设备发送的第一封装的数据包。
本发明通过在主从设备基于SPI传输时,设置四条握手信号线,从而实现高速数据搬移,实现方案简单易行,实现成本低;握手机制简单易于实现,降低主从设备的工作量,并且定义了AP和Modem之间传输数据包的格式,提高了传输效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的SPI接口结构示意图;
图2是本发明实施例1提供的AP向Modem单次发送数据流程图;
图3是本发明实施例1提供的AP向Modem单次发送数据交互图;
图4是本发明实施例1提供的AP向Modem连续发送数据流程图;
图5是本发明实施例1提供的AP向Modem连续发送数据交互图;
图6是本发明实施例2提供的Modem向AP单次发送数据流程图;
图7是本发明实施例2提供的Modem向AP单次发送数据交互图;
图8是本发明实施例2提供的Modem向AP连续发送数据流程图;
图9是本发明实施例2提供的Modem向AP连续发送数据交互图;
图10是本发明实施例3提供的Modem和AP双向数据传输的流程图;
图11是本发明实施例4提供的Modem和AP双向数据传输的流程图;
图12是本发明实施例5提供的基于SPI实现数据传输的系统示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在基于SPI进行数据传输时,为了使握手机制简单易于实现,降低主从设备的工作量,并很容易的解决了主从设备双向并发的冲突情况,本发明实施例提供了一种SPI接口示意图,通过采用标准的四线SPI接口和四条握手信号线来实现握手机制,达到AP和Modem之间的高速数据传输。
其中,SPI是一种高速的、全双工,同步的通信总线,参见图1,该SPI标准接口一般使用4条线:SPI_CLK(串行时钟)线、MISO(Master Input SlaveOutput,主设备输入/从设备输出数据)线、MOSI(Master Output Slave Input,主设备输出/从设备输入数据)线以及低电平有效的SS(Slave Select,从设备选择)线,其中,图1以AP作为主设备、Modem作为从设备进行示例。SPI是串行通讯协议,其数据是一位一位传输的。由SPI_CLK提供时钟脉冲,数据基于此脉冲完成数据传输。SPI_CLK信号线只由主设备控制,从设备不能控制。同样,在一个基于SPI的传输中,至少有一个主设备。这样的传输方式与普通的串行通讯不同在于:普通的串行通讯一次连续传送至少8位数据,而SPI允许数据一位一位的传送,且允许暂停,因为SPI_CLK时钟线由主设备控制,当没有时钟跳变时,从设备不接收或传送数据。即,主设备通过对SPI_CLK时钟线的控制可以完成对通讯的控制。另外,SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。
仍参见图1,其中,在GPIO(General Purpose Input Output,通用输入/输出)接口上设置了四条握手信号线,分别为:MREQ(Master Request Slave toReceive,主设备请求从设备信号)线、MRDY(Master Ready Signal,主设备准备好信号)线、SREQ(Slave Request Master to Receive,从设备请求主设备信号)线、SRDY(Slave Ready Signal,从设备准备好信号)线。其中,本发明实施例提供的方法内容如下:
当主设备向从设备发送数据时,主设备通过MREQ线向从设备发送MREQ信号,通过SRDY线接收从设备返回的SRDY信号后,通过主设备输出从设备输入数据线MOSI向从设备发送第一封装的数据包,该第一封装的数据包携带包头标识和长度标识;
当从设备向主设备发送数据时,从设备通过SREQ线向主设备发送的SREQ信号,通过MRDY线接收主设备返回的MRDY信号后,通过主设备输入从设备输出数据线MISO,向主设备发送第二封装的数据包,该第二封装的数据包携带包头标识和长度标识。
在基于该图1的基础上,下面各实施例将针对单向数据传输和双向数据传输分别进行说明,其中,
单向数据传输包括:1、AP发送数据给Modem;2、Modem发送数据给AP;
双向数据传输包括:1、AP正在发送数据给Modem时,Modem开始发送数据给AP;2、Modem发送数据给AP时,AP开始发送数据给Modem。详见如下各实施例的具体描述:
实施例1
在图1的基础上,本实施例以单向数据传输中的AP(主设备)发送数据给Modem(从设备)为例进行说明,参见图2,本发明实施例提供的方法内容如下:
步骤101:AP要向Modem发送数据时,AP通过MREQ线向Modem发送MREQ信号;
其中,本实施例以AP作为主设备为例进行的说明,当AP通过MREQ线向Modem发送MREQ信号后,则等待接收来自Modem返回的SRDY信号。
步骤102:Modem接收到MREQ信号后,判断自身是否处于睡眠状态,如果是,则执行步骤103;否则,执行步骤104;
步骤103:Modem唤醒睡眠,然后执行步骤104;
其中,如果Modem在收到MREQ信号时,处于睡眠状态,则睡眠状态被该MREQ信号唤醒。
步骤104:Modem清空自身的接收FIFO;
其中,Modem的接收FIFO(First In First Out,先入先出缓冲区),用于缓存接收到的来自AP通过MOSI线发送的数据包。
步骤105:Modem判断接收FIFO与片外内存之间的DMA传输是否结束,如果是,则执行步骤106;否则,等待传输结束,然后执行步骤106;
步骤106:Modem配置该接收FIFO中断,设置该接收FIFO的中断水线,并向AP通过SRDY线返回SRDY信号;
其中,在设置该接收FIFO的中断水线时,可以根据需要进行设置,例如设置该中断水线为60字节,该接收FIFO中的数据大于该设置的中断水线时,则会产生中断,通过DMA搬移该接收FIFO的数据到内存中。
步骤107:AP接收到SRDY信号后,AP将自身片外内存中存储的待发送的数据包按照预设的数据帧格式封装后写入到AP侧的发送FIFO中,并打开SPI_CLK时钟信号。
其中,在AP将自身片外内存中存储的待发送的数据包按照预设的数据帧格式封装后写入到AP侧的发送FIFO中时,还包括:判断待发送的数据包长度是否超过该发送FIFO的深度,如果是,则要配置AP片外内存和发送FIFO之间的DMA传输,以使得数据能够顺利发送。
其中,如果该AP其SPI接口支持RWOT(Receive Without Transmit,接收不发送)模式,则该步骤107还包括:取消该RWOT模式,以使得在AP的发送FIFO为空时,SPI_CLK时钟信号停止。对该RWOT模式进行简单说明:若AP的SPI接口支持RWOT模式(目前AP基本上都支持此模式),则AP(SPI主设备)只接收数据,类似于单工方式,则SPI_CLK时钟不会停止,AP的接收FIFO仍然能接收数据。如果AP不支持这种模式的话,AP接收数据时还必须要不断往AP的发送FIFO填数据,一旦AP侧软件或DMA忙,导致AP的发送FIFO为空了,则SPI_CLK时钟停止,进而导致AP接收到的数据也会损坏。AP发送数据给Modem时,即便Modem的发送FIFO为空,AP的接收FIFO也一直会根据时钟进行采样,只不过收到与时钟同步的无用数据(Trailing Data或dummy Data)。如果是AP单向发送时则对接收到的无用数据可忽略,等Modem发送请求时,清空接收FIFO,准备接收数据。
步骤108:AP的发送FIFO通过MOSI线向Modem发送封装的数据包;
其中,在基于MOSI线以及MISO线进行数据传输时,参见表1,本发明实施例提供了一种SPI接口的数据链路层帧格式示意表。
表1
  包头标识   长度标识   数据包
其中,对于每次传输的二进制码流,SPI驱动程序对其进行封装,具体为:在其头部添加固定的包头标识和长度标识,其中,
该包头标识用于指示该数据码流是否为基于SPI传输的数据,优选地,设置该头标识字段占6字节空间;
该长度标识用于指示该数据包的长度,优先地,设置该长度标识字段占2字节空间。
进一步地,为了优化传输,对每个二进制码流的最小长度和最大长度进行约束,例如,设置最小长度为64字节,如果在进行封装之前的二进制码流的有效数据为56字节,则参考设置的最小长度,不足则补padding数据。参见表1,由于设置的长度标识字段为2字节,所以封装后的数据包的包长不能超过65535(2^16-1)字节,即最大长度为65535字节,综上,对SPI传输的数据包进行了最小长度和最大长度的约束,即64字节<包长<65535字节,实现了数据的优化传输。
步骤109:Modem的接收FIFO接收封装的数据包,根据自身接收FIFO设置的中断水线,判断是否达到中断水线,如果是,则执行步骤110;否则,继续执行109,直到达到中断水线为止;
步骤110:Modem在接收FIFO达到中断水线后,读取该接收FIFO接收的封装的数据包,读取包头标识和长度标识后,为该封装的数据包分配内存,配置DMA传输,将接收的数据包保存至Modem的内存中;
其中,由于本发明实施例定义了SPI数据包的格式,如果Modem读取不到包头标识,则认为接收到的数据为非SPI数据包,不做任何处理。
步骤111:AP的DMA发送结束,接收DMA发送完成信号;
其中,当AP发送数据完毕后,AP的DMA控制器会发出DMA发送完成中断信号;
步骤112:Modem接收完数据后,接收DMA接收完成信号。
其中,当Modem接收数据完毕后,Modem的DMA控制器会发出DMA接收完成中断信号。
综上所述,通过步骤101到步骤112,本实施例完成了单向数据传输中AP向Modem发送数据的情况下的单次传输。详见图3,为本发明实施例提供的单向数据传输中AP向Modem发送数据的情况下的单次传输时的交互示意图,如图3所示,其中,AP为主设备,Modem为从设备,AP主动发送时,AP的接收FIFO会收到Trailing数据,可以根据实际需要配置接收FIFO溢出,或,超时中断不使能,则AP的接收FIFO就可以忽略掉Trailing数据。
进一步地,本实施例还提供了一种单向数据传输中,AP连续发送数据给Modem的方法,参见图4,具体包括:
步骤201:AP要向Modem发送数据时,AP通过MREQ线向Modem发送MREQ信号;
步骤202:Modem接收到MREQ信号后,判断自身是否处于睡眠状态,如果是,则执行步骤203;否则,执行步骤204;
步骤203:Modem唤醒睡眠,然后执行步骤204;
步骤204:Modem清空自身的接收FIFO;
步骤205:Modem判断接收FIFO与片外内存之间的DMA传输是否结束,如果是,则执行步骤206;否则,等待传输结束,然后执行步骤206;
步骤206:Modem配置该接收FIFO中断,设置该接收FIFO的中断水线,并向AP通过SRDY线返回SRDY信号,与步骤106类似,在此不再赘述;
步骤207:AP接收到SRDY信号后,AP将自身内存中存储的待发送的数据包按照预设的数据帧格式封装后写入到AP侧的发送FIFO中,并打开SPI_CLK时钟信号,与步骤107类似,在此不再赘述;
步骤208:AP的发送FIFO通过MOSI线向Modem发送封装的数据包;
步骤209:Modem的接收FIFO接收封装的数据包,根据自身设置的中断水线,判断是否达到接收FIFO的中断水线,如果是,则执行步骤210;否则,继续执行步骤209,直到达到中断水线为止;
步骤210:Modem在接收FIFO达到中断水线后,读取该接收FIFO接收的封装的数据包,读取包头标识和长度标识后,为该封装的数据包分配内存,配置DMA传输,将接收的数据包保存至Modem的内存中,其余与步骤110类似,在此不再赘述;
步骤211:AP的DMA发送结束,DMA控制器发出DMA发送完成中断信号;
步骤212:Modem接收完数据后,DMA控制器发出DMA接收完成中断信号;
步骤213:当AP的DMA控制器发出DMA发送完成中断后,AP通过MREQ线向Modem再次发送MREQ信号,以实现AP向Modem再次发送数据。
其中,对步骤212和步骤213执行的前后顺序不做限制。
当AP通过MREQ线向Modem再次发送MREQ信号时,同理,重复执行步骤201到步骤212,从而实现AP向Modem再次发送数据的过程,方法类似,在此不再赘述。其中,由于在AP向Modem第一次发送数据时,打开了SPI_CLK时钟信号,因此,时钟处于打开状态,当再次发送数据时,不需要再次打开SPI_CLK时钟信号。
综上所述,通过步骤201到步骤213,完成了单向数据传输中AP连续向Modem发送数据,详见图5,为本发明实施例提供的单向数据传输中AP连续向Modem发送数据的交互示意图。如图5所示,AP收到的DMA发送完成中断信号后,触发AP再次发送MREQ信号。
综上所述,本发明实施例通过SPI接口实现了主设备(AP)向从设备(Modem)发送数据时的高速数据搬移,实现方案简单易行,且由于使用SPI接口,实现成本低。在基于SPI进行数据传输时,握手机制简单易于实现,降低主从设备的工作量,并且定义了AP和Modem之间传输数据包的格式,从而给出了完整的数据链路层帧结构,提高了传输效率。
综上所述,实施例1是以主设备(AP)主动向从设备(Modem)发送数据(包括单次发送和连续发送的情况)为例进行的说明;鉴于SPI主从模式工作状态的不同,实施例2将以从设备(Modem)主动向主设备(AP)发送数据(包括单次发送和连续发送的情况)为例进行的说明,详见如下。
实施例2
在图1的基础上,本实施例以单向数据传输中的Modem(从设备)发送数据给AP(主设备)为例进行说明,参见图6,内容如下:
步骤301:Modem要向AP发送数据时,通过SREQ线向AP发送SREQ信号。
其中,Modem要向AP发数据时,可以为Modem确认上一次发送已经完成后,或者,Modem首次向AP发送数据,该SREQ信号用于通知AP接收数据。当Modem通过SREQ线向AP发送SREQ信号后,则等待接收来自AP返回的MRDY信号。
步骤302:AP接收到Modem发送的SREQ信号,判断AP自身是否处于睡眠状态,如果是,则执行步骤303;否则,执行步骤304;
步骤303:AP唤醒睡眠状态,然后执行步骤304;
其中,如果AP在收到SREQ信号时,处于睡眠状态,则睡眠状态被该SREQ信号唤醒。
步骤304:AP清空自身的接收FIFO;
步骤305:AP判断该接收FIFO与自身片外内存之间的DMA传输是否结束,如果是,则执行步骤306;否则,等待该DMA传输结束,然后执行步骤306;
步骤306:AP配置自身接收FIFO水位中断,并设置SPI为RWOT模式;
其中,AP在设置该接收FIFO的中断水线时,可以根据需要进行设置,例如设置该中断水线为60字节。
其中,如前所述,由于SPI主从模式工作状态的不同,SPI_CLK时钟是由主设备进行控制的,而当无该SPI_CLK时钟时,从设备就无法接收/发送数据。而该SPI_CLK时钟是由主设备的发送FIFO决定的,通常该发送FIFO内有数据时,则会触发该SPI_CLK时钟,如果发送FIFO为空,则无该SPI_CLK时钟。但是,如果主设备设置SPI为RWOT模式,可以实现当主设备的发送FIFO为空时,该SPI_CLK时钟仍然存在。
步骤307:AP向自身的发送FIFO里写入一个空数据(dummy数据);
其中,由于在步骤306设置了SPI为RWOT模式,本实施例是以Modem向AP单向发送数据为例进行的说明,即当前数据传输不是全双工状态。则此时AP向自身发送FIFO里写入一个dummy数据用于打开SPI_CLK时钟,此后无需在AP接收数据时,一直往发送FIFO写数据以保持时钟。
步骤308:当AP通过写入dummy数据打开SPI_CLK时钟后,AP通过MRDY线向Modem发送MRDY信号;
步骤309:Modem接收到AP发送的MRDY信号,Modem将自身内存中存储的待发送的数据包,按照预设的数据帧格式封装后写入到Modem自身的发送FIFO中;
其中,在Modem将自身内存中存储的待发送的数据包按照预设的数据帧格式封装后写入到Modem侧的发送FIFO中时,还包括:判断待发送的数据包长度是否超过该发送FIFO的深度,如果是,则要配置DMA传输,以使得数据能够顺利发送,封装后数据包携带包头标识和长度标识。其中,具体的预设的数据帧格式如实施例1类似,本实施例不再赘述。
步骤310:Modem的发送FIFO通过MISO线,向AP发送封装的数据包;
步骤311:AP的接收FIFO接收封装的数据包,根据自身设置的接收FIFO水位中断的中断水线,判断是否达到该接收FIFO的中断水线,如果是,则执行步骤312;否则,继续执行步骤311,直到达到该中断水线;
其中,在步骤306中,AP配置了自身的接收FIFO水位中断的中断水线,该中断水线用于限制产生中断的数据包大小。
步骤312:AP在接收FIFO达到中断水线后,读取该接收FIFO接收的数据包,为该接收的数据包分配内存,配置DMA传输,将接收到的数据包保存至AP的内存中;
其中,AP读取该接收FIFO接收的数据包之后,还包括:
则AP根据接收的数据包,判断是否能识别到包头标识,如果是,则认为接收到的数据为SPI数据包,再继续根据长度标识为该数据包携带的数据分配内存;否则,如果AP读取不到包头标识,则认为接收到的数据为非SPI数据包,不做任何处理。
步骤313:当Modem发送数据完成后,Modem的DMA控制器向Modem发送DMA发送完成中断信号;
步骤314:当AP接收数据完成,AP的DMA控制器向AP发送DMA接收完成中断信号;
步骤315:AP取消RWOT模式。
综上所述,通过上述步骤301到步骤315,本实施例实现了单向传输中的Modem向AP单次发送数据。详见图7,为本发明实施例提供的单向数据传输中Modem向AP发送数据的情况下的单次传输时的交互示意图,如图7所示,其中,AP为主设备,Modem为从设备。
进一步地,本实施例还提供了一种单向数据传输中,Modem连续发送数据给AP的方法,参见图8,具体包括:
步骤401:Modem要向AP发送数据时,通过SREQ线向AP发送SREQ信号;
步骤402:AP接收到Modem发送的SREQ信号,判断AP自身是否处于睡眠状态,如果是,则执行步骤403;否则,执行步骤404;
步骤403:AP唤醒睡眠状态,然后执行步骤404;
步骤404:AP清空自身的接收FIFO;
步骤405:AP判断该接收FIFO与自身片外内存之间的DMA传输是否结束,如果是,则执行步骤406;否则,等待该DMA传输结束,然后执行步骤406;
步骤406:AP配置自身接收FIFO水位中断,并设置SPI为RWOT模式;
步骤407:AP向自身的发送FIFO里写入dummy数据;
步骤408:当AP通过写入dummy数据打开SPI_CLK时钟后,AP通过MRDY线向Modem发送MRDY信号;
步骤409:Modem接收到AP发送的MRDY信号,Modem将自身内存中存储的待发送的数据包,按照预设的数据帧格式封装后写入到Modem自身的发送FIFO中;
步骤410:Modem的发送FIFO通过MISO线,向AP发送封装的数据包;
步骤411:AP的接收FIFO接收封装的数据包,根据自身设置的接收FIFO水位中断的中断水线,判断是否达到中断水线,如果是,则执行步骤412;否则,继续执行步骤411;
步骤412:AP在接收FIFO达到中断水线后,读取该接收FIFO接收的数据包,为该接收的数据包分配内存,配置DMA传输,将接收到的数据包保存至AP的内存中;
步骤413:当Modem发送数据完成后,Modem的DMA控制器向Modem发送DMA发送完成中断信号;
步骤414:当AP接收数据完成后,AP的DMA控制器向AP发送DMA接收完成中断信号;
步骤415:当Modem接收到DMA控制器的发送完成中断后,通过SREQ线向AP发送SREQ信号,继续重复执行上述步骤401至步骤415,直到所有数据发送完毕;
步骤416:当AP收到所有数据后,AP取消RWOT模式。
其中,对步骤414和步骤415执行的先后顺序不做限制。
综上,通过上述步骤401到步骤416,实现了Modem向AP连续发送数据,详见图9,为本发明实施例提供的单向数据传输中,Modem向AP连续发送数据传输时的交互示意图,其中,Modem连续向AP发送数据和Modem单次发送数据到AP不同之处在于:当Modem再次向AP发送数据,由于此时AP的时钟已经处于打开状态,不需要再打开时钟信号;如果Modem发了SREQ,则AP收到SREQ后要等待DMA传输完成后,才能配置FIFO接收中断,由于此时AP已经接收到新的SREQ信号请求,所以当AP的DMA接收完成中断后,不用取消RWOT模式了。
综上所述,本发明实施例通过SPI接口实现了从设备(Modem)向主设备(AP)发送数据时的高速数据搬移,实现方案简单易行,且由于使用SPI接口,实现成本低。在基于SPI进行数据传输时,握手机制简单易于实现,降低主从设备的工作量,并且定义了AP和Modem之间传输数据包的格式,从而给出了完整的数据链路层帧结构,提高了传输效率。
上述实施例1和实施例2是以单向数据传输为例进行的说明,下面各实施例将针对双向数据传输的情况进行详细说明,详见内容如下:
实施例3
在图1的基础上,本实施例以双向数据传输中的AP(主设备)正发数据给Modem(从设备)过程,Modem给AP发送数据为例进行说明,参见图10,内容如下:
步骤501:AP向Modem发送数据的过程中,出现Modem向AP发送数据的需求,则Modem通过SREQ线向AP发送SREQ信号;
其中,该SREQ信号用于通知AP接收数据。
步骤502:AP收到Modem发送的SREQ信号,AP清空自身的接收FIFO;
步骤503:AP判断接收FIFO与片外内存之间的DMA传输是否结束,如果是,则执行步骤504;否则,等待传输结束,然后执行步骤504;
步骤504:AP设置RWOT模式,设置RWOT模式后,AP通过MRDY信号线向Modem发送MRDY信号;
其中,AP设置RWOT模式是用于当AP向Modem数据发送完毕后,SPI_CLK时钟仍然存在。
步骤505:Modem接收到AP发送的MRDY信号,Modem将自身内存中存储的待发送的数据包按照预设的数据帧格式封装后写入到Modem的发送FIFO中;
步骤506:Modem的发送FIFO通过MISO线向AP发送封装的数据包;
步骤507:AP的接收FIFO接收封装的数据包,根据自身设置的中断水线,判断是否达到中断水线,如果是,则执行步骤508;否则,继续执行步骤507;
步骤508:AP在接收FIFO达到中断水线后,读取该接收FIFO接收的数据包,读到包头标识和长度标识后,为该封装的数据包分配内存,配置DMA传输,将接收到的数据包保存至AP的内存中;
步骤509:Modem发送完数据后,Modem的DMA控制器向Modem返回发送完成中断信号;
步骤510:AP接收完数据后,AP的DMA向AP返回接收完成中断信号。
综上所述,通过上述步骤501到步骤510,本实施例实现了双向传输中AP正发数据给Modem时,Modem成功向AP发送数据,与Modem单向发送数据不同之处在于:由于AP事先已经在向Modem发送数据,即时钟一直处于打开状态,因此,当在Modem向AP发送数据时,AP侧不需要打开时钟信号,且,由于是双向通信,AP正发数据给Modem,所以当AP收到自身的DMA发送的接收完成中断后,AP也不需要取消RWOT模式;进一步地,数据传输时,系统会有双向并发的可能,例如,某一时刻AP和Modem同时需要向对端发送数据,本发明实施例通过四根“握手”信号线:MREQ线、SREQ线以及SRDY线和MRDY线,不论是AP向Modem发送的请求,还是Modem向AP发送的请求,这两个请求都要收到对应的SRDY和MRDY才可以进行数据传输过程。从而很容易的处理双向并发的异常情况。
实施例4
在图1的基础上,本实施例以双向数据传输中的Modem(从设备)正发数据给AP(主设备)过程中,AP需要给Modem发送数据为例进行说明,参见图11,内容如下:
步骤601:Modem向AP发送数据的过程中,出现AP向Modem发送数据的需求,AP通过MREQ线向Modem发送MREQ信号;
步骤602:Modem接收到MREQ信号后,Modem清空自身的接收FIFO;
步骤603:Modem判断接收FIFO与片外内存之间的DMA传输是否结束,如果是,则执行步骤604;否则,等待传输结束,然后执行步骤604;
步骤604:Modem配置该接收FIFO中断,设置该接收FIFO的中断水线,并向AP通过SRDY线返回SRDY信号;该步骤与步骤106类似,在此不再赘述;
步骤605:AP接收到SRDY信号后,AP将自身内存中存储的待发送的数据包按照预设的数据帧格式封装后写入到AP侧的发送FIFO中;
其中,如果数据包长度超过FIFO深度,则,配置DMA传输,发送其余的数据,若数据包不足写完发送FIFO,则,将数据包全部填写到FIFO;
步骤606:AP的发送FIFO通过MOSI线,向Modem发送封装的数据包;
步骤607:Modem的接收FIFO接收封装的数据包,根据自身设置的中断水线,判断是否达到中断水线,如果是,则执行步骤608;否则,继续执行步骤607,直到达到中断水线为止;
步骤608:Modem在接收FIFO达到中断水线后,读取该接收FIFO接收的封装的数据包,读取包头标识和长度标识后,为该封装的数据包分配内存,配置DMA传输,将接收的数据包保存至Modem的内存中;与步骤110类似,在此不再赘述;
步骤609:当AP的DMA发送结束,AP的DMA控制器向AP发出DMA发送完成中断信号;
步骤610:当Modem接收完数据后,Modem的DMA控制器发出DMA接收完成中断信号。
综上所述,通过上述步骤601到步骤610,本实施例实现了双向传输中Modem数据正在发数据给AP时,AP想发数据给Modem,AP可以直接通过MREQ线发MREQ信号,Modem接收到该MREQ信号后,清空接收FIFO,配置好接收FIFO中断后,通过SRDY线向AP发SRDY信号;AP收到SRDY信号后,再将包头标识,长度标识和待发送的数据封装,将封装的数据包写到发送FIFO,过程与AP主动发送数据给Modem的过程类似,不同之处在于,双向传输时,时钟一直打开的。进一步地,数据传输时,系统会有双向并发的可能,例如,某一时刻AP和Modem同时需要向对端发送数据,本发明实施例通过四根“握手”信号线:MREQ线、SREQ线以及SRDY线和MRDY线,不论是AP向Modem发送的请求,还是Modem向AP发送的请求,这两个请求都要收到对应的SRDY和MRDY才可以进行数据传输过程。从而很容易的处理双向并发的异常情况。通过对应的SRDY和MRDY信号线控制了数据的传输过程,解决了数据传输时的双向并发的异常情况,避免了现有技术中软件实施的复杂性。
进一步地,本发明实施例提供的“握手”信号对实时性有要求,当AP主动发出Ready信号后,Modem应在规定的时间内响应,例如10s,或,当Modem主动发出Ready信号后,AP应在规定的10s内响应,若在规定的时间内AP或Modem没有响应,系统将报超时错误。
综上所述,本发明实施例对SPI接口内部的帧结构进行了定义,计算了包长的约束范围;本发明通过对SPI接口内部的“握手”信号线的设计与定义,实现了Modem与AP之间高速数据的传输,通过SPI实现了单向数据传输和双向数据传输,包括:AP发送数据给Modem;Modem发送数据给AP;AP正在发送数据给Modem时,Modem开始发送数据给AP;Modem发送数据给AP时,AP开始发送数据给Modem;AP和Modem之间同时请求发送数据。
实施例5
与上述方法实施例对应地,参见图12,本发明实施例提供了一种基于SPI实现数据传输的系统,该系统包括:主设备、至少一个从设备;其中,主设备和任一从设备之间至少包括四条握手信号线:主设备请求从设备信号线MREQ、主设备准备好信号线MRDY、从设备请求主设备信号线SREQ、从设备准备好信号线SRDY,其中,
主设备,用于通过MREQ线向从设备发送MREQ信号,通过SRDY线接收从设备返回的SRDY信号后,通过MOSI向从设备发送第一封装的数据包,该第一封装的数据包携带包头标识和长度标识;还用于接收从设备发送的SREQ信号后,向从设备返回MRDY信号,还用于接收从设备发送的第二封装的数据包;
从设备,用于通过SREQ线向主设备发送的SREQ信号,通过MRDY线接收主设备返回的MRDY信号后,通过主设备输入从设备输出数据线MISO,向主设备发送第二封装的数据包,该第二封装的数据包携带包头标识和长度标识;还用于接收MREQ信号后,向主设备返回SRDY信号,还用于接收主设备发送的第一封装的数据包。
(一)、当主设备向从设备发送数据时,其中,主设备具体用于通过MREQ线向从设备发送MREQ信号,接收到SRDY信号后,对第一待发送的数据进行封装得到第一封装的数据包,将第一封装的数据包写入主设备的发送FIFO,通过主设备输出从设备输入数据线MOSI向从设备发送第一封装的数据包
从设备具体用于接收MREQ信号后,清空从设备的接收先入先出缓存FIFO,通过SRDY线向主设备返回SRDY信号;接收第一封装的数据包,读取包头标识和长度标识,为第一封装的数据包分配内存。
进一步地,主设备,还用于将第一待发送的数据按照预设的数据帧格式封装后,判断第一封装的数据包的大小是否大于主设备的发送FIFO的深度,如果是,则配置主设备的发送FIFO和主设备的内存之间的DMA传输,依次向发送FIFO写入第一封装的数据包;否则,直接向发送FIFO写入第一待发送的数据封装后的第一封装的数据包;还用于当第一待发送的数据发送完毕,主设备接收DMA发送完成信号。
进一步地,主设备,还用于判断自身是否在接收从设备发送的数据,如果否,则判断自身是否开启接收不发送RWOT模式,若开启,则清除RWOT模式。
进一步地,从设备,还用于判断从设备是否处于睡眠状态,如果是,则唤醒睡眠状态后,清空从设备的接收FIFO。
进一步地,从设备,还用于判断从设备的接收FIFO和从设备的内存之间的DMA传输是否完毕,如果是,则设置从设备的接收FIFO的水线;否则,等待DMA传输完毕后,设置从设备的接收FIFO的水线;还用于根据从设备的接收FIFO的水线,判断第一封装的数据包长度是否大于从设备的接收FIFO的水线,如果是,则配置从设备的接收FIFO和从设备的内存之间的DMA传输后,执行后续步骤;否则,直接执行后续步骤;还用于当从设备接收完毕第一待发送的数据后,接收DMA接收完成信号。
进一步地,若该主设备还需要向从设备再次发送数据时,则该主设备,还用于接收到DMA发送完成信号后,再次向从设备通过MREQ线发送MREQ信号。
(二)、当从设备向主设备发送数据时,其中,从设备,具体用于通过SREQ线向主设备发送的SREQ信号,接收到MRDY信号后,对第二待发送的数据进行封装得到第二封装的数据包,将第二封装的数据包写入到从设备的发送FIFO中,从设备的发送FIFO通过MISO,向主设备发送第二封装的数据包;
主设备,具体用于接收到SREQ信号后,清空主设备的接收FIFO,设置RWOT模式,向主设备的发送FIFO里写入空数据,写入的空数据用于打开SPI_CLK时钟;主设备通过MRDY线向从设备发送MRDY信号;以及用于主设备的接收FIFO接收第二封装的数据包,读取包头标识和长度标识,为第二封装的数据包分配内存。
进一步地,从设备,还用于将第二待发送的数据按照预设的数据帧格式封装后,判断第二待发送的数据是否超过从设备的发送FIFO的深度,如果是,则配置从设备的发送FIFO和从设备的内存之间的DMA传输,依次向发送FIFO写入第二封装的数据包;否则,直接向发送FIFO写入第二待发送的数据封装后的第二封装的数据包;还用于当第二待发送的数据发送完毕,从设备接收DMA发送完成信号。
进一步地,主设备,还用于判断主设备是否处于睡眠状态,如果是,则唤醒睡眠状态后,清空主设备的接收先入先出缓存FIFO。
进一步地,主设备,还用于判断主设备的接收FIFO和主设备的内存之间的DMA传输是否完毕,如果是,则设置主设备的接收FIFO的水线;否则,等待DMA传输完毕后,设置主设备的接收FIFO的水线;还用于根据主设备的接收FIFO的水线,判断第二封装的数据包的大小是否大于主设备的接收FIFO的水线,如果是,则配置主设备的接收FIFO和主设备的内存之间的DMA传输后,执行后续步骤;否则,直接执行后续步骤;还用于接收完毕第二待发送的数据后,接收主设备的DMA控制器发送的DMA接收完成信号。
进一步地,若该从设备还需要向主设备再次发送数据时,则该从设备,还用于当从设备接收DMA发送完成信号后,则再次向主设备通过SREQ线发送SREQ信号。
其中,本发明实施例提供的系统实际应用时,上述主设备可以为AP,相应地,从设备为Modem;或上述主设备为Modem,从设备相应地为AP。
综上所述,本发明实施例提供的系统,实现了从设备与主设备之间高速数据的传输,通过SPI实现了单向数据传输和双向数据传输,包括:主设备发送数据给从设备;从设备发送数据给主设备;主设备正在发送数据给从设备时,从设备开始发送数据给主设备;从设备发送数据给主设备时,主设备开始发送数据给从设备;主设备和从设备之间同时请求发送数据。实现基于SPI接口发送数据时的高速数据搬移,实现方案简单易行,且由于使用SPI接口,实现成本低。在基于SPI进行数据传输时,握手机制简单易于实现,降低主从设备的工作量,并且定义了主设备和从设备之间传输数据包的格式,从而给出了完整的数据链路层帧结构,提高了传输效率。其中,SPI和“握手”信号线都是硬件接口和信号线;SPI驱动和“握手”机制实现软件一般运行在主设备(如AP)和从设备(如MODEM)中,作为其程序的一部分。
本发明实施例提供的上述技术方案的全部或部分可以通过程序指令相关的硬件来完成,所述程序可以存储在可读取的存储介质中,该存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (13)

1、一种基于SPI实现数据传输的方法,其特征在于,所述主设备和任一从设备之间至少包括四条握手信号线:主设备请求从设备信号线MREQ、主设备准备好信号线MRDY、从设备请求主设备信号线SREQ、从设备准备好信号线SRDY,所述方法包括:
当主设备向从设备发送数据时,所述主设备通过所述MREQ线向所述从设备发送MREQ信号,通过所述SRDY线接收所述从设备返回的SRDY信号后,通过主设备输出从设备输入数据线MOSI向所述从设备发送第一封装的数据包,所述第一封装的数据包携带包头标识和长度标识;
当从设备向主设备发送数据时,所述从设备通过所述SREQ线向所述主设备发送的SREQ信号,通过所述MRDY线接收所述主设备返回的MRDY信号后,通过主设备输入从设备输出数据线MISO,向所述主设备发送第二封装的数据包,所述第二封装的数据包携带包头标识和长度标识。
2、如权利要求1所述的方法,其特征在于,所述主设备通过所述MREQ线向所述从设备发送MREQ信号,通过所述SRDY线接收所述从设备返回的SRDY信号后,通过主设备输出从设备输入数据线MOSI向所述从设备发送第一封装的数据包的步骤,具体包括:
所述主设备通过所述MREQ线向所述从设备发送MREQ信号,以使得所述从设备接收所述MREQ信号后,清空所述从设备的接收先入先出缓存FIFO,通过所述SRDY线向所述主设备返回SRDY信号;
所述主设备接收到所述SRDY信号后,对第一待发送的数据进行封装得到第一封装的数据包,将所述第一封装的数据包写入主设备的发送FIFO;
所述主设备的发送FIFO通过所述MOSI向所述从设备发送所述第一封装的数据包,以使得所述从设备接收所述第一封装的数据包,读取包头标识和长度标识,为所述第一封装的数据包分配内存。
3、如权利要求2所述的方法,其特征在于,所述对第一待发送的数据进行封装得到第一封装的数据包,将所述第一封装的数据包写入主设备的发送FIFO的步骤,还包括:
所述主设备将第一待发送的数据按照预设的数据帧格式封装后,判断所述第一封装的数据包的大小是否大于所述主设备的发送FIFO的深度,如果是,则配置所述主设备的发送FIFO和所述主设备的内存之间的DMA传输,依次向所述发送FIFO写入所述第一封装的数据包;否则,直接向所述发送FIFO写入所述第一待发送的数据封装后的第一封装的数据包;
相应地,如果配置所述主设备的发送FIFO和所述主设备内存之间的DMA传输,则所述发送FIFO通过所述MOSI向所述从设备发送第一封装的数据包的步骤之后,还包括:
当所述第一待发送的数据发送完毕,所述主设备接收DMA发送完成信号。
4、如权利要求2所述的方法,其特征在于,所述将所述第一封装的数据包写入主设备的发送FIFO的步骤,还包括:
所述主设备判断自身是否在接收所述从设备发送的数据,如果否,则判断自身是否开启接收不发送RWOT模式,若开启,则清除所述RWOT模式。
5、如权利要求2所述的方法,其特征在于,所述清空所述从设备的接收先入先出缓存FIFO的步骤之前,还包括:
判断所述从设备是否处于睡眠状态,如果是,则唤醒睡眠状态后,清空从设备的接收FIFO。
6、如权利要求2所述的方法,其特征在于,所述通过所述SRDY线向所述主设备返回SRDY信号的步骤之前,还包括:
判断所述从设备的接收FIFO和所述从设备的内存之间的DMA传输是否完毕,如果是,则设置所述从设备的接收FIFO的水线;否则,等待DMA传输完毕后,设置所述从设备的接收FIFO的水线;
相应地,所述从设备接收所述第一封装的数据包的步骤之后,还包括:
根据所述从设备的接收FIFO的水线,判断所述第一封装的数据包长度是否大于所述从设备的接收FIFO的水线,如果是,则配置所述从设备的接收FIFO和所述从设备的内存之间的DMA传输后,执行后续步骤;否则,直接执行后续步骤;
相应地,如果配置所述接收FIFO和所述内存之间的DMA传输,则所述为所述第一封装的数据包分配内存之后,还包括:
当所述从设备接收完毕所述第一待发送的数据后,接收DMA接收完成信号。
7、如权利要求3所述的方法,其特征在于,如果所述主设备需要向所述从设备再次发送数据,则当所述主设备接收到所述DMA发送完成信号后,所述主设备再次向所述从设备通过所述MREQ线发送MREQ信号。
8、如权利要求1所述的方法,其特征在于,所述从设备通过所述SREQ线向所述主设备发送的SREQ信号,通过所述MRDY线接收所述主设备返回的MRDY信号后,通过主设备输入从设备输出数据线MISO,向所述主设备发送封装的数据包的步骤,具体包括:
所述从设备通过所述SREQ线向所述主设备发送的SREQ信号,以使得主设备接收到所述SREQ信号后,清空所述主设备的接收FIFO,设置接收不发送RWOT模式,向主设备的发送FIFO里写入空数据,所述写入的空数据用于打开SPI_CLK时钟;所述主设备通过所述MRDY线向从设备发送MRDY信号;
所述从设备接收到所述MRDY信号后,对第二待发送的数据进行封装得到第二封装的数据包,将所述第二封装的数据包写入到所述从设备的发送FIFO中,所述从设备的发送FIFO通过所述MISO,向所述主设备发送第二封装的数据包,以使得所述主设备的接收FIFO接收所述第二封装的数据包,读取包头标识和长度标识,为所述第二封装的数据包分配内存。
9、如权利要求8所述的方法,其特征在于,所述对第二待发送的数据进行封装得到第二封装的数据包,将所述第二封装的数据包写入到所述从设备的发送FIFO中的步骤,还包括:
所述从设备将第二待发送的数据按照预设的数据帧格式封装后,判断所述第二待发送的数据是否超过所述从设备的发送FIFO的深度,如果是,则配置所述从设备的发送FIFO和所述从设备的内存之间的DMA传输,依次向所述发送FIFO写入所述第二封装的数据包;否则,直接向所述发送FIFO写入所述第二待发送的数据封装后的第二封装的数据包;
相应地,如果配置所述从设备的发送FIFO和所述从设备内存之间的DMA传输,则所述从设备的发送FIFO通过主设备输入从设备输出数据线MISO,向所述主设备发送第二封装的数据包的步骤之后,还包括:
当所述第二待发送的数据发送完毕,所述从设备接收DMA发送完成信号。
10、如权利要求8所述的方法,其特征在于,所述清空主设备的接收FIFO的步骤之前,还包括:
判断所述主设备是否处于睡眠状态,如果是,则唤醒睡眠状态后,清空主设备的接收先入先出缓存FIFO。
11、如权利要求8所述的方法,其特征在于,所述主设备通过所述MRDY线向从设备发送MRDY信号的步骤之前,还包括:
判断所述主设备的接收FIFO和所述主设备的内存之间的DMA传输是否完毕,如果是,则设置所述主设备的接收FIFO的水线;否则,等待DMA传输完毕后,设置所述主设备的接收FIFO的水线;
相应地,所述主设备接收所述第二封装的数据包的步骤之后,还包括:
根据所述主设备的接收FIFO的水线,判断所述第二封装的数据包的大小是否大于所述主设备的接收FIFO的水线,如果是,则配置所述主设备的接收FIFO和所述主设备的内存之间的DMA传输后,执行后续步骤;否则,直接执行后续步骤;
相应地,如果配置所述接收FIFO和所述内存之间的DMA传输,则所述为所述第二封装的数据包分配内存之后,还包括:
所述主设备接收完毕所述第二待发送的数据后,接收所述主设备的DMA控制器发送的DMA接收完成信号。
12、如权利要求9所述的方法,其特征在于,如果所述从设备需要向所述主设备再次发送数据,则当从设备接收所述DMA发送完成信号后,所述从设备再次向所述主设备通过所述SREQ线发送SREQ信号。
13、一种基于SPI实现数据传输的系统,其特征在于,所述系统包括:主设备、至少一个从设备;所述主设备和任一从设备之间至少包括四条握手信号线:主设备请求从设备信号线MREQ、主设备准备好信号线MRDY、从设备请求主设备信号线SREQ、从设备准备好信号线SRDY,
所述主设备,用于通过所述MREQ线向所述从设备发送MREQ信号,通过所述SRDY线接收所述从设备返回的SRDY信号后,通过所述MOSI向所述从设备发送第一封装的数据包,所述第一封装的数据包携带包头标识和长度标识;还用于接收所述从设备发送的SREQ信号后,向所述从设备返回MRDY信号,还用于接收所述从设备发送的第二封装的数据包;
所述从设备,用于通过所述SREQ线向所述主设备发送的SREQ信号,通过所述MRDY线接收所述主设备返回的MRDY信号后,通过主设备输入从设备输出数据线MISO,向所述主设备发送第二封装的数据包,所述第二封装的数据包携带包头标识和长度标识;还用于接收所述MREQ信号后,向所述主设备返回SRDY信号,还用于接收所述主设备发送的第一封装的数据包。
CN200910141461XA 2009-05-15 2009-05-15 一种基于spi实现数据传输的方法和系统 Expired - Fee Related CN101552733B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200910141461XA CN101552733B (zh) 2009-05-15 2009-05-15 一种基于spi实现数据传输的方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200910141461XA CN101552733B (zh) 2009-05-15 2009-05-15 一种基于spi实现数据传输的方法和系统

Publications (2)

Publication Number Publication Date
CN101552733A true CN101552733A (zh) 2009-10-07
CN101552733B CN101552733B (zh) 2011-07-20

Family

ID=41156734

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910141461XA Expired - Fee Related CN101552733B (zh) 2009-05-15 2009-05-15 一种基于spi实现数据传输的方法和系统

Country Status (1)

Country Link
CN (1) CN101552733B (zh)

Cited By (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101820460A (zh) * 2010-03-29 2010-09-01 上海华勤通讯技术有限公司 实现spi接口的模块
CN102207919A (zh) * 2010-03-30 2011-10-05 国际商业机器公司 加速数据传输的处理单元、芯片、计算设备和方法
CN102508812A (zh) * 2011-11-30 2012-06-20 上海大学 一种基于spi总线的双处理器通信方法
GB2488223A (en) * 2011-02-15 2012-08-22 Nordic Semiconductor Asa Serial peripheral interface with handshake signals
CN102819512A (zh) * 2012-06-28 2012-12-12 惠州市德赛西威汽车电子有限公司 一种基于spi的全双工通信装置及其方法
CN103077144A (zh) * 2012-12-28 2013-05-01 上海自动化仪表股份有限公司 一种确保数据完整的spi通讯接口及其通讯方法
CN103117765A (zh) * 2013-02-21 2013-05-22 东信和平科技股份有限公司 一种射频模块与智能卡模块的通信方法及射频智能卡
CN103377170A (zh) * 2012-04-26 2013-10-30 上海宝信软件股份有限公司 异构处理器间spi高速双向对等数据通信系统
CN104683059A (zh) * 2013-11-29 2015-06-03 英业达科技有限公司 数据传输装置及方法
CN107370651A (zh) * 2017-06-26 2017-11-21 中国人民解放军91388部队 一种spi从机之间的通信方法
WO2018058862A1 (zh) * 2016-09-29 2018-04-05 华为技术有限公司 一种基于spi的数据传输方法及装置
CN108055186A (zh) * 2018-01-30 2018-05-18 浙江鸿泉车联网有限公司 一种主从处理器通信方法及装置
CN108446243A (zh) * 2018-03-20 2018-08-24 上海奉天电子股份有限公司 一种基于串行外设接口的双向通信方法与系统
CN108605056A (zh) * 2016-02-01 2018-09-28 高通股份有限公司 高速串行链路中的单向时钟信令
CN109344098A (zh) * 2018-09-04 2019-02-15 广州视源电子科技股份有限公司 主从设备间的数据操作方法和装置
CN110955625A (zh) * 2019-11-22 2020-04-03 上海麦腾物联网技术有限公司 一种基于spi的全双工实时通信的方法及装置
CN111130710A (zh) * 2019-12-10 2020-05-08 常州新途软件有限公司 一种基于spi的双工通信方法
CN111490920A (zh) * 2019-01-29 2020-08-04 杭州海康汽车技术有限公司 一种基于spi的数据传输方法、系统及装置
CN111565444A (zh) * 2020-05-26 2020-08-21 展讯通信(上海)有限公司 一种通信装置
CN111625483A (zh) * 2020-05-21 2020-09-04 展讯通信(上海)有限公司 一种串行总线及通信装置
CN111628832A (zh) * 2020-05-21 2020-09-04 展讯通信(上海)有限公司 一种通信装置
CN111737175A (zh) * 2020-06-12 2020-10-02 明见(厦门)技术有限公司 一种高速spi主从机通信方法、终端设备及存储介质
CN111984581A (zh) * 2020-08-14 2020-11-24 广州邦讯信息系统有限公司 一种基于Linux的SPI总线主从设备通讯系统、方法及装置
CN112153278A (zh) * 2019-06-28 2020-12-29 华为技术有限公司 基于spi的数据传输系统
CN113037419A (zh) * 2021-03-22 2021-06-25 英博超算(南京)科技有限公司 一种基于spi通讯的稳定数据传输系统
CN113220610A (zh) * 2020-01-21 2021-08-06 华为技术有限公司 通信系统和spi接口的通信方法及装置
CN113407478A (zh) * 2021-08-23 2021-09-17 上海泰矽微电子有限公司 一种实现spi从设备主动申请传输的方法
CN114116559A (zh) * 2022-01-20 2022-03-01 浙江中控技术股份有限公司 一种适用于plc应用的高速总线方法
CN114338260A (zh) * 2020-09-28 2022-04-12 宝能汽车集团有限公司 车辆数字仪表的显示控制系统与方法、车辆
CN116069698A (zh) * 2023-03-10 2023-05-05 苏州萨沙迈半导体有限公司 Spi数据传输方法和装置
WO2024178923A1 (zh) * 2023-02-28 2024-09-06 比亚迪股份有限公司 基于spi的数据传输方法、芯片、控制器及存储介质

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107967227A (zh) * 2017-12-22 2018-04-27 苏州国芯科技有限公司 一种基于spi的通信方法及spi主机、spi从机

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1264315C (zh) * 2002-12-20 2006-07-12 华为技术有限公司 一种实现SPI4 PhaseⅡ总线支持多路物理设备的装置
EP1764803A1 (en) * 2005-09-09 2007-03-21 STMicroelectronics S.r.l. Memory architecture with serial peripheral interface

Cited By (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101820460A (zh) * 2010-03-29 2010-09-01 上海华勤通讯技术有限公司 实现spi接口的模块
CN101820460B (zh) * 2010-03-29 2014-08-27 上海华勤通讯技术有限公司 实现spi接口的模块
US8639840B2 (en) 2010-03-30 2014-01-28 International Business Machines Corporation Processing unit, chip, computing device and method for accelerating data transmission
CN102207919A (zh) * 2010-03-30 2011-10-05 国际商业机器公司 加速数据传输的处理单元、芯片、计算设备和方法
GB2488223A (en) * 2011-02-15 2012-08-22 Nordic Semiconductor Asa Serial peripheral interface with handshake signals
WO2012110798A1 (en) * 2011-02-15 2012-08-23 Nordic Semiconductor Asa Serial interface
CN103460201B (zh) * 2011-02-15 2016-03-02 北欧半导体公司 串行接口
US9003089B2 (en) 2011-02-15 2015-04-07 Nordic Semiconductor Asa Synchronous serial data-exchange system
CN103460201A (zh) * 2011-02-15 2013-12-18 北欧半导体公司 串行接口
GB2488223B (en) * 2011-02-15 2014-01-01 Nordic Semiconductor Asa Serial interface
CN102508812A (zh) * 2011-11-30 2012-06-20 上海大学 一种基于spi总线的双处理器通信方法
CN103377170B (zh) * 2012-04-26 2015-12-02 上海宝信软件股份有限公司 异构处理器间spi高速双向对等数据通信系统
CN103377170A (zh) * 2012-04-26 2013-10-30 上海宝信软件股份有限公司 异构处理器间spi高速双向对等数据通信系统
CN102819512B (zh) * 2012-06-28 2015-11-18 惠州市德赛西威汽车电子股份有限公司 一种基于spi的全双工通信装置及其方法
CN102819512A (zh) * 2012-06-28 2012-12-12 惠州市德赛西威汽车电子有限公司 一种基于spi的全双工通信装置及其方法
CN103077144A (zh) * 2012-12-28 2013-05-01 上海自动化仪表股份有限公司 一种确保数据完整的spi通讯接口及其通讯方法
CN103117765B (zh) * 2013-02-21 2016-02-24 东信和平科技股份有限公司 一种射频模块与智能卡模块的通信方法及射频智能卡
CN103117765A (zh) * 2013-02-21 2013-05-22 东信和平科技股份有限公司 一种射频模块与智能卡模块的通信方法及射频智能卡
CN104683059A (zh) * 2013-11-29 2015-06-03 英业达科技有限公司 数据传输装置及方法
CN108605056A (zh) * 2016-02-01 2018-09-28 高通股份有限公司 高速串行链路中的单向时钟信令
US10789180B2 (en) 2016-09-29 2020-09-29 Huawei Technologies Co., Ltd. SPI-based data transmission method and device
WO2018058862A1 (zh) * 2016-09-29 2018-04-05 华为技术有限公司 一种基于spi的数据传输方法及装置
CN108475241A (zh) * 2016-09-29 2018-08-31 华为技术有限公司 一种基于spi的数据传输方法及装置
CN107370651A (zh) * 2017-06-26 2017-11-21 中国人民解放军91388部队 一种spi从机之间的通信方法
CN108055186A (zh) * 2018-01-30 2018-05-18 浙江鸿泉车联网有限公司 一种主从处理器通信方法及装置
CN108055186B (zh) * 2018-01-30 2020-08-25 浙江鸿泉车联网有限公司 一种主从处理器通信方法及装置
CN108446243A (zh) * 2018-03-20 2018-08-24 上海奉天电子股份有限公司 一种基于串行外设接口的双向通信方法与系统
CN108446243B (zh) * 2018-03-20 2021-11-26 上海奉天电子股份有限公司 一种基于串行外设接口的双向通信方法与系统
CN109344098A (zh) * 2018-09-04 2019-02-15 广州视源电子科技股份有限公司 主从设备间的数据操作方法和装置
CN111490920A (zh) * 2019-01-29 2020-08-04 杭州海康汽车技术有限公司 一种基于spi的数据传输方法、系统及装置
CN112153278B (zh) * 2019-06-28 2022-07-12 华为技术有限公司 基于spi的数据传输系统
CN112153278A (zh) * 2019-06-28 2020-12-29 华为技术有限公司 基于spi的数据传输系统
CN110955625A (zh) * 2019-11-22 2020-04-03 上海麦腾物联网技术有限公司 一种基于spi的全双工实时通信的方法及装置
CN111130710A (zh) * 2019-12-10 2020-05-08 常州新途软件有限公司 一种基于spi的双工通信方法
CN113220610A (zh) * 2020-01-21 2021-08-06 华为技术有限公司 通信系统和spi接口的通信方法及装置
CN113220610B (zh) * 2020-01-21 2024-04-09 华为技术有限公司 通信系统和spi接口的通信方法及装置
CN111628832B (zh) * 2020-05-21 2022-09-27 展讯通信(上海)有限公司 一种通信装置
CN111625483A (zh) * 2020-05-21 2020-09-04 展讯通信(上海)有限公司 一种串行总线及通信装置
CN111628832A (zh) * 2020-05-21 2020-09-04 展讯通信(上海)有限公司 一种通信装置
CN111565444A (zh) * 2020-05-26 2020-08-21 展讯通信(上海)有限公司 一种通信装置
CN111737175A (zh) * 2020-06-12 2020-10-02 明见(厦门)技术有限公司 一种高速spi主从机通信方法、终端设备及存储介质
CN111737175B (zh) * 2020-06-12 2022-03-18 明见(厦门)技术有限公司 一种高速spi主从机通信方法、终端设备及存储介质
CN111984581A (zh) * 2020-08-14 2020-11-24 广州邦讯信息系统有限公司 一种基于Linux的SPI总线主从设备通讯系统、方法及装置
CN111984581B (zh) * 2020-08-14 2022-05-10 广州邦讯信息系统有限公司 一种基于Linux的SPI总线主从设备通讯系统、方法及装置
CN114338260A (zh) * 2020-09-28 2022-04-12 宝能汽车集团有限公司 车辆数字仪表的显示控制系统与方法、车辆
CN113037419A (zh) * 2021-03-22 2021-06-25 英博超算(南京)科技有限公司 一种基于spi通讯的稳定数据传输系统
CN113407478B (zh) * 2021-08-23 2021-11-30 上海泰矽微电子有限公司 一种实现spi从设备主动申请传输的方法
CN113407478A (zh) * 2021-08-23 2021-09-17 上海泰矽微电子有限公司 一种实现spi从设备主动申请传输的方法
CN114116559B (zh) * 2022-01-20 2022-05-17 浙江中控技术股份有限公司 一种适用于plc应用的高速总线方法
CN114116559A (zh) * 2022-01-20 2022-03-01 浙江中控技术股份有限公司 一种适用于plc应用的高速总线方法
WO2024178923A1 (zh) * 2023-02-28 2024-09-06 比亚迪股份有限公司 基于spi的数据传输方法、芯片、控制器及存储介质
CN116069698A (zh) * 2023-03-10 2023-05-05 苏州萨沙迈半导体有限公司 Spi数据传输方法和装置
CN116069698B (zh) * 2023-03-10 2023-10-31 苏州萨沙迈半导体有限公司 Spi数据传输方法和装置

Also Published As

Publication number Publication date
CN101552733B (zh) 2011-07-20

Similar Documents

Publication Publication Date Title
CN101552733B (zh) 一种基于spi实现数据传输的方法和系统
US11176068B2 (en) Methods and apparatus for synchronizing uplink and downlink transactions on an inter-device communication link
TW384428B (en) Method and apparatus for dynamically managing communications buffers used with packet communication data for a printer
US10331612B1 (en) Methods and apparatus for reduced-latency data transmission with an inter-processor communication link between independently operable processors
KR101077900B1 (ko) 네트워크 효율성을 고려한 SoC 기반 시스템 네트워크에서의 인터페이스 장치의 통신방법 및 그에 의해 통신하는 인터페이스 장치
CN101587462B (zh) 高速数据通信链路中的usb数据传输装置及其数据传输方法
JP2006500672A (ja) バス接続システム
CN106951388A (zh) 一种基于PCIe的DMA数据传输方法及系统
US20080320180A1 (en) USB host, USB slave, wireless communication system, and data transfer method
CN101304373A (zh) 一种实现局域网内高效传输大块数据的方法及系统
CN101937406A (zh) 一种VxWorks操作系统中实现驱动1394设备的方法和系统
CN108280041A (zh) 一种内部集成电路主机的通信方法和装置
US7603488B1 (en) Systems and methods for efficient memory management
WO2010123143A1 (ja) 送信装置、送信方法及び送信装置の制御プログラム
JP2005122372A (ja) データ転送制御装置、電子機器及びデータ転送制御方法
CN101394349B (zh) 不同接口设备通信中的数据传输方法及系统
KR100944892B1 (ko) 버스 시스템 및 버스 인터페이스
CN110971621B (zh) 基于sdio接口的嵌入式多cpu互联电路、互联方法及驱动方法
CN100579125C (zh) 一种pci以太网媒体访问控制器传输数据的方法
CN103377170A (zh) 异构处理器间spi高速双向对等数据通信系统
CN101449254A (zh) 通用串行总线(usb)的流控制
JP2005504392A (ja) バス・システムおよびバス・インターフェース
CN101534259B (zh) 异步通信控制器及其控制方法
TWI416339B (zh) 通用序列匯流排傳輸轉譯器及輸入請求同步傳輸方法
CN100462952C (zh) 接口可配置的通用串行总线控制器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20170818

Address after: 201, room 1, building A, No. 518053, front Bay Road, Qianhai, Shenzhen Shenzhen cooperation zone, Guangdong, China

Patentee after: Shenzhen Zhitong World Technology Service Co. Ltd.

Address before: 518129 Longgang District, Guangdong, Bantian HUAWEI base B District, building 2, building No.

Patentee before: Huawei Device Co., Ltd.

EE01 Entry into force of recordation of patent licensing contract
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20091007

Assignee: Shannan City ran Technology Co., Ltd.

Assignor: Shenzhen Zhitong World Technology Service Co. Ltd.

Contract record no.: 2017440020096

Denomination of invention: Data transmission realizing method and system based on SPI

Granted publication date: 20110720

License type: Common License

Record date: 20171208

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110720

Termination date: 20190515