CN107346294A - 基于spi协议的数据流控系统及方法 - Google Patents
基于spi协议的数据流控系统及方法 Download PDFInfo
- Publication number
- CN107346294A CN107346294A CN201610289808.5A CN201610289808A CN107346294A CN 107346294 A CN107346294 A CN 107346294A CN 201610289808 A CN201610289808 A CN 201610289808A CN 107346294 A CN107346294 A CN 107346294A
- Authority
- CN
- China
- Prior art keywords
- state
- slave
- ports
- data
- controller
- 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
Links
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
- G06F13/4286—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a handshaking protocol, e.g. RS232C link
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Communication Control (AREA)
Abstract
本发明公开了一种基于SPI协议的数据流控系统及方法,其包括主控制器的主机和包括从控制器的从机,从机包括两个IO口;从控制器在从机准备好接收数据之前将两个IO口的状态设置为第一状态,在从机准备好接收数据时将两个IO口的状态设置为第二状态,在从机接收完一数据包时将两个IO口的状态设置为第三状态,在从机接收完一数据包后且准备接收下一数据包时将两个IO口的状态设置为该第二状态;主控制器用于在检测到两个IO口的状态为第一状态时不发送数据包给从机,在检测到两个IO口的状态为第二状态或第三状态时发送数据包至从机。使得主机和从机之间实现很好的配合工作,能够防止数据丢失,防止主机和从机间信息交互时出现错误。
Description
技术领域
本发明涉及数据传输与处理领域,特别涉及一种基于SPI(同步串行外设接口)协议的数据流控系统及方法,从而将SPI改造成异步双向数据通信接口。
背景技术
目前,具有票据打印功能的移动POS(销售点)机,包含嵌入式主机平台、打印机以及移动网络连接等功能,具有集成度高、功能完整的特点。
移动POS机的主机平台使用CPU(中央处理器)方案,一般都存在一定的接口限制,其可提供的接口类型只有以下几种:USB OTG(是USBOn-The-Go的缩写,主要应用于各种不同的设备或移动设备间的联接,进行数据交换)、UART(通用同步/异步串行接收/发送器)、IIC(集成电路总线)和SPI。
移动POS集成的打印机,与其主机之间的数据通信接口,如果是通用数据接口的话,就只有USB和UART可以选择。但是,主机平台CPU往往只提供一个USB OTG,如果将其配置为HOST(主机)连接打印机,那么主机将无法提供USB debug(故障调试)功能,这会造成很多的不便。如果选择UART,要当心其传输速率无法满足打印机速度的问题。
在USB和UART都不能选择的情况下,IIC和SPI也就成为可选项。IIC控制总线的传输速率也不高,打印机的控制MCU(微控制单元)的IIC总线最高速率也只有400K,跟UART同样存在传输速率问题。SPI接口的传输速率可以达到20Mb/s以上,而且协议简单、占用引脚少,可以通过简单的软件协议实现高速数据传输。
但是,SPI接口存在一个缺点:没有指定的流控制,没有应答机制确认是否接收到数据。而打印机数据接口接收数据,如果数据丢失的话,最直接的结果就是打印错乱,所以需要有很好的流控或校验机制。但在数据传输速率要求比较高的情况下,校验机制往往比较难实现;所以实现流控机制是必需的。
更有甚者,打印机还是一个需要自动上报异常状态的设备,在接口没有数据传输的情况下,一旦打印机发生异常,是需要打印机主动将信息传输到主机,而SPI是不支持从设备主动向主机传输数据的。所以实现异步传输机制也是必须的。
发明内容
本发明要解决的技术问题是现有的移动POS机等系统利用SPI接口进行通信时不具备完整的控制导致主机和从机间信息交互出现错误的缺陷,提供一种基于SPI协议的数据流控系统及方法。
本发明是通过下述技术方案来解决上述技术问题的:
本发明提供一种基于SPI协议的数据流控系统,其包括一主机和一从机,该主机和该从机通过SPI协议进行通信,其特点在于,该从机的端口包括至少两个IO(输入输出)口,该主机包括一主控制器,该从机包括一从控制器;
该从控制器用于在该从机准备好接收数据之前将该两个IO口的状态设置为第一状态,在该从机准备好接收数据时将该两个IO口的状态设置为第二状态,在该从机接收完一数据包时将该两个IO口的状态设置为第三状态,在该从机接收完一数据包后且准备接收下一数据包时将该两个IO口的状态设置为该第二状态;
该主控制器用于在检测到该两个IO口的状态为该第一状态时不发送数据包给该从机,在检测到该两个IO口的状态为该第二状态或该第三状态时发送该数据包至该从机。
SPI协议本身是没有流控机制的,而从其协议上看,用软件方式实现流控也是不可能的,所以,本方案考虑增加硬件流控方式,也就是增加状态IO口以表达接收端即打印机的闲忙状态。
较佳地,该从控制器用于在该从机的缓冲区存满时保持该两个IO口的状态不变直至该缓冲区空闲,且将该两个IO口的状态设置为该第二状态或该第三状态。
较佳地,该从控制器用于在该从机出现异常情况时,将该两个IO口的状态设置为第四状态;
该主控制器用于在检测到该两个IO口的状态为该第四状态时发送一询问包至该从机;
该从控制器还用于发送一该从机出现异常情况的信息至该主机。
较佳地,该主控制器用于在未发送数据包的时间达到一设定时间时发送一休眠信号至该从机,该从控制器用于将该两个IO口的状态设置为该第一状态。
较佳地,该主控制器用于在再次需要发送数据包时发送一唤醒信号至该从机,该从控制器用于将该两个IO口的状态设置为该第二状态。
本发明还提供一种基于SPI协议的数据流控方法,其特点在于,其利用上述的基于SPI协议的数据流控系统实现,该数据流控方法包括以下步骤:
S1、在该从机准备好接收数据之前,该从控制器将该两个IO口的状态设置为该第一状态;
S2、该主控制器检测该两个IO口的状态为该第一状态,控制不发送数据包给该从机;
S3、该从机准备好接收数据,该从控制器将该两个IO口的状态设置为第二状态;
S4、该主控制器检测该两个IO口的状态为该第二状态,控制发送该数据包至该从机;
S5、该从机接收该数据包,并发送一状态包至该主机;
S6、该从机准备好接收下一数据,该从控制器将该两个IO口的状态设置为第三状态;
S6、该主控制器检测该两个IO口的状态为该第三状态,控制发送下一个数据包给该从机;
S7、该从机接收该下一个数据包,并发送该状态包至该主机,进入步骤S3。
较佳地,该从控制器在该从机的缓冲区存满时保持该两个IO口的状态不变直至该缓冲区空闲,且将该两个IO口的状态设置为该第二状态或该第三状态。
较佳地,该从控制器在该从机出现异常情况时,将该两个IO口的状态设置为第四状态;
该主控制器在检测到该两个IO口的状态为该第四状态时发送一询问包至该从机;
该从控制器发送一该从机出现异常情况的信息至该主机。
较佳地,该主控制器在未发送数据包的时间达到一设定时间时发送一休眠信号至该从机,该从控制器将该两个IO口的状态设置为该第一状态。
较佳地,该主控制器在再次需要发送数据包时发送一唤醒信号至该从机,该从控制器将该两个IO口的状态设置为该第二状态。
在符合本领域常识的基础上,上述各优选条件,可任意组合,即得本发明各较佳实例。
本发明的积极进步效果在于:
本发明的基于SPI协议的数据流控系统及方法,使得主机和从机之间实现很好的配合工作,能够防止数据丢失,防止主机和从机间信息交互时出现错误,此外,休眠唤醒机制能够有效地降低功耗。
附图说明
图1为本发明较佳实施例的基于SPI协议的数据流控方法的流程图。
具体实施方式
下面结合附图给出本发明较佳实施例,以详细说明本发明的技术方案,但并不因此将本发明限制在所述的实施例范围之中。
本实施例提供一种基于SPI协议的数据流控系统,其包括一主机和一从机,该主机和该从机通过SPI协议进行通信,该从机的端口包括至少两个IO口,该主机包括一主控制器,该从机包括一从控制器。
该主机作为SPI主机设备,控制SPI的发送时序及发送速率;该从机例如打印机作为SPI从设备,只能被动接收主机发送下来的数据;打印机端通过两个IO口与主机相连表示闲忙状态。
如图1所示,本实施例还提供一种基于SPI协议的数据流控方法,其利用上述的基于SPI协议的数据流控系统实现,该数据流控方法包括以下步骤:
步骤101、在该从机(例如打印机)准备好接收数据之前,该从控制器将该两个IO口的状态设置为该第一状态(00,即均为低电平);
步骤102、该主控制器检测该两个IO口的状态为该第一状态,控制不发送数据包给该从机;
步骤103、该从机准备好接收数据,该从控制器将该两个IO口的状态设置为第二状态(01,即一个低电平一个高电平);
步骤104、该主控制器检测该两个IO口的状态为该第二状态,控制发送256个字节的数据包至该从机;
步骤105、该从机接收该数据包,并发送一个256个字节的状态包至该主机;
步骤106、该从机准备好接收下一数据,该从控制器将该两个IO口的状态由01更改设置为第三状态(10,即一个高电平一个低电平);
步骤107、该主控制器检测该两个IO口的状态为该第三状态,控制发送下一个数据包给该从机;
步骤108、该从机接收该下一个数据包,并发送该状态包至该主机,进入步骤103。
此外,该从控制器在该从机的缓冲区存满时保持该两个IO口的状态不变直至该缓冲区空闲,且将该两个IO口的状态设置为该第二状态或该第三状态。
由于该从机无法主动发送数据,所以,在该从机出现异常情况(例如打印机翻盖、过热等)时,执行以下步骤:步骤109、该从控制器将该两个IO口的状态设置为第四状态(11,即均为高电平);步骤110、该主控制器在检测到该两个IO口的状态为该第四状态时发送一询问包至该从机;步骤111、该从控制器发送一该从机出现异常情况的信息包至该主机。
主机端利用GPIO引脚(GPIO1、GPIO2引脚对应从控制器(MCU)的IO状态引脚,GPIO3、GPIO4引脚对应MCU的休眠唤醒引脚)辅助完成上位机与打印机的通讯。GPIO(GPIO1、GPIO2)取值0(第一状态00)、1(第二状态01)、2(第三状态10)、3(第四状态11)。值为0停止通讯,值3发送查询包。GPIO值变为1或2时,主机可以发信息包给打印机,同时收到打印机返回的等长度的信息包,主机根据约定对返回信息包进行分析处理,打印机收到包进行处理,如果接收缓冲区未满,可以接收下一个包,打印机将GPIO值改为2或1。如果打印机没有改变GPIO值,则主机不能继续发包。
为降低功耗,流程中引入了休眠唤醒机制,如果长时间主机没有打印任务,主机利用GPIO引脚(GPIO3)使打印机进入休眠,降低功耗,即打印机收到休眠信号,把两个IO口的状态设置为第一状态,停止接收数据包。主机有打印任务时,利用GPIO引脚(GPIO4)唤醒打印机,打印机收到唤醒信号,准备好后将两个IO的状态设置第二状态,打印机可以开始接收主机数据包。
本实施例中,MCU接收SPI数据包未做数据处理情况下,每秒可接收1200个包(每个包256个字节)左右,即数据流量2.5Mbit左右。
在本系统中的从机为打印机时,MCU接收SPI数据包并且在打印机(选择打印速度只有70mm/s的58热敏打印机)做光栅位图(80宽度位图)打印情况下,每秒可发送200个数据包,打印效果流畅。上位机由于传输速度很快,受打印头速度限制,会提示数据阻塞,但数据没有发生打印错乱问题。
MCU接收SPI数据包做光栅位图(80宽度位图)处理但不打印,每秒可发送725个数据包,即理论上SPI结合数据流可支持80打印机320mm/s的光栅位图打印。
由此可见,通过以上测试,可以确定SPI数据异步流控通信速率能够满足产品化要求。
虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。
Claims (10)
1.一种基于SPI协议的数据流控系统,其包括一主机和一从机,该主机和该从机通过SPI协议进行通信,其特征在于,该从机的端口包括至少两个IO口,该主机包括一主控制器,该从机包括一从控制器;
该从控制器用于在该从机准备好接收数据之前将该两个IO口的状态设置为第一状态,在该从机准备好接收数据时将该两个IO口的状态设置为第二状态,在该从机接收完一数据包时将该两个IO口的状态设置为第三状态,在该从机接收完一数据包后且准备接收下一数据包时将该两个IO口的状态设置为该第二状态;
该主控制器用于在检测到该两个IO口的状态为该第一状态时不发送数据包给该从机,在检测到该两个IO口的状态为该第二状态或该第三状态时发送该数据包至该从机。
2.如权利要求1所述的基于SPI协议的数据流控系统,其特征在于,该从控制器用于在该从机的缓冲区存满时保持该两个IO口的状态不变直至该缓冲区空闲,且将该两个IO口的状态设置为该第二状态或该第三状态。
3.如权利要求1所述的基于SPI协议的数据流控系统,其特征在于,该从控制器用于在该从机出现异常情况时,将该两个IO口的状态设置为第四状态;
该主控制器用于在检测到该两个IO口的状态为该第四状态时发送一询问包至该从机;
该从控制器还用于发送一该从机出现异常情况的信息至该主机。
4.如权利要求1所述的基于SPI协议的数据流控系统,其特征在于,该主控制器用于在未发送数据包的时间达到一设定时间时发送一休眠信号至该从机,该从控制器用于将该两个IO口的状态设置为该第一状态。
5.如权利要求1所述的基于SPI协议的数据流控系统,其特征在于,该主控制器用于在再次需要发送数据包时发送一唤醒信号至该从机,该从控制器用于将该两个IO口的状态设置为该第二状态。
6.一种基于SPI协议的数据流控方法,其特征在于,其利用如权利要求1所述的基于SPI协议的数据流控系统实现,该数据流控方法包括以下步骤:
S1、在该从机准备好接收数据之前,该从控制器将该两个IO口的状态设置为该第一状态;
S2、该主控制器检测该两个IO口的状态为该第一状态,控制不发送数据包给该从机;
S3、该从机准备好接收数据,该从控制器将该两个IO口的状态设置为第二状态;
S4、该主控制器检测该两个IO口的状态为该第二状态,控制发送该数据包至该从机;
S5、该从机接收该数据包,并发送一状态包至该主机;
S6、该从机准备好接收下一数据,该从控制器将该两个IO口的状态设置为第三状态;
S6、该主控制器检测该两个IO口的状态为该第三状态,控制发送下一个数据包给该从机;
S7、该从机接收该下一个数据包,并发送该状态包至该主机,进入步骤S3。
7.如权利要求6所述的基于SPI协议的数据流控方法,其特征在于,该从控制器在该从机的缓冲区存满时保持该两个IO口的状态不变直至该缓冲区空闲,且将该两个IO口的状态设置为该第二状态或该第三状态。
8.如权利要求6所述的基于SPI协议的数据流控方法,其特征在于,该从控制器在该从机出现异常情况时,将该两个IO口的状态设置为第四状态;
该主控制器在检测到该两个IO口的状态为该第四状态时发送一询问包至该从机;
该从控制器发送一该从机出现异常情况的信息至该主机。
9.如权利要求6所述的基于SPI协议的数据流控方法,其特征在于,该主控制器在未发送数据包的时间达到一设定时间时发送一休眠信号至该从机,该从控制器将该两个IO口的状态设置为该第一状态。
10.如权利要求9所述的基于SPI协议的数据流控方法,其特征在于,该主控制器在再次需要发送数据包时发送一唤醒信号至该从机,该从控制器将该两个IO口的状态设置为该第二状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610289808.5A CN107346294B (zh) | 2016-05-04 | 2016-05-04 | 基于spi协议的数据流控系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610289808.5A CN107346294B (zh) | 2016-05-04 | 2016-05-04 | 基于spi协议的数据流控系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107346294A true CN107346294A (zh) | 2017-11-14 |
CN107346294B CN107346294B (zh) | 2020-11-20 |
Family
ID=60253711
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610289808.5A Active CN107346294B (zh) | 2016-05-04 | 2016-05-04 | 基于spi协议的数据流控系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107346294B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113407478B (zh) * | 2021-08-23 | 2021-11-30 | 上海泰矽微电子有限公司 | 一种实现spi从设备主动申请传输的方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101819560A (zh) * | 2009-02-27 | 2010-09-01 | 杭州晟元芯片技术有限公司 | 一种spi接口存储器执行程序方法和装置 |
CN102023945A (zh) * | 2009-09-22 | 2011-04-20 | 鸿富锦精密工业(深圳)有限公司 | 基于串行外围设备接口总线的设备及其数据传输方法 |
CN102354305A (zh) * | 2011-09-27 | 2012-02-15 | 青岛海信电器股份有限公司 | 设备间串行通信系统及方法 |
CN103077144A (zh) * | 2012-12-28 | 2013-05-01 | 上海自动化仪表股份有限公司 | 一种确保数据完整的spi通讯接口及其通讯方法 |
CN103744825A (zh) * | 2013-12-31 | 2014-04-23 | 北京中宇新泰科技发展有限公司 | 一种扩展兼容spi接口双向实时通讯方法 |
CN104360973A (zh) * | 2014-10-20 | 2015-02-18 | 深圳市华为技术软件有限公司 | 一种通信系统、通信方法及相关通信设备 |
CN104679715A (zh) * | 2013-12-03 | 2015-06-03 | 厦门雅迅网络股份有限公司 | 一种芯片间的简易通信方法及装置 |
EP3001323A1 (en) * | 2014-09-26 | 2016-03-30 | Oberthur Technologies | Serial peripheral interface |
-
2016
- 2016-05-04 CN CN201610289808.5A patent/CN107346294B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101819560A (zh) * | 2009-02-27 | 2010-09-01 | 杭州晟元芯片技术有限公司 | 一种spi接口存储器执行程序方法和装置 |
CN102023945A (zh) * | 2009-09-22 | 2011-04-20 | 鸿富锦精密工业(深圳)有限公司 | 基于串行外围设备接口总线的设备及其数据传输方法 |
CN102354305A (zh) * | 2011-09-27 | 2012-02-15 | 青岛海信电器股份有限公司 | 设备间串行通信系统及方法 |
CN103077144A (zh) * | 2012-12-28 | 2013-05-01 | 上海自动化仪表股份有限公司 | 一种确保数据完整的spi通讯接口及其通讯方法 |
CN104679715A (zh) * | 2013-12-03 | 2015-06-03 | 厦门雅迅网络股份有限公司 | 一种芯片间的简易通信方法及装置 |
CN103744825A (zh) * | 2013-12-31 | 2014-04-23 | 北京中宇新泰科技发展有限公司 | 一种扩展兼容spi接口双向实时通讯方法 |
EP3001323A1 (en) * | 2014-09-26 | 2016-03-30 | Oberthur Technologies | Serial peripheral interface |
CN104360973A (zh) * | 2014-10-20 | 2015-02-18 | 深圳市华为技术软件有限公司 | 一种通信系统、通信方法及相关通信设备 |
Non-Patent Citations (2)
Title |
---|
MATTHEW TURNER: "The design of a bi-directional, RFID-based ASIC for interfacing with SPI bus peripherals", 《2010 53RD IEEE INTERNATIONAL MIDWEST SYMPOSIUM ON CIRCUITS AND SYSTEMS》 * |
李利利: "基于Verilog HDL的SPI协议可复用IP软核的设计与验证", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Also Published As
Publication number | Publication date |
---|---|
CN107346294B (zh) | 2020-11-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104205781B (zh) | 用于低功率、高带宽通信的接口、方法和机器可读介质 | |
US10180927B2 (en) | Device, system and method for communication with heterogeneous physical layers | |
US8683091B2 (en) | Device disconnect detection | |
US9785530B2 (en) | Method, device, and system for processing PCIe link fault | |
US9767064B2 (en) | Low power universal serial bus | |
CN100366029C (zh) | 通信控制器、主机端控制器、通信设备、通信系统和方法 | |
CN104321757B (zh) | 设备连接检测 | |
US9129064B2 (en) | USB 3.0 link layer timer adjustment to extend distance | |
US8745296B2 (en) | Serial storage protocol compatible frame conversion, at least in part being compatible with SATA and one packet being compatible with PCIe protocol | |
US7353300B2 (en) | Apparatus to improve the firmware efficiency for a multiframe serial interface | |
US8576734B2 (en) | Information processing apparatus, control method thereof and program | |
KR20080102364A (ko) | 사용중인 매체 신호를 또다른 디바이스에 송신하기 위한방법 및 디바이스 | |
CN107346294A (zh) | 基于spi协议的数据流控系统及方法 | |
TW200425681A (en) | De-activation, at least in part, of receiver, in response, at least in part, to determination that an idle condition exists | |
WO2024174783A1 (zh) | 带宽测量的方法、装置以及系统 | |
CN106610905A (zh) | 辅助选择局域网接口系统及其通信方法 | |
JP2012118821A (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 | ||
CB02 | Change of applicant information |
Address after: Room 505, 388 Songhu Road, Yangpu District, Shanghai, 2003 Applicant after: SHANGHAI SHANGMI SCIENCE AND TECHNOLOGY GROUP CO., LTD. Address before: 200433 Shanghai city Yangpu District Songhu Road No. 388 building 7, KIC 605 Applicant before: Shanghai traders Technology Co., Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |