CN113806265A - 一种spi主从式通讯方法 - Google Patents
一种spi主从式通讯方法 Download PDFInfo
- Publication number
- CN113806265A CN113806265A CN202111096468.1A CN202111096468A CN113806265A CN 113806265 A CN113806265 A CN 113806265A CN 202111096468 A CN202111096468 A CN 202111096468A CN 113806265 A CN113806265 A CN 113806265A
- Authority
- CN
- China
- Prior art keywords
- spi
- slave
- frame
- data
- master
- 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
- 238000000034 method Methods 0.000 title claims abstract description 21
- 230000004044 response Effects 0.000 claims abstract description 36
- 230000000737 periodic effect Effects 0.000 claims abstract description 26
- 230000005540 biological transmission Effects 0.000 abstract description 7
- 230000001360 synchronised effect Effects 0.000 description 2
- 235000015429 Mirabilis expansa Nutrition 0.000 description 1
- 244000294411 Mirabilis expansa Species 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 235000013536 miso Nutrition 0.000 description 1
- 230000002093 peripheral effect Effects 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/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- 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
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Communication Control (AREA)
Abstract
本发明公开了一种SPI主从式通迅方法,用于SPI主机和SPI从机之间的数据交换,在SPI主机和SPI从机之间采用数据帧传送数据,数据帧包括请求帧、心跳帧、响应帧、非应答帧和空帧。SPI主机向SPI从机发送周期性数据和非周期性数据,发送周期性数据采用请求帧或非应答帧;发送非周期性数据采用请求帧,SPI从机向SPI主机发送数据采用非应答帧。数据帧使用DMA机制进行传输,可有效避免数据帧因在传输的过程中被打断而导致的数据帧不完整,从而提高数据通信效率。上述方法采用数据流的传输方式可以实现高效、可靠的双机通迅。
Description
技术领域
本发明涉及SPI通迅总线技术领域,具体涉及一种SPI主从式通迅方法。
背景技术
SPI,串行外围设备接口,是一种高速的,全双工,同步的通信总线,主要应用于AD转换器、CPU与CPU之间,SPI共设置有4根信号线,用于主机与从机之间的连接,其中MISO和MOSI两根线,可以同时发送和接收数据,其通迅效率较高。不过,SPI通讯没有流控机制,发送的数据没有应答,无法确认数据已成功接收,从设备数据准备好时需要通过额外的通道通知主设备,否则容易导致从设备的数据出现断续和误码。
发明内容
本发明的目的是提供一种SPI主从式通迅方法,对SPI存在的问题进行改进,使采用SPI通迅的设备之间可以进行高效地数据传输。
为实现上述目的,本发明的一种SPI主从式通迅方法,一种SPI主从式通迅方法,用于SPI主机和SPI从机之间的数据交换,SPI主机和SPI从机之间采用数据流的方式传输数据,数据流由固定长度的数据帧组成,数据帧包括请求帧、心跳帧、响应帧、非应答帧和空帧;SPI主机向SPI从机发送周期性数据和非周期性数据,发送周期性数据采用请求帧或非应答帧;发送非周期性数据采用请求帧,SPI从机向SPI主机发送数据采用非应答帧。
进一步地,当周期性数据使用非应答帧从SPI主机发往SPI从机时,SPI从机接收到后不需要发送响应到SPI主机;当周期性数据采用请求帧从SPI主机发往SPI从机时,请求帧需要SPI从机收到后发送响应帧到SPI主机。
进一步地,心跳帧用于维持SPI主机和SPI从机之间的连接状态,按以下步骤执行:
起始状态为链路断开状态;
主站周期性发送心跳帧,从站收到心跳帧后,切换链路状态为连接状态,并发送心跳帧到主站;
主站收到从站的心跳帧后,切换链路状态为连接状态。
进一步地,心跳帧包含了本方的链路状态。
进一步地,SPI主机和SPI从机只有在链路为连接状态时才开始传送数据。
进一步地,SPI主机周期性地发送时间戳到SPI从机,时间戳封装在心跳帧内。
进一步地,当SPI主机的请求帧发送完成后,在设定的超时时间内,SPI主机始终没有收到SPI从机的响应帧时,请求帧产生超时,从等待响应队列移入发送队列,重新发送该请求帧。
进一步地,当多次重发超时后,SPI主机和SPI从机的链路断开。
进一步地,SPI主机处于空闲状态并且等待响应队列不为空时,SPI主机发送空帧到SPI从机,SPI从机向SPI主机发送非应答帧。
进一步地,SPI主机和SPI从机通过DMA方式传送数据。
本发明的有益效果是:本通迅方法采用数据流的方式进行通迅,数据按照固定的帧大小传输,各种数据混合在一起形成一个数据流,对应用层来说可以提供周期性数据和非周期性数据的有效交换,固定帧大小有效提高了数据交换的效率,链路状态和超时机制提供了数据的可靠交换。
附图说明
图1是本发明的结构示意图;
图2是DMA连接图;
具体实施方式
下面通过实施例结合附图对本发明作进一步详细说明。
如图1所示,本发明采用两套独立的主机,两套主机之间通过高速SPI连接,基于SPI链路实现了两套主机的CPU之间的数据库同步,将其中一个主机定义为SPI主机,另一个定义为SPI从机。SPI主机和SPI从机均采用运行RTEMS实时系统的PowerPC构建,SPI主机和SPI从机上有两个20000字空间的实时数据库,SPI主机和SPI从机采用主备的方式工作,当SPI主机工作于主模式时,SPI从机工作于备模式,当SPI主机发生故障时,系统会切换到SPI从机,SPI从机开始工作在主模式。工作于备机模式的SPI从机需要保证自身数据库和工作于主模式的SPI主机中的数据库保持同步。SPI主机负责产生时钟信号。本发明SPI主机和SPI从机之间按照数据流的方式来交换信息,采用固定大小的数据帧传输数据,数据帧具有固定长度的帧头信息和CRC校验码,当应用层数据长度大于数据帧的净载荷长度时,采用多个数据帧传输。数据帧包括请求、心跳帧、响应帧、非应答帧和空帧。SPI主机向SPI从机发送周期性数据和非周期性数据,SPI主机向SPI从机发送周期性数据和非周期性数据,发送周期性数据采用请求帧或非应答帧。发送非周期性数据采用请求帧,SPI从机向SPI主机发送数据采用非应答帧。当周期性数据使用非应答帧从SPI主机发往SPI从机时,SPI从机接收到后不需要发送响应到SPI主机,当周期性数据采用请求帧从SPI主机发往SPI从机时,请求帧需要SPI从机收到后发送响应帧到SPI主机。
心跳帧用于保持SPI主机和SPI从机之间的连接状态,按以下步骤执行:
起始状态为链路断开状态;SPI主机周期性发送心跳帧,SPI从机收到心跳帧后,切换链路状态为连接状态,并发送心跳帧到SPI主机;SPI主机收到从站的心跳帧后,切换链路状态为连接状态;当发送队列中有数据需要发送时,不发送心跳帧。
心跳帧包含了本方的链路状态,SPI主机和SPI从机只有在链路为连接状态时才开始传送数据。
上述心跳机制,使SPI主机可以知道SPI从机始终在线,如果SPI主机超过设置的时间没有收到SPI从机发送的数据帧,则断开连接。
SPI主机周期性地发送时间戳到SPI从机,时间戳封装在心跳帧内。时间戳的主要是对数据产生的时间进行认证,从而验证SPI主机发送的数据在产生后是否经过篡改。
当SPI主机的请求帧发送完成后,在设定的超时时间内,SPI主机始终没有收到SPI从机的响应帧时,请求帧产生超时,从等待响应队列移入发送队列,重新发送该请求帧。当多次重发超时后,SPI主机和SPI从机的链路断开。SPI主机处于空闲状态并且等待响应队列不为空时,SPI主机发送空帧到SPI从机,SPI从机向SPI主机发送非应答帧。
如图2所示,本实施例中,SPI主机和SPI从机通过DMA方式传送数据。DMA(DirectMemory Access,直接存储器访问)将数据从一块区域复制到另一块区域,允许不同速度的硬件直接通讯,不需要依赖CPU的介入。否则,CPU需要从来源把每一块数据复制到内存中,然后把它们再次写回到新的地方,在这期间,CPU对于其他的工作来说就无法使用。DMA的实现依赖于DMA控制器,CPU对DMA控制器进行初始化,指定源地址、目标地址、数据块长度,随后触发DMA控制器启动传输操作,CPU可以继续其他的计算。数据帧使用DMA机制进行传输,可有效避免数据帧因在传输的过程中被打断而导致的数据帧不完整,从而提高数据通信效率。
综上所述,上述SPI主机与SPI从机之间采用数据流的方式进行通迅,设定数据帧的格式以及发送与接收时的相关规则,并规避了意外中断造成的数据传输错误,使通迅更为合理、顺畅。
上面结合附图对本发明的实施方式作了详细说明,但是本发明并不限于此,在所属技术领域的技术人员所具备的知识范围内,在不脱离本发明宗旨的前提下可以作出的各种变化,都处于本发明权利要求的保护范围之内。
Claims (10)
1.一种SPI主从式通迅方法,其特征在于,用于SPI主机和SPI从机之间的数据交换,SPI主机和SPI从机之间采用数据流的方式传输数据,数据流由固定长度的数据帧组成,数据帧包括请求帧、心跳帧、响应帧、非应答帧和空帧;SPI主机向SPI从机发送周期性数据和非周期性数据,发送周期性数据采用请求帧或非应答帧;发送非周期性数据采用请求帧,SPI从机向SPI主机发送数据采用非应答帧。
2.根据权利要求1所述的一种SPI主从式通迅方法,其特征在于,当周期性数据使用非应答帧从SPI主机发往SPI从机时,SPI从机接收到后不需要发送响应到SPI主机;当周期性数据采用请求帧从SPI主机发往SPI从机时,请求帧需要SPI从机收到后发送响应帧到SPI主机。
3.根据权利要求1所述的一种SPI主从式通迅方法,其特征在于,心跳帧用于维持SPI主机和SPI从机之间的连接状态,按以下步骤执行:
起始状态为链路断开状态;
主站周期性发送心跳帧,从站收到心跳帧后,切换链路状态为连接状态,并发送心跳帧到主站;
主站收到从站的心跳帧后,切换链路状态为连接状态。
4.根据权利要求3所述的一种SPI主从式通迅方法,其特征在于,心跳帧包含了本方的链路状态。
5.根据权利要求3所述的一种SPI主从式通迅方法,其特征在于,SPI主机和SPI从机只有在链路为连接状态时才开始传送数据。
6.根据权利要求1所述的一种SPI主从式通迅方法,其特征在于,SPI主机周期性地发送时间戳到SPI从机,时间戳封装在心跳帧内。
7.根据权利要求1所述的一种SPI主从式通迅方法,其特征在于,当SPI主机的请求帧发送完成后,在设定的超时时间内,SPI主机始终没有收到SPI从机的响应帧时,请求帧产生超时,从等待响应队列移入发送队列,重新发送该请求帧。
8.根据权利要求7所述的一种SPI主从式通迅方法,其特征在于,当多次重发超时后,SPI主机和SPI从机的链路断开。
9.根据权利要求1所述的一种SPI主从式通迅方法,其特征在于,SPI主机处于空闲状态并且等待响应队列不为空时,SPI主机发送空帧到SPI从机,SPI从机向SPI主机发送非应答帧。
10.根据权利要求1所述的一种SPI主从式通迅方法,其特征在于,SPI主机和SPI从机通过DMA方式传送数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111096468.1A CN113806265A (zh) | 2021-09-18 | 2021-09-18 | 一种spi主从式通讯方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111096468.1A CN113806265A (zh) | 2021-09-18 | 2021-09-18 | 一种spi主从式通讯方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113806265A true CN113806265A (zh) | 2021-12-17 |
Family
ID=78895868
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111096468.1A Pending CN113806265A (zh) | 2021-09-18 | 2021-09-18 | 一种spi主从式通讯方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113806265A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116795744A (zh) * | 2023-08-15 | 2023-09-22 | 三峡智控科技有限公司 | 一种ls2k1000la与mcu通讯的控制方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102011004358B3 (de) * | 2011-02-18 | 2012-05-31 | Continental Automotive Gmbh | Verfahren zum Übertragen von Daten über einen synchronen seriellen Datenbus |
CN104965700A (zh) * | 2015-06-09 | 2015-10-07 | 航天科工深圳(集团)有限公司 | VxWorks操作系统下实现驱动SPI设备的方法和系统 |
WO2018058862A1 (zh) * | 2016-09-29 | 2018-04-05 | 华为技术有限公司 | 一种基于spi的数据传输方法及装置 |
CN110855686A (zh) * | 2019-11-18 | 2020-02-28 | 深圳开立生物医疗科技股份有限公司 | 一种spi协议通信方法、系统、设备及计算机存储介质 |
CN112817886A (zh) * | 2021-02-04 | 2021-05-18 | 珠海全志科技股份有限公司 | 基于spi的主从通信方法及装置 |
-
2021
- 2021-09-18 CN CN202111096468.1A patent/CN113806265A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102011004358B3 (de) * | 2011-02-18 | 2012-05-31 | Continental Automotive Gmbh | Verfahren zum Übertragen von Daten über einen synchronen seriellen Datenbus |
CN104965700A (zh) * | 2015-06-09 | 2015-10-07 | 航天科工深圳(集团)有限公司 | VxWorks操作系统下实现驱动SPI设备的方法和系统 |
WO2018058862A1 (zh) * | 2016-09-29 | 2018-04-05 | 华为技术有限公司 | 一种基于spi的数据传输方法及装置 |
CN110855686A (zh) * | 2019-11-18 | 2020-02-28 | 深圳开立生物医疗科技股份有限公司 | 一种spi协议通信方法、系统、设备及计算机存储介质 |
CN112817886A (zh) * | 2021-02-04 | 2021-05-18 | 珠海全志科技股份有限公司 | 基于spi的主从通信方法及装置 |
Non-Patent Citations (1)
Title |
---|
宋晋峰;杨文焕;邵艳琼;: "嵌入式测控系统中数据存储的一种解决方案", 仪表技术, no. 02, 15 February 2008 (2008-02-15) * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116795744A (zh) * | 2023-08-15 | 2023-09-22 | 三峡智控科技有限公司 | 一种ls2k1000la与mcu通讯的控制方法 |
CN116795744B (zh) * | 2023-08-15 | 2023-12-19 | 三峡智控科技有限公司 | 一种ls2k1000la与mcu通讯的控制方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2676204B1 (en) | Serial interface | |
EP0244117B1 (en) | A method of duplex data transmission using a send-and-wait protocol | |
CN1821913A (zh) | 基于i2c的通信系统及通信方法 | |
US9081905B2 (en) | Low latency interconnect bus protocol | |
CN1897513A (zh) | 一种单片机串口通信方法和单片机控制系统 | |
US7117283B2 (en) | Multi-master extended I2C protocol | |
CN114520711A (zh) | 数据包的选择性重传 | |
CN114826812B (zh) | 一种rs485通信多主站的实现方法及系统 | |
CN113626365A (zh) | 一种基于spi总线的通信方法 | |
CN113806265A (zh) | 一种spi主从式通讯方法 | |
US7760655B2 (en) | Method and device for transfer of data over a data connection from a sender to a receiver by means of packets | |
JP2000253023A (ja) | パケット通信装置 | |
CN102201938A (zh) | 基于通道的CanTp层通信管理方法 | |
WO2022124083A1 (ja) | 通信装置、通信方法、およびプログラム | |
US20240143434A1 (en) | Flow control between peripheral component interconnect express devices | |
JP3148733B2 (ja) | 信号処理装置及び信号処理システム | |
JPH11168525A (ja) | データ通信方法およびデータ通信装置 | |
KR950010483B1 (ko) | 전전자교환기의 신호단말망에 접속된 신호버스정합보드에서의 메시지 송신방법 | |
JPH0263233A (ja) | シリアル通信装置 | |
JP2002281034A (ja) | 情報転送装置 | |
CN117149678A (zh) | 一种多主多从的rs485总线仲裁系统和方法 | |
JP2000244530A (ja) | データ通信装置 | |
CN115361252A (zh) | 网络接口交换电路与电子系统 | |
JPS58219856A (ja) | デ−タ通信方式 | |
JP2004147081A (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 |