一种基于SPI的全双工通信装置及其方法制造方法及图纸

技术编号:8078839 阅读:242 留言:0更新日期:2012-12-13 21:35
本发明专利技术涉及一种基于SPI的全双工通信装置及其方法,装置包括主器件与从器件,以及设置在主器件与从器件之间用于主器件与从器件相互通信的数据线,同步时钟信号线,从器件选择信号线,主器件请求从器件接收数据以及从器件请求主器件接收数据的信号线。其通信方法包括主器件与从器件同时向对方发送数据的步骤、主器件向从器件发送数据的步骤、从器件到主器件发送数据的步骤以及主器件与从器件之间通信所使用的数据帧。本发明专利技术实现了全双工的通信方式,在通信速率不变的情况下,提高了通信效率、提升了系统响应时间,将理想状态下通信的数据吞吐量提升一倍;并通过数据校验等,保证SPI通信双方同时发送数据时各自数据帧的完整性和准确性。

【技术实现步骤摘要】

本专利技术涉及一种通讯装置及其方法,具体涉及一种基于SPI的全双工通信装置及其方法
技术介绍
SPI (Serial Peripheral Interface—串行外设接口)总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。SPI —般使用4条线时钟信号线(CLK)、主机输入/从机输出数据线MIS0、主机输出/从机输入数据线MOSI和低电平有效的从机选择线CS,由于SPI在芯片的管脚上只占用四根线,节约了芯片 的管脚,同时为PCB的布局上节省空间,提供方便,同时,数据传输速度也比较快,最高速度可达到几Mbps。正是出于这种简单易用且数据传输速度快的特性,现在越来越多的芯片集成了这种通信协议,目前SPI通信普遍为半双工通信方式,这种通信方式在相同速率、单位时间内所发送的数据量有限,这样会造成大量的通信延时,消耗通信资源,导致系统响应速度降低,进而影响到用户使用。即使某些SPI通信实现了全双工通信,但也存在没有指定的流控制、没有应答机制确认是否接收到数据等缺点。
技术实现思路
针对目前SPI通信存在的上述问题,本专利技术所要解决的技术问题是提供一种高效率的基于SPI的全双工通信装置及其通信方法方法,用以下技术方案实现 一种基于SPI的全双工通信装置,包括主器件与从器件,以及设置在主器件与从器件之间用于主器件与从器件相互通信的信号线。所述信号线包括数据线MISO与M0SI,同步时钟信号线CLK,从器件选择信号线CS,主器件请求从器件接收数据的信号线M_REQ,以及从器件请求主器件接收数据信号线S_REQ ;所述信号线M_REQ由主器件控制,连接于主器件的I/O 口与从器件的中断触发口之间,所述信号线S_REQ由从器件控制,连接于从器件的I/O 口与主器件的中断触发口之间。一种基于权利要求I所述装置的通信方法,包括主器件与从器件同时向对方发送数据的步骤、主器件向从器件发送数据的步骤、从器件到主器件发送数据的步骤以及主器件与从器件之间通信所使用的数据帧;所述数据帧数据结构包括由用户自定义特殊字符表示的开始信号、用于表示当前发送帧数的循环计数器的帧序列号、用于表示本帧数据长度的数据长度、数据内容、用于检测数据的完整性和准确性的校验值、用于表示接收成功的应答字符ACK。具体的,所述主器件与从器件同时向对方发送数据的步骤包括 (I)主器件和从器件准备好各自需要发送的数据后,同时拉低M_CRQ和S_CRQ信号线的电平,触发对方中断;(2)主器件接收到从器件发送的S_CRQ中断后,主器件通过同步时钟信号线CLK发送时钟信号; (3)主器件通过MOSI发送主器件数据,从器件同步通过MISO发送从器件数据;当一个字节发送完毕后,从器件拉高信号线S_CRQ的电平,主器件和从器件分别处理接收到的字节; (4)如果从器件的一帧数据没有发送完毕,则重新拉低信号线S_CRQ的电平,然后重复步骤(2)和(3); (5 )主器件或从器件在数据发送结束后,若在设定时间内没有接收到对方的ACK信号,则重新发送该帧数据;若接收到对方的ACK信号且此时正处于数据发送状态则等待数据发送完毕之后再经过一个预定的时延后向对方回复ACK信号;若此刻处于数据发送空闲且预定的时延已经超时,则无需等待,立即发送ACK信号。 具体的,所述主器件向从器件发送数据的步骤包括 (1)主器件需发送数据到从器件时,拉低信号线M_CRQ的电平触发从器件中断; (2)从器件收到中断后首先判断自身状态,若从器件此时处于数据发送状态,则等待当前字节的数据发送完成;若从器件此时处于空闲状态则准备接收数据,从器件拉低信号线S.REQ电平触发主器件中断; (3)主器件收到从器件信号线S_CRQ的信号后,通过同步时钟信号线CLK发送时钟信号,再通过数据线MOSI发送数据给从器件;从器件收到数据后拉高信号线S_CRQ的电平,如果一帧没有接收完毕,则重复执行步骤(2 )和(3 ); (4)从器件接收完一帧数据后,校验通过后由数据线MISO返回ACK信号并拉高S_CRQ信号;主器件接收到ACK信号后拉高M_CRQ的电平。具体的,所述从器件向主器件发送数据的步骤包括 (1)从器件需要发送数据给主器件时,首先判断自身状态,如从器件处于空闲状态则拉低信号线S_CRQ的电平触发主器件中断,若此时处于数据接收状态则等待当前字节数据接收完毕后再触发主器件中断; (2)主器件接收到信号线S_CRQ信号后通过同步时钟信号线CLK发送时钟信号,同时从器件通过数据线MISO发送数据给主器件;一个字节数据发送完毕后从器件拉高信号线S_CRQ的电平,一帧数据没有发送完毕前,重复执行步骤(I)和(2); (3)主器件接收完一帧数据后,校验通过后由数据线MOSI返回ACK信号; (4)从器件接收到主器件返回的ACK信号,拉高信号线S_CRQ的电平;然后主器件再拉高信号线1_0^的电平。进一步的,当主器件或从器件接收到的校验值与内部计算的校验值不一致时,则对应的主器件或从器件不发送ACK信号,对应的主器件或从器件在设定时间内未收到ACK信号则按上述对应的方法重新发送对应的数据帧。更进一步的,主器件向从器件发送数据时,主器件拉低信号线M_CRQ电平后在设定时间内没有接收到从器件信号线S_CRQ的信号,则主器件按照主器件向从器件发送数据的方法重新发送本帧数据。更进一步的,从器件到主器件发送数据时,从器件拉低信号线S_CRQ电平后,在设定时间内没有收到主器件的CLK时钟信号,则从器件按从器件到主器件发送数据的方法重新发送本帧数据。具体的,所述重新发送对应的数据帧以及重新发送本帧数据的步骤为结束本次数据的发送,将本帧数据已接收部分删除,并将主器件与从器件的状态重置为初始状态,准备重新发送数据。优选的,主器件与从器件均设置有用于统计一帧数据发送错误次数的错误计数器,当错误计数器的数值大于设定的阈值时,则将该帧数据丢弃,同时生成错误信息报告。综上所述,本专利技术具有以下显著有益效果(1)实现了全双工的通信方式,在通信速率不变的情况下,提高了通信效率、提升了系统响应时间,将理想状态下通信的数据吞吐量提升一倍;(2)通过数据校验以及ACK信号收发,保证SPI通信双发同时发送数据时各自数据帧的完整性和准确性。附图说明 图I为主器件与从器件通信接口示意 图2为主器件和从器件同时发送数据示意 图3为主器件向从器件发送数据示意 图4为从器件向主器件发送数据示意 图5为加入容错设计的主器件与从器件通信示意图。具体实施例方式为了便于本领域技术人员理解,下面将结合附图以及实施例对本专利技术进行进一步详细描述。本专利技术揭示了一种基于SPI的全双工通信装置,如图I所示,包括主器件与从器件,以及设置在主器件与从器件之间用于主器件与从器件相互通信的信号线。所述信号线包括数据线MISO与MOSI,同步时钟信号线CLK,从器件选择信号线CS,主器件请求从器件接收数据的信号线M_REQ,以及从器件请求主器件接收数据信号线S_REQ。信号线M_REQ连接于主器件的I/O 口与从器件的中断触发口之间,由主器件控制,信号线S_REQ连接于从器件的I/O 口与主器件的中断触发口之间,由从器件控制。同时,本本文档来自技高网...

【技术保护点】
一种基于SPI的全双工通信装置,包括主器件与从器件,以及设置在主器件与从器件之间用于主器件与从器件相互通信的信号线,其特征在于:所述信号线包括:数据线MISO与MOSI,同步时钟信号线CLK,从器件选择信号线CS,主器件请求从器件接收数据的信号线M_REQ,以及从器件请求主器件接收数据信号线S_REQ;所述信号线M_REQ由主器件控制,连接于主器件的I/O口与从器件的中断触发口之间,所述信号线S_REQ由从器件控制,连接于从器件的I/O口与主器件的中断触发口之间。

【技术特征摘要】

【专利技术属性】
技术研发人员:张裁会秦青春
申请(专利权)人:惠州市德赛西威汽车电子有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1