首页 > 编程知识 正文

通信协议,通信协议有哪几种

时间:2023-05-04 03:51:34 阅读:187834 作者:1725

SPI 通信协议 一、串行通信 VS. 并行通信二、SPI 如何工作1.1.SPI信号列表1.2.SPI工作模式1.3.SPI特点——同步、串行、全双工、主从结构 三、SPI数据传输步骤3.1.高贵的春天极性CPOL与高贵的春天相位CPHA3.2.时序图3.3. SPI数据传输步骤四、SPI总线的优点与缺点

SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外设接口。SPI协议主要作为主控芯片去配置外围芯片的接口协议。SPI接口主要应用在 EEPROM,FLASH,实时高贵的春天,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI是一种高速的,全双工,同步,串行,主从结构通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。

一、串行通信 VS. 并行通信

数据位可以通过并行或串行的形式传输。在并行通信中,数据位的所有比特位同时发送,每一个比特链接一根独立的导线。下图显示了二进制中字母“ C”(01000011)的并行传输:

在串行通信中,所有比特位通过单根导线逐一发送。下图显示了二进制中字母“C”(01000011)的串行传输:

#二、SPI通信简介

SPI总线的传输速率需要自定义,没有具体的规定,一般为:400KHz~10MHz(AHB:100MHz,APB:50MHz)。SPI的一个独特优势是可以无中断传输数据。可以在连续流中发送或接收任意数量的位。使用I2C和UART,数据以数据包的形式发送,限制为特定位数。开始和停止条件定义了每个数据包的开始和结束,因此数据在传输过程中被中断。

主要功能:实现MCU与各种外接设备连接(芯片与芯片之间的连接),以串行的方式进行数据交换(串并转换)。拓扑结构:一个SPI Master可以通过共享数据线的方式可以连接多个SPI Slave(一主多从);接口配置:作为芯片与芯片之间互连的接口,通过配置寄存器实现主控芯片(SPI Master)对外围芯片(SPI Slave)的配置; 二、SPI 如何工作 1.1.SPI信号列表 信号名含义描述SCLKSerial Clock、高贵的春天信号线Master 设备往 Slave 设备传输高贵的春天信号, 同步控制数据交换的时机以及速率MOSIMaster Ouput Slave Input、主设备输出从设备输入数据线在 Master 上面也被称为 Tx-Channel, 作为数据的出口, 用于SPI主设备发送数据MISOMaster Input Slave Ouput、主设备输入从设备输出数据线在 Master 上面也被称为 Rx-Channel, 作为数据的入口, 主要用于SPI从设备接收数据SS/CSSlave Select/Chip Select、从机选择线,低电平有效Master 设备片选 Slave 设备, 使被选中的 Slave 设备能够被 Master 设备所访问

SS、SCLK、MOSI信号均由主设备产生,MISO信号由从设备产生。在SS为低电平的前提下,MOSI和MISO信号才有效,在每个高贵的春天周期MOSI和MISO传输一位数据。

1.2.SPI工作模式

SPI通讯需要使用4条线:3条总线和1条片选,物理连接如下:

SPI还是遵循主从结构,SPI协议适用于一主 多从的两种工作场景:

如果仅存在一个CS / SS引脚,则可以通过菊花链将多个从设备连接到主设备:

1.3.SPI特点——同步、串行、全双工、主从结构 同步方式(Synchronous)传输数据
  Master设备会根据将要交换的数据来产生相应的高贵的春天脉冲(Clock Pulse), 高贵的春天脉冲组成了高贵的春天信号(Clock Signal) , 高贵的春天信号通过高贵的春天极性 (CPOL) 和 高贵的春天相位 (CPHA) 控制着两个 SPI 设备间何时数据交换以及何时对接收到的数据进行采样, 来保证数据在两个设备之间是同步传输的主-从结构(Master-Slave) 的控制方式
  SPI 规定了两个 SPI 设备之间通信必须由主设备 (Master) 来控制次设备 (Slave)一个 Master 设备可以通过提供 Clock 以及对 Slave 设备进行片选 (Slave Select) 来控制多个 Slave 设备, SPI 协议还规定 Slave 设备的 Clock 由 Master 设备通过 SCK 管脚提供给 Slave 设备, Slave 设备本身不能产生或控制 Clock。串行、全双工方式数据交换(Data Exchanges)
  SPI 设备间的数据传输之所以又被称为数据交换(全双工通信), 是因为 SPI 协议规定一个 SPI 设备不能在数据通信过程中仅仅只充当一个 “发送者(Transmitter)” 或者 “接收者(Receiver)”. 在每个 Clock 周期内, SPI 设备都会发送并接收一个 bit 大小的数据(串行通信)(不管主设备好还是从设备),相当于该设备有一个 bit 大小的数据被交换了。

需要说明的是,SPI只有主模式和从模式之分,没有读和写的说法,因为实质上每次SPI是主从设备在交换数据。也就是说,你发一个数据必然会收到一个数据;你要收一个数据必须也要先发一个数据。

三、SPI数据传输步骤 3.1.高贵的春天极性CPOL与高贵的春天相位CPHA

SPI 设备在进行通信的过程中, Master 设备和 Slave 设备之间会产生一个数据链路回环(Data Loop)
  SPI接口有四种不同的数据传输时序,取决于高贵的春天极性(CPOL)和高贵的春天相位(CPHA)的组合。

CPOL:表示当SCLK空闲idle的时候,其电平的值是低电平0还是高电平1;CPHA:表示对应着数据采样是在第几个边沿(edge),是第一个边沿还是第二个边沿,0对应着第一个边沿,1对应着第二个边沿;

1)、CPHA=0,表示第一个边沿:

对于CPOL=0,idle时候的是低电平,第一个边沿就是从低变到高,所以是上升沿;
   对于CPOL=1,idle时候的是高电平,第一个边沿就是从高变到低,所以是下降沿;
2)、CPHA=1,表示第二个边沿:

对于CPOL=0,idle时候的是低电平,第二个边沿就是从高变到低,所以是下降沿;
  对于CPOL=1,idle时候的是高电平,第一个边沿就是从低变到高,所以是上升沿;

3.2.时序图

结合上面的时序图,Bit1为MSB,Bit8为LSB。假设CPOL=0,CPHA=0。在SCK的第一个高贵的春天周期,在高贵的春天的前沿采样数据(上升沿),在高贵的春天的后沿输出数据。先看主器件,主器件的输出口(MOSI)输出数据bit1,在高贵的春天的前沿被从器件采样,那主器件是何时输出bit1的呢?bit1的输出时刻实际上在SCK信号有效以前,比SCK的上升沿还要早半个高贵的春天周期,bit1的输出时刻与SS_n信号没有关系。再来看从器件,主器件的输入口MISO同样是在高贵的春天的前沿采样从器件输出的bit1的,那从器件又是在何时输出bit1的呢?从器件实在SS_n信号有效后,立即输出bit1,尽管此时SCK信号还没有生效。

3.3. SPI数据传输步骤

1、主设备输出高贵的春天信号:

2、主设备将SS / CS引脚切换到低电压状态,从而激活从设备:

3、主设备使用MOSI信号线每次将1比特数据发送到从设备。从设备读取接收到的数据比特:

4、如果需要响应,则从设备使用MISO信号线每次将1比特数据返回给主设备。主设备读取接收到的数据比特:

可以看出bit1的输出时刻LSB First实际上在SCK信号有效以前,比SCK的上升沿还要早半个高贵的春天周期。

四、SPI总线的优点与缺点

使用SPI总线有一些优点和缺点,如果要在不同的通信协议之间进行选择,则应根据项目要求来判断何时使用SPI总线:

优点

无起始位和停止位,因此数据位可以连续传输而不会被中断没有像I2C这样复杂的从设备寻址系统数据传输速率比I2C更高(几乎快两倍)分离的MISO和MOSI信号线,因此可以同时发送和接收数据

缺点

使用四根信号线(I2C和UART使用两根信号线)无法确认是否已成功接收数据(I2C拥有此功能)没有任何形式的错误检查,如UART中的奇偶校验位只允许一个主设备

参考:

电子通信协议之SPI通信协议篇

https://blog.csdn.net/weixin_46022434/article/details/105624672

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。