SPI接口如何实现微控制器之间的通信

2023-07-12

usb接口转换器_基于SPI,接口的多机通信

  [摘 要]:本文介绍一种基于SPI 接口的高速可靠的多微处理器扩展和通信方法,包括该方法的实现原理、硬件连接和软件实现等。  [关键词]:SPI 接口,通信,扩展
  1 引言
  现代测控领域中,工业电子产品往往不是孤立存在的,而是需要能够数据共享,实现多机通信的功能,因而在大多数电子产品的设计中要考虑多机扩展和通信问题。比如在各种采用微处理器的控制系统中,就要求能实现多微处理器的柔性扩展和它们之间的数据通信。本文以AVR 单片机组成的一主两从系统为例,介绍一种基于 SPI 接口的高速可靠的多微处理器扩展和通信方法,包括该方法的实现原理、硬件连接和软件实现。
  2 通信接口的选择
  通信接口的选择关系到整个多机扩展的构成和通信方案的设计。微控制器的通信方式包括并行通信和串行通信,其中串行通信方式有 SPI 通信接口、UART 通信接口、I2C 通信接口等。在通信接口的选择中,通信的可靠性要放在首位。由于并行通信方式通道间会有互相干扰,当传输出错时,要重新传送数据,而且要求数据同时到达接模掘掘收端,但往往各通道由于布线长度不一等原因难以保证真正的一致性。另外采用并行通信方式占用了较多的 I/O 资源,不适合于小型系统,所以本文选择了串行通信方式。基于 SPI通信接口的速度较快,而且通信协议也较为简单,相对来说也比较稳定等优点,本设计就选用 SPI 接口来实现多机通信。
  SPI 接口是全双工同步串行外设接口,采用主从模式架构,支持单主多从模式应用。时钟由主机控制,在时钟移位脉冲下,数据按位传输,输入输出为全双工通信方式。SPI 数据通信时的主-从连接与数据传送方式如图 1 所示。
  图1 SPI 数据通信时的主-从机连接与数旦核据传送方式
  由图1可知,SPI 数据传输系统是由主机和从机两部分组成;主要是由主、从双方的两个移位寄存器和主机 SPI 时钟发生器组成,主机为 SPI 数据传输的控制方。NSS为从设备选择管脚,对于主机,无用,可配置为GPIO口用于选择从机;通知从机进入传输状态,然后主机启动时钟发生器产生同步时钟信号SCK,预先存在两个移位寄存器中的散袜数据在 SCK 的驱动下进行循环移位操作,完成主-从机之间的数据交换,传输的数据为 8 位,按位传输。
  SPI 通过一根时钟引线 SCK 将主机和从机同步,主机的数据由 MOSI 进入从机,而同时从机的数据由MISO 进入主机。因此,它的串行数据交换不需要增加起始位、停止位等用于同步的格式位,直接将要传送的数据写入到主机的 SPI 发送数据寄存器,这个写入过程自动启动主机的发送过程。对于从机,同样在SCK 的节拍下将出现在引脚 MOSI 上的数据逐位移到从机的移位寄存器,当接收完一个完整的数据块后,设置中断标志,通知从机这个数据块已接收完毕,同时将移位寄存器接收到的内容复制到从机的SPI接收数据寄存器。可以看出,用户编程只需在发送数据时写数据到SPI发送数据寄存器,在接收数据时读SPI接收数据寄存器,其余的移位、同步、置位收发标志等工作都由内置的 SPI 模块自动完成。
  3 多机扩展和通信的实现原理
  以一主两从的系统结构、主从都以 Atmega128 单片机为例,介绍多机扩展和通信方案。系统框图如图2 所示,主机分别同两个从机的 SPI 接口相连,另外主从机间还增加了地址分配使能线 AD。在理论上这种扩展方法可以实现无数个从机的扩展和通信。
  图2 系统框图
  3.1 地址分配
  在多机通信系统中,主机通过从机地址对各个从机进行访问,因此,要求每个从机都有唯一的地址。为确保地址的唯一性和可靠性,就必须对从机进行统一编址。
  常用编址方式是将拨码开关连接在从机的 I/O上,用人工拨码来实现编址。拨码开关打开和关闭分别代表着 0 和 1,这也就代表着一定的数据,这个数据就是该从机的地址。这种硬编址方式简单且容易操作,但是占用从机的 I/O 资源。当从机数量增加时,用于拨码开关的 I/O 口也要相应地增加,而且编址需要人工操作来实现,在实际应用中很不方便。
  本文设计了一种软件编址方式,采用主机自动给从机分配地址的方法。在硬件上,只需在 SPI 通信接口的基础上增加一根地址分配使能线就能实现,如图2 所示。其实现原理是:主机通过AD线向从机1发出处理地址分配使能信号,与此同时,从机 1 通过 AD 线禁止从机 2 地址分配使能,保证在地址分配期间某一时刻只有一个从机进行地址信息处理。主机通过 SPI 接口向各从机发出地址分配信息,从机都接收到主机传来的地址信息,但此时只有从机 1 的地址分配是使能的,所以只有从机1 对地址分配信息进行处理,通过以下时序对从机 1 进行地址分配:
  ① 主机向从机发送地址分配起始标识符‘(’,告诉从机此时进行地址分配操作,从机 1 向主机反馈确认信息;
  ② 主机向从机发送地址,从机 1 进行地址存储并向主机反馈确认信息;
  ③ 主机向从机发送地址分配结束标识符‘)’,告诉从机已完成地址分配。
  主机成功对从机 1 进行地址分配后,主机关闭从机 1 的地址分配使能,从机 1 开启从机 2 的地址分配使能,同理,依照以上时序,主机完成对所有从机的地址分配。
  3.2 数据查询
  主机对所有的从机进行了统一编址后,每个从机都拥有了唯一的地址,这样主机和从机之间就可以进行数据查询和发送操作了。数据查询操作时,首先主机向所有从机发出其要查询从机的地址,所有从机接到主机发来的地址后和自己的地址信息进行比较,地址匹配的从机就响应主机并将数据传给主机,这样就完成了主机对一个从机的数据查询。数据查询操作的时序为:
  ① 主机向从机发送数据查询起始标识符‘[’,从机以此识别为数据查询操作;
  ② 主机向从机发送数据查询的地址值,从机接收地址信息并和自己的地址比较,相同者才进行下面的操作,不同者就不做任何操作;
  ③ 对应地址的从机向主机发回数据,主机进行数据接收;
  ④ 从机向主机发送数据结束标识符‘]’,告诉主机数据传送结束。
  依照时序,主机就可以对全部从机或者某个从机进行数据查询。
  3.3 数据发送
  数据发送操作时,首先主机向所有需要向其发送数据的从机发出地址信息,所有从机接到主机发来的地址后和自己的地址信息进行比较,地址匹配的从机就响应主机并做好接受数据的准备,这样就完成了主机向一个从机发送数据的过程。数发送的时序为:
  ① 主机向从机发送数据及起始标识符‘’,告诉从机数据传送结束。
  依照时序,主机就可以根据需要向全部或者某个从机进行数据发送。
  4 结束语
  本文介绍了一种多机扩展和通信的实现方法,该方法在标准 SPI 接口的基础上加上一根普通 I/O 线并采用软件编址的方式来实现了对从机的地址分配,与硬件编址方式比较更节省 I/O 资源且简单并容易实现,基于 SPI 接口,数据查询发送的通信速率更快,本文所提出的多机扩展和通信方法简单可行、安全可靠,值得推广。
  参考文献:
  [1] 胡汉才. 单片机原理及其接口技术[M].北京:清华大学出版社,2004.
  [2] 赵凯,黄珊. TLl6C550在TMS320VC5402与PC机串行通信中的应用[J].国外电子元器,2007,(9):17-20.
  [3] 徐明,堵国梁. 双向透明串口扩展技术在嵌入式系统中的实现[J].信息化纵横,2009,(14):31-34.
  [4] 马忠梅.单片机的C语言应用程序设计[M]. 北京:北京航天航空大学出版社,2007.

SP

SPI是串行外设接口(Serial Peripheral Interface)的缩写。SPI,是一360问答种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,如今越来越多的芯片集成了这种通信协议,比如AT91RM9200。 SP策略文群车下频兰范I协议概括 SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是SDI(数据输入)、SDO(数据输出)、SCLK(时钟)轻界居语了无烟医从护也、CS(片选)。 (1)SDI – SerialData In,串行数据输入; (2)SDO – SerialDataOut,串行数据输出; (3)SCLK – Serial Clock,时钟信号,由主设体扬帮注们读格渐德备产生; (4)CS – Chip Select,从设备使能信号,由主设备控制家占极自执视氢械孙脱老。 其中,CS是从芯片是否被主芯片选中的控制信号,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),主芯片对此从芯片的操作才有效。这就使在油初稳势请护光同一条总线上连接多个SPI设备成为可能。 接下来就负责通讯的3根线了。通讯向巴组场是通过数据交换完成的,这里先要知道SPI是串行通讯协议,也就是说数据是一位一位的传输的。这就是SCLK时钟线存在的原因,由SCLK提供时钟脉冲,SDI,SDO则基于此脉冲完成数据传输。数据输出通过 SDO线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升危化让形于等台还几吃沿被读取。完成一位数据传输,输入也使用同样原理。因此,至少需之样要8次时钟信号的改变(上沿和下沿为一次),才能完成8位数据的传输。 SCLK信号裂刑额艺先争双配粒接统线只由主设备控制,从设备不能控地书别贵坐根拿增化调威制信号线。同样,在一个基于SPI的设备中,至少有一个主控设备。这样传输的特点:这样的传输方式有一个优点,与普通的串行通讯不同,普通的串行通讯一次连续传送至少8位数名政反杨味老居终失据,而SPI允许数武笔队黄深棉军据一位一位的传送,甚至允许暂停,因为SCLK时钟线由主控设备控制,当没有时钟跳变时,从设备不采集或传送数据第主游汉项种难系。也就是说,主设备通急据花最故过对SCLK时钟线的迫侵空为散年模式控制可以完成对通讯的控制。SPI还是一个数据交换协议:因为SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。不同的SPI设备的实现方式不尽相同,主要是数据改变和采集的时间不同,在时钟信号上沿或下沿采集有不同定义,具体请参考相关器件的文档。 最后,SP检许志固非松质不I接口的一个缺点:没有指定的流控制,没有应答机制确认是否接收到数袁跳汽分也积司居节命据。 SPI的片选可以扩充选择16个外设,这时PCS输出=NPCS,说NPCS0~3接4-16译码器,这个译码器是需要外接4-16译码器,译码器的输入为NPCS0~3,输出用于16个外设的选择。 SPI接口SPI(Serial Peripheral Interface--串行外设接口)总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。SPI总线可直接与各个厂家生产的多种标了严封蒸经然粮备准外围器件相连,包括FLASHRAM、网络控制器、LCD显示驱动器、A/D转换器和MCU等。该接口一般使用4条线:串行时钟线(SCLK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择线NSS。 SPI接口的全称是"Serial Peripheral Interface",意为串行外围接口,是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在EEPROM、FLASH、实时时钟、AD转换器,还和数字信号处理器和数字信号解码器之间。 SPI接口是在CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,低位在后,为全双工通信,数据传输速度总体来说比I2C总线要快,速度可达到几Mbps。 特点:信号线少,协议简单,相对数据速率高。 (1)MOSI – 主器件数据输出,从器件数据输入 (2)MISO – 主器件数据输入,从器件数据输出 (3)SCLK –时钟信号,由主器件产生,最大为fPCLK/2,从模式频率最大为fCPU/2 (4)NSS – 从器件使能信号,由主器件控制,有的IC会标注为CS(Chip select) 在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。在多个从器件的系统中,每个从器件需要独立的使能信号,硬件上比I2C系统要稍微复杂一些。 SPI接口在内部硬件实际上是两个简单的移位寄存器,传输的数据为8位,在主器件产生的从器件使能信号和移位脉冲下,按位传输,高位在前,低位在后。如下图所示,在SCLK的上升沿上数据改变,同时一位数据被存入移位寄存器。

如何用SPI实现两个PIC之间的通讯

SPI做板内通信的好处 1.SPI占用IO比并口少 2.SPI速度够快 3.PIC带SPI接口的芯片够多^_^

文章推荐

相关推荐