通信协议(二)——SPI协议

      最后更新:2022-06-21 23:47:32 手机定位技术交流文章

      1、基础知识

      1.1 概念

      SPI(Serial Peripheral Interface,串行外接设备接口),它是摩托罗拉公司提出的同步串行接口技术,它是高速、全双重、同步通信巴士。只有四个管脚在芯片中用于控制和传输数据,它广泛应用于EEPROM、Flash、RTC(实时钟)、ADC(数字模式转换器)、DSP(数字信号处理器)和数字信号解码器。SPI通信的速度可以轻易达到数万亿 bps,所以你可以使用SPI总线传输一些不压缩的音频和压缩视频。

      特点:
      SPI设备之间的通信必须由主设备控制,主设备可以通过选择多个设备来控制,该设备不能生成或控制时钟,只有主设备才能提供。

      SPI用于同步传输数据。

      SPI设备之间的数据传输也称为数据交换,无论您读数据还是写数据,您需要从提供数据的设备发送数据到时钟上,才能正常进行,有些设备可能需要在读取数据时先写数据,在写入时,必须记住从设备响应中读取数据,相应的数据只能在之后读取。

      优点:
      支持全双重操作, 简单操作, 数据传输速度高.
      缺点:
      在主机上需要更多的端口,只支持一个主机,并且没有响应机制来验证数据是否收到,这与IIC不利相比是一个重大的缺点。

      1.2SPI物理层

      Master-Slave是支持单个Master MultiSlave的控制模式。

      SPI指定两个SPI设备之间的通信必须由主设备从奴隶设备控制。也就是说,如果FPGA是主机,FPGA是否向芯片发送数据或从芯片接收数据,编写Verilog逻辑时间卡选择信号CS和串行时钟信号SCK必须由FPGA生成。同时, 一个大师可以设置多个芯片选择来控制多个奴隶.SPI协议还规定Slave设备的时钟通过SCK管向Slave提供,奴隶本身无法产生或控制钟,没有时间, 奴隶不能正常工作.

      注:一主一从

      SCK(串行时钟):SCK是一个串行时钟线,该功能是将时钟信号从主人发送到奴隶,控制数据交换的时间和速度,它由通讯主机产生,决定了通讯的速率,不同设备所支持的最高时钟频率不同,当两个设备之间通信时,通信速度仅限于低速设备。

      MOSI(Master Out Slave in):又称SPI Master的Tx-channel。该功能是从SPI主机向SPI发送数据,这个信号线输出了主机的数据,从机器读取由主机发送的数据,从这个信号线,也就是说,这个线上的数据的方向是从主机到主机。

      MISO(Master In Slave Out):亦稱為SPIMaster上的Rx-通道。该功能是SPI主机接收到SPI发送到机器的数据,主机从这个信号线读取数据,该机的数据由该信号线传送到主机,也就是说,这个线上的数据的方向是从机器到主机。

      CS/SS(Chip Select/Slave Select):从设备中选择信号线,常称为片选信号线,也被称为NSS,SS。在SPI协议中没有设备地址,它使用Cs信号线来找到地址,当主机从设备中选择,从设备设置c信号线到低级,该从设备即被选中,即片选有效,然后,主机开始与选择的设备进行SPI通信。因此SPI通信从Cs线的低电压开始,Cs线作为终止信号绘制高.

      注:一主多从

      SPI协议使用三个总线和N芯片选择,三个总线用于SCLK、MOSI和MISO,一个总线选择用于CS,其中三个总线通常由多个服务器使用,一个为每个服务器。

      1.3SPI协议层

      SPI总线与时钟信号同时传输数据,因此,SPI协议是一个同步传输协议。主机根据交换的数据生成相应的时钟脉冲,组成时钟信号,当数据交换时和数据储存时,时钟信号由两个SPI设备的时钟极度(CPOL)和时钟相(CPHA)控制。确保数据在两个设备之间同时传输。

      SPI总线传输一个共享4模式,四个模型基于时钟偏振(CPOL,时钟极度)和时钟阶段(CPHA,时钟阶段)定义,CPOL参数指定SCK时钟信号的静态电位。CPHA 指定 数据 要么 在 样本 的 SCK 时钟 上 上升, 要么 在 样本 的 时钟 上 下降 。

      clock polarity CPOL:表示SPI通信设备处于闲置状态,SCK信号线的电平信号(即在SPI通信开始之前,CS线处于高压正常SCLK状态)。CPOL=0时,SCK在闲置状态下是低电压水平,CPOL=1 时,则相反。
      时钟阶段CPHA:显示数据采样时间,当CPHA = 0时,MOSI或MISO数据线上的信号将沿SCLK时钟线的“奇数边沿”保存。当CPHA=1时,数据线沿着SCLK的“双边”保存。

      模型0:CPOL=0,CPHA=0.SCK串行时钟线为低压使用,数据在SCK时钟升高时保存,数据在SCK时钟下降时转换
      模型1:CPOL=0,CPHA=1.SCK串行时钟线为低压使用,数据在SCK时钟下降时保存,数据在SCK时钟上升时传输
      模型2:CPOL=1,CPHA=0.SCK串行时钟线为高压时空,数据在SCK时钟下降时保存,数据在SCK时钟上升时传输
      模型3:CPOL=1,CPHA=1.SCK串行时钟线为高压使用,数据在SCK时钟升高时保存,数据在SCK时钟下降时转换

      SPI工作模式 CPOL CPHA SCLK电机在空缺 采样时刻
      0 0 0 低电平 奇数边沿
      1 0 1 低电平 偶数边沿
      2 1 0 高电平 奇数边沿
      3 1 1 高电平 偶数边沿

      SPI通信过程:

      SPI总线协议(英语:SPI bus protocol)是全双重串行通信协议。在数据传输前进行高级工作,低位在后。SPI协议规定,在数据通信过程中,SPI设备不能作为发送器或接收器。如果选择信号CS为0,在每个钟表周期内,SPI设备发送和接收1位数据,它相当于一个数据的交换。数据传输高位在前,下层后(MSB首先)。以下图示了内部结构的SPI数据传输的架构:

      数据传输可以在SPI内核操作的控制登记器设置后开始.数据传输由写入数据到数据登记系统SPDR开始.在数据记录上执行的写字操作实际上是将数据项添加到4个写字队列中。每个写操作是将数据写入一个字符串。当SPI内核启动时,写上缓冲区不是空的,SPI内核是最古老的数据项,将自动发送去写队列。同时接收数据和传输数据;每次发送数据字节,同时, 数据总是在一个字节中得到.如果你想从一个字符中接收数据,需要编写缓冲器到一个字节的冗余数据,这是为了使SPI内核启动数据传输,在发送冗余数据时接收所需的数据,每个完成都会收到一个字节的数据,这个字符串将被移动到读缓冲器。读缓冲器和写缓冲器是相同的,它是一个独立的四个集合。在数据登记处执行读取操作,队列中的数据项将被读取。

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/27964.html

          热门文章

          文章分类