通讯协议 SPI通信

SPI通信

1.简要分析

数据传输有串行传送和并行传送两种方式。

并行传送已其高速度曾占领数据传送领域很长一段时间,其中并行传送的集成电路,外围设备从CPU,RAM/ROM到打印机。

串行通信端口,即COM1,COM2,一般接鼠标,外置modem或其他串行设备,它在一个方向上只能传送一路信号,一次只能传送一个二进制位,传送一个字节信息时,只能一位一位地依次传送。
在这里插入图片描述

并行传送:

优点:多位数据一起传送,传送速度快。
缺点:内存有多少位,就要用多少数据线,所以需要大量的数据线,成本高。
在这里插入图片描述

串行传送:

优点:使用数据线少,在远距离通信中可以节约通信成本。
缺点:因为每次只能传送一位数据,传送速度低。
其中串行传送还分单工通信,半双工通信以及全双工通信,还可分为异步通信与同步通信等等。

2.详细分析

从原理上讲:

串行传送是按位传送,只利用一根数据线进行传送,例如:要传送一个字节(8位)数据,是按照该字节中从最高位逐位传送,直至最低位。

而并行传送是一次将所有一字节中8位信号一并传送出去。自然最少需要8根信号线。如果按每次传送的数据流量来看,并行传送远快于串口,在电脑发展初期,并行数据传送速率还是很高的。
并行传送缺点:

(1) 干扰问题

其根本原因是由于传送速率太快,一般达到百兆以上,信号线上传递的频率将超过100MHz。

想想看,调频收音机频率也不过是88〜108MHz,也就是说,若用并行传送的话,是8根天线放在一起来传送信号,易发生干扰。
但如果加强屏蔽,减少信号线间的耦合电容,是可以继续增大传送速度的,不过这将变的不现实,因为这将必然导致信号线耗用更多金属,截面积更大。

(2) 同步问题

并行传送提升困难的最主要原因是同步问题。并行传送时,发送器是同时将8位信号电平加在信号线上,电信号虽然是以光速传送,但仍有延迟,因此,8位信号不是严格同时到达接收端,速率小时,由于每一字节在信号线上的持续时间较长,这种到达时间上的不同步并不严重,随着传送速率的增加,与8位信号到达的时间差异相比,每一字节的持续时间显得越来越短,最终导致前一字节的某几位与后一字节的几位同时到达接受端,这就造成传送失败,而随着信号线的加长,这种现象还会越发严重,直至无法使用,这就是并行传送的致命缺点。

串行传送由于只有一位信号在信号线上,没有位同步问题,因此传送频率可以继续提高,当前传送速率已经达到1Gb/S(1000m)以上,而且还在提高,而并行传送在100Mb/S左右就停滞不前了,可以预见,串行传送将会比并行传送更快。

3.扩展资料

单工数据传送只支持数据在一个方向上传送,就是指A只能发信号,而B只能接收信号,通信是单向的,就像灯塔之于航船,灯塔发出光信号而航船只能接收信号以确保自己行驶在正确的航线上。
在这里插入图片描述
半双工数据传送允许数据在两个方向上传送,但是在某一时刻,只允许数据在一个方向上传送,实际上是一种可以切换方向的单工通信,在同一时间只可以有一方接收或发送信息,可以实现双向通信,就是指A能发信号给B,B也能发信号给A,但这两个过程不能同时进行。最典型的例子像影视作品中看到的对讲机一样:

007:呼叫总部,请求支援,OVER

总部:收到,增援人员将在5分钟内赶到,OVER

007:要5分钟这么久?要快呀!OVER

总部:……

GAME OVER

在这里,每方说完一句话后都要加一个OVER,然后切换到接收状态,同时也告知对方:你可以发言了。如果双方同时处于接收状态,或同时处于发送状态,便不能正常通信了。
在这里插入图片描述
全双工数据传送允许数据同时在两个方向上传输,因此全双工传送是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力,在同一时间可以同时接收和发送信息,实现双向通信,就是指在A给B发信号的同时,B也可以给A发信号。典型的例子就是打电话。

A:我跟你说呀……

B:你先听我说,情况是这样的……

A和B在说的同时也能听到对方说的内容,这就是全双工。
在这里插入图片描述
SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种串行,全双工的三线同步总线,SPI接口比UART相比,多了一根时钟线。

SPI接口总线使用四条线:
串行时钟线-------------------------SCK;
主机输入/从机输出数据线------------MISO;
主机输出/从机输入数据线------------MOSI;
低电平有效的从机选择线-------------SSN;

在SPI总线上,某一时刻可以出现多个从机,但只能存在一个主机,主机通过片选线来确定要通信的从机,这就要求从机的MISO口具有三态特性,使得该线在器件未被选通时表现为高阻态。

主机和从机模式区别在于:
主模式就是SPI主机,简单说就是提供SCK的那方。
从模式就是被动接受SCK的那方。
在这里插入图片描述

2.SPI通信原理

SPI以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少四根线(事实上在单向传输时,3根也可以)。

其中SSN是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时(高电平或低电平),从机芯片才有效,这就允许在同一总线上连接多个SPI设备成为可能。

接下来就是负责通讯的三根线,通讯是通过数据交换完成的,首先SPI是串行通讯协议,也就是说数据是一位一位的传输的。

这就是SCK时钟线存在的原因,由SCK提供时钟脉冲,SDI,SDO(SDI:数据输入,SDO:数据输出)则基于此脉冲完成数据传输。数据输出通过SDO线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取,完成一位数据位传输,输入亦是如此,这样在至少8次时钟信号的改变。(上升沿和下降沿为一次,就可以完成8位数据传输)

要注意的是SCK信号线只由主设备控制,从设备不能控制信号线,同样在一个基于SPI的设备中,至少有一个主控设备。这种传输方式有一个优点,与普通的串行通讯不通,普通的串行通讯方式一次连续传送至少8位数据,而SPI允许数据一位一位的传送,甚至允许暂停,也就是说,主设备通过对SCK时钟线的控制可以完成对通讯的控制。

SPI也是一个数据交换协议:因为SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。
在点与点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,这也是它的缺点,没有指定的流控制,没有应答机制确认是否接收到数据。

SPI传输模式

SPI传输模式有四种,是由时钟极性(CPOL)和时钟相位(CPHA)来决定的。

首先对于一个时钟周期而言,有两个edge(边沿,即时钟电平变化的时刻,有上升沿(rising edge)或下降沿(falling edge)),

(1) leading edge = 前一个边沿 = 第一个边沿,对于开始电平是“1”,那么就是“1”变成“0”的时候。

(2) trailing edge = 后一个边沿 = 第二个边沿,对于开始电平是“0”,那么就是“0”变成“1”的时候。

因此SPI的CPOL表示的是SCLK空闲的时候,其电平的值是低电平“0”还是高电平“1”。CPHA表示数据采样,数据有效的时刻,相位对应着数据采样是在第几个边沿,“0”对应着第一个边沿,“1”对应着第二个边沿。

因此CPOL与CPHA对应着四种组合:
在这里插入图片描述

CPHA = 0 ,表示第一个边沿采样,
对于CPOL = 0,idle 的时候是低电平,第一个边沿是从低到高,所以是上升沿。
对于CPOL = 1,idle 的时候是高电平,第一个边沿是从高到低,所以是下降沿。

CPHA = 1,表示第二个边沿采样,
对于 CPOL =0,idle 的时候是低电平,第二个边沿是从高到低,所以是下降沿。
对于CPOL = 1,idle的时候是高电平,第二个边沿是从低到高,所以是上升沿。
在这里插入图片描述

3.SPI数据交换

SPI协议是一个环形总线结构, 设备间的数据传输之所以又被称为数据交换,是因为SPI协议规定一个SPI设备不能再数据通信过程中仅仅只充当一个“发送者”或“接收者”,在时钟脉冲SCK周期下,SPI设备都会发送并接受一个bit大小的数据,相当于该设备有一个bit大小的数据被交换了。

假设主机的8位寄存器SPIDATA1内数据为10101010,从机的8位寄存器SPIDATA2内数据为01010101,在上升沿的时候发送数据,在下降沿的时候接收数据,最高位的数据先发送。

主机和从机之间为全双工通信,也就是说两个SPI接口同时发送和接收数据。
在这里插入图片描述

当第一个上升沿来时,SPIDATA1将最高位1移除,并将所有数据左移一位,这时MOSI线为高电平。SPIDATA2将最高位0移除,并将所有数据左移一位,这时MISO线为低电平。

当下降沿到来时,SPIDATA1将锁存在MISO线上的电平移入最低位,同样SPIDATA2将锁存在MOSI线上的电平移入最高位。

经过8个脉冲后,两个一位寄存器就实现了数据交换,也就完成了一个SPI时序。
————————————————

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章