CN107370651A - 一种spi从机之间的通信方法 - Google Patents
一种spi从机之间的通信方法 Download PDFInfo
- Publication number
- CN107370651A CN107370651A CN201710493504.5A CN201710493504A CN107370651A CN 107370651 A CN107370651 A CN 107370651A CN 201710493504 A CN201710493504 A CN 201710493504A CN 107370651 A CN107370651 A CN 107370651A
- Authority
- CN
- China
- Prior art keywords
- spi
- slave
- slaves
- data
- spi slaves
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L12/40052—High-speed IEEE 1394 serial bus
- H04L12/40078—Bus configuration
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Systems (AREA)
- Communication Control (AREA)
Abstract
本发明涉及一种SPI从机之间的通信方法,即由主机向从机提供片选信号和时钟信号,在SPI从机之间交叉连接数据接线,数据在SPI从机之间单向或者双向通信。本方法可实现数据在从机之间进行通信,尤其是在使用片选信号和数据传输不同步启动的SPI设备时,具有复杂时序容易实现、传输数据无需整合、无需引入额外硬件等优点。
Description
技术领域
本发明属于电子技术通信领域,具体涉及一种SPI从机之间的通信方法。
背景技术
SPI总线是一种高速、全双工、同步的通信总线,一般只需3~4根数据线和控制线即可实现SPI设备间的通信,具有芯片管脚需求少、IO口连接布线简单、PCB板布局容易等优点,因此被广大电子技术人员选择和使用。
SPI设备可以配置成主机,在SPI主模式下工作,此时,片选信号CS和时钟信号CLK由主机自身产生和驱动,并输出至从机,数据则由MOSI输出至从机,同时由MISO接收从机数据。SPI设备也可以配置成从机,在SPI从模式下工作,此时,片选信号CS和时钟信号CLK由主机提供和驱动,数据则由MISO输出至主机,同时由MOSI接收主机数据。因此SPI通信的传统方式为一主一从或者一主多从,一主多从也仅仅是主机通过时分的方法控制从机的片选信号CS来选择通信从机,其本质也属于一主一从通信方式。
然而在使用一些片选信号CS和数据传输MOSI、MISO不同步启动的SPI设备时,传统的SPI通信方式要么存在大量占用系统资源的问题,要么存在引入额外硬件需求的问题。在此以TI公司的ADS8326高速低功耗模数转化器件为例说明。
图1为ADS8326器件SPI接口时序图,由图可知该器件只使用了一个数据端Dout即MISO,且仅能以从机方式工作。当片选信号CS下降沿启动一次模数转换和数据传输时,首先经过5个时钟周期DCLOCK的采样时间,然后Dout被使能脱离高阻态并输出1个时钟周期的低电平,表示有效数据将开始输出,接下来的16个时钟周期Dout输出的才是有效的转换数据。由此可见片选信号CS控制着每次采样和转换的启动,并且至少要保持22个时钟周期,而Dout需延后6个时钟周期再输出数据,为典型的片选信号和数据传输不同步启动的SPI设备。
这样的SPI设备主要有两种应用方式,均属于一主一从工作方式。一种方式是直接与微控制器单元MCU(如单片机、ARM、DSP等)的SPI接口相连接,由MCU采用查询或者中断的方式直接控制ADS8326的时序并读取数据,如图2所示。这种应用方式主要有两方面的弊端,一是控制周期长、速度慢,并且占用了大量MCU的时间,降低了MCU的工作效率;二是不可避免的要进行数据整合,要么读取3次每次8位数据进行拼接,要么1次读取24位数据进行数据移位,这样反复地进行数据整合消耗了MCU的大量资源。
另一种方式是先与可编程器件(如FPGA、CPLD等)相连接,通过可编程器件专门为ADS8326编写SPI总线逻辑控制模块,控制其时序并读取数据,再由可编程器件与MCU进行数据传输,如图3所示。这种应用方式不需要对转换数据进行拼接或移位等处理,而且可由可编程器件或者是MCU中的DMA进行数据传输和存储,基本上解放了MCU的处理资源。但这种应用方式的弊端也是显而易见的,那就是引入额外的硬件进行通信中继,既增加了系统的硬件需求,又提高了系统设计的复杂性,更是增加了产品的成本。
发明内容
本发明提供了一种SPI从机之间的通信方法,由SPI主机向各SPI从机提供片选信号和时钟信号,在SPI从机之间交叉连接数据接线,数据在SPI从机之间单向或者双向通信。
所述SPI主机只需要具备能够提供各SPI从机正常工作的片选信号和时钟信号功能,无需具备数据通信功能;
所述SPI从机之间交叉连接数据接线有二种方式:第一种,在两个SPI从机之间交叉连接数据接线,第二种:一个SPI从机和多个SPI从机之间交叉连接数据接线,具体为:
(1)从机1的MOSI连接从机2的MISO,从机1的MISO连接从机2的MOSI,如图4所示;
(2)一个SPI从机为主要从机,多个SPI从机为次要从机,主要从机的MOSI连接所有次要从机的MISO,主要从机的MISO连接所有次要从机MOSI;
所述片选信号为CS1、CS2,所述时钟信号为CLK。
本方法可实现数据在从机之间进行通信,尤其是在使用片选信号和数据传输不同步启动的SPI设备时,具有复杂时序容易实现、传输数据无需整合、无需引入额外硬件等优点。
附图说明
图1是ADS8326器件SPI接口时序图;
图2是ADS8326直接与MCU连接应用示意图;
图3是ADS8326先与可编程器件再与MCU连接应用示意图;
图4是SPI双从机间通信的连接示意图;
图5是利用主控器件闲置资源作主机的实施例示意图;
图6是CLK、AD_CS和MCU_CS信号时序图;
图7是利用独立主控器件作主机的实施例示意图;
图8是实现SPI一个主要从机与多个次要从机通信方法的实施例示意图。
具体实施方式
本发明是利用典型SPI协议中的主机控制从机方法,自定义从机之间的通信方式,从而实现SPI从机之间的通信方法。为了更加详细地说明本发明所述方法,下面给出本发明的实施例。
实施例一:利用主控器件闲置资源作主机实现SPI双从机通信方法
如图5所示,模数转化器件选用TI公司的ADS8326,主控器件MCU选用ST公司的STM32F103RE(以下简称STM32)。从图中可以看出,CLK时钟信号由STM32的PWM2产生,输出到ADS8326和STM32各自SPI的时钟信号端;ADS8326的片选信号AD_CS由STM32的PWM1产生;STM32的SPI接口片选信号MCU_CS由STM32自身的PWM3产生。因此,STM32的PWM1、PWM2和PWM3事实上充当了SPI总线上的主机角色,ADS8326和STM32的SPI接口充当了从机角色,而数据Dout则从从机ADS8326流向了另一个从机STM32的SPI接口。这也正是与SPI一主多从模式的区别。
采用上述实施例中的通信方法后,由于片选信号AD_CS和MCU_CS由STM32自身的PWM可精确控制并分别产生,这样使得两个从机之间的通信数据严格对齐,从而实现数据直接传输,避免了常用方法中要么进行数据整合,要么引入额外器件进行通信中继的问题,降低了这类SPI设备片选信号和数据传输不同步启动的使用难度。在图6所示中,GPIOB_IDR.15、GPIOA_IDR.3和GPIOA_IDR.2分别对应的是CLK、AD_CS和MCU_CS信号时序图,由图可知ADS8326输出数据时,正好对齐STM32的SPI接口接收数据时序,实现数据的无缝通信。
实施例二:使用独立主控器件作主机实现SPI双从机通信方法
如图7所示,同样选用STM32主控器件作为独立的主机,ADS8326和另一STM32作为进行通信的双从机。从图中可以看出,CLK时钟信号由主机STM32产生后输出到从机STM32和ADS8326;从机的片选信号CS1和CS2由主机STM32产生并进行控制;而数据流Dout则同样从从机ADS8326流向了另一个从机STM32。
实施例三:实现SPI一个主要从机与多个次要从机的通信方法
如图8所示,选取STM32作为独立的控制主机,选取另一STM32作为主要通信从机,其他N个ADS8326作为多个次要的通信从机。从图中可以看出,CLK时钟信号由主机STM32产生后输出到所有从机作为通信的同步时钟;所有从机的片选信号CS1~CSN由主机STM32产生并进行控制,保证在同一时间只有一个主要从机即从机STM32和一个次要从机即ADS8326在进行通信;数据流Dout则始终保持只有一个次要从机ADS8326流向主要从机STM32。
以上三个实施例虽然是选择STM32作为主控器件MCU,选择ADS8326作为数据流出通信从机,但是本领域的技术人员应该理解,使用其他的如单片机、DSP、嵌入式系统、可编程器件等作为主控器件MCU,或者使用其他的SPI设备如各类传感器、数据采集器、液晶显示屏等作为数据通信从机,实现本发明所述通信方法的,不脱离由所附权利要求限定的本发明的精神和范围。
在实施例一中,虽然是以STM32闲置资源PWM来举例描述本发明所述方法,但是本领域的技术人员应该理解,使用其他主控器件的其他闲置资源如定时器、DMA等实现上述通信方法的,不脱离由所附权利要求限定的本发明的精神和范围。
Claims (5)
1.一种SPI从机之间的通信方法,实现数据在从机之间进行通信,其特征在于,由SPI主机向各SPI从机提供片选信号和时钟信号,在SPI从机之间交叉连接数据接线,数据在SPI从机之间单向或者双向通信;
所述SPI从机之间交叉连接数据接线,有二种方式:第一种方式,在两个SPI从机之间交叉连接数据接线,第二种方式,一个SPI从机和多个SPI从机之间交叉连接数据接线。
2.根据权利要求1所述的一种SPI从机之间的通信方法,其特征在于,所述SPI主机只需要具备能够提供各SPI从机正常工作的片选信号和时钟信号功能,无需具备数据通信功能。
3.根据权利要求1所述的一种SPI从机之间的通信方法,其特征在于,所述第一种方式具体为:SPI从机1的MOSI连接SPI从机2的MISO,SPI从机1的MISO连接SPI从机2的MOSI。
4.根据权利要求1所述的一种SPI从机之间的通信方法,其特征在于,所述第二种方式具体为:一个SPI从机为主要从机,多个SPI从机为次要从机,主要从机的MOSI连接所有次要从机的MISO,主要从机的MISO连接所有次要从机MOSI。
5.根据权利要求1所述的一种SPI从机之间的通信方法,其特征在于,根据权利要求1所述的一种SPI从机之间的通信方法,其特征在于,所述片选信号为CS1、CS2,所述时钟信号为CLK。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710493504.5A CN107370651B (zh) | 2017-06-26 | 2017-06-26 | 一种spi从机之间的通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710493504.5A CN107370651B (zh) | 2017-06-26 | 2017-06-26 | 一种spi从机之间的通信方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107370651A true CN107370651A (zh) | 2017-11-21 |
CN107370651B CN107370651B (zh) | 2020-04-10 |
Family
ID=60305075
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710493504.5A Expired - Fee Related CN107370651B (zh) | 2017-06-26 | 2017-06-26 | 一种spi从机之间的通信方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107370651B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110334046A (zh) * | 2019-07-11 | 2019-10-15 | 南方电网科学研究院有限责任公司 | 一种spi全双工的通信方法、装置及系统 |
CN111352893A (zh) * | 2020-02-21 | 2020-06-30 | 烟台持久钟表有限公司 | 一种fpga和stm32单片机的通信方法 |
CN113391570A (zh) * | 2020-03-11 | 2021-09-14 | 苏州菲斯光电仪器有限公司 | 一种低成本低复杂度的多路da同步控制方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101005427A (zh) * | 2006-12-22 | 2007-07-25 | 华为技术有限公司 | 一种485总线系统和传送数据的方法 |
CN101552733A (zh) * | 2009-05-15 | 2009-10-07 | 深圳华为通信技术有限公司 | 一种基于spi实现数据传输的方法和系统 |
CN102354305A (zh) * | 2011-09-27 | 2012-02-15 | 青岛海信电器股份有限公司 | 设备间串行通信系统及方法 |
CN102929820A (zh) * | 2011-12-30 | 2013-02-13 | 广东佳和通信技术有限公司 | 一种单双线兼容的spi通信装置及其通信方法 |
WO2014114713A1 (de) * | 2013-01-24 | 2014-07-31 | Smiths Heimann Gmbh | Busknoten und bussystem sowie verfahren zur identifikation der busknoten des bussystems |
CN105446930A (zh) * | 2015-12-25 | 2016-03-30 | 吉林大学 | 一种单选择端spi主从式多机双向通信方法 |
-
2017
- 2017-06-26 CN CN201710493504.5A patent/CN107370651B/zh not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101005427A (zh) * | 2006-12-22 | 2007-07-25 | 华为技术有限公司 | 一种485总线系统和传送数据的方法 |
CN101552733A (zh) * | 2009-05-15 | 2009-10-07 | 深圳华为通信技术有限公司 | 一种基于spi实现数据传输的方法和系统 |
CN102354305A (zh) * | 2011-09-27 | 2012-02-15 | 青岛海信电器股份有限公司 | 设备间串行通信系统及方法 |
CN102929820A (zh) * | 2011-12-30 | 2013-02-13 | 广东佳和通信技术有限公司 | 一种单双线兼容的spi通信装置及其通信方法 |
WO2014114713A1 (de) * | 2013-01-24 | 2014-07-31 | Smiths Heimann Gmbh | Busknoten und bussystem sowie verfahren zur identifikation der busknoten des bussystems |
CN105446930A (zh) * | 2015-12-25 | 2016-03-30 | 吉林大学 | 一种单选择端spi主从式多机双向通信方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110334046A (zh) * | 2019-07-11 | 2019-10-15 | 南方电网科学研究院有限责任公司 | 一种spi全双工的通信方法、装置及系统 |
CN111352893A (zh) * | 2020-02-21 | 2020-06-30 | 烟台持久钟表有限公司 | 一种fpga和stm32单片机的通信方法 |
CN111352893B (zh) * | 2020-02-21 | 2023-06-20 | 烟台持久钟表有限公司 | 一种fpga和stm32单片机的通信方法 |
CN113391570A (zh) * | 2020-03-11 | 2021-09-14 | 苏州菲斯光电仪器有限公司 | 一种低成本低复杂度的多路da同步控制方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107370651B (zh) | 2020-04-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102023953B (zh) | 具有多路i2c总线的系统的控制方法 | |
CN102023954B (zh) | 具有多路i2c总线的装置、处理器、系统主板及工控计算机 | |
CN102088386B (zh) | 一种电路系统主从互联模块的串行总线 | |
US8352657B2 (en) | Digital device interconnect interface and system | |
CN103454996A (zh) | 主从机系统及其控制方法 | |
CN106200454B (zh) | 一种多mcu的通信系统及方法 | |
CN108111382A (zh) | 基于i3c总线的通信装置及其通信方法 | |
CN102243619A (zh) | 一种基于fpga实现多路i2c总线端口扩展的方法 | |
CN107370651A (zh) | 一种spi从机之间的通信方法 | |
CN104933004A (zh) | 使用spi总线扩展cpu模块的系统及方法 | |
CN110334046A (zh) | 一种spi全双工的通信方法、装置及系统 | |
CN104834620A (zh) | 串行外设接口spi总线电路、实现方法以及电子设备 | |
CN105446930A (zh) | 一种单选择端spi主从式多机双向通信方法 | |
CN103092175A (zh) | I2c主设备与从设备之间串行时钟线scl控制的方法及装置 | |
CN103814367A (zh) | 具有通过用于串行芯片间数据传输的物理传输路径的逻辑多通道通信的通信装置 | |
CN105045746A (zh) | 一种接口扩展装置 | |
CN101498952A (zh) | 一种CPU、一种SoC芯片及一种同步时钟的方法 | |
CN102445981B (zh) | 数据传输系统以及数据传输方法 | |
CN102123068B (zh) | 一种交调仪多总线通信系统 | |
CN102110070B (zh) | 一种提高串行外围设备接口传输效率的实现方法 | |
CN107239423A (zh) | 一种基于扩展iic接口的装置 | |
CN103530256B (zh) | CPCIe和PCI协议数据的处理装置及方法 | |
CN202617157U (zh) | 一种pcie交换电路 | |
CN205581857U (zh) | 一种实现spi总线上存在多个主设备的装置 | |
CN104810000A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20200410 Termination date: 20210626 |
|
CF01 | Termination of patent right due to non-payment of annual fee |