3.串口通信之SPI
—>1.串口通信之UART见这篇<—
—>2.串口通信之IIC见这篇<—
1.SPI特点
SPI(Serial Peripheral Interface)即串行外设接口,有4条总线,分别是SCLK(SPI Clock),MISO(Master Input Slave Output),MOSI(Master Output Slave Input)和CS(Chip Select),SCLK时钟线用于同步时钟信号,与UART用波特率一般是为了解决知道具体所传的数据1的个数问题,MOSI和MISO是主机和从机不同通信方向的数据线,前者主机发送信息到从机,后者从机发送信息到主机,CS是用于片选,一个主机可以与多个从机相连,用于指定跟具体哪个从机通信,与IIC的设备地址功能相同。
SPI总线是一种同步,全双工,高速的串行通信总线,与IIC均采用主从方式工作,由于主机可以有多个从机,而从机一般只能与主机相连,所以主机一般有多根CS片选线,从机只有一根。CS具体是低电平有效还是高电平有效跟所连外设芯片有关。
- 单从机:
- 多从机
2.SPI的通信过程
SPI总线传输数据时先传输高位,数据线高电平表示1,低电平表示0,时钟线为上升沿接收器接收数据,在紧接着下降沿发送器发送数据,一个时钟周期完成一位数据的传输,8个时钟周期完成一个字节数据传输,与IIC不同的是,SPI不需要应答,因为片选信号已经起到了选择和激活从设备的作用,主设备默认片选有效的从设备会在时钟信号的驱动下与主设备进行数据交互,而且SPI 是高速、全双工的通信总线,常用于对传输速度要求较高的场景,如传感器数据采集、存储设备读写等。在这些应用中,数据的实时性和连续性较为关键,应答机制可能会增加传输延迟。
3.SPI的极性和相位
SPI的极性CPOL(Clock Polarity)指SPI时钟线空闲时的电平状态是高电平还是低电平,高电平为1,低电平为0.
SPI的相位CPHA(Clock Phase)是指接收器接收信息是在时钟线为上升沿还是时钟线为下降沿接收信息,若为上升沿则SPHA=1.否则为0.
因此,SPI工作模式有2*2=4种.
4.IIC和SPI的对比
- 通信方式
- IIC:半双工通信,同一时刻只能进行发送或接收数据。
- SPI:全双工通信,允许同时进行数据的发送和接收。
- 数据传输速率
- IIC:数据传输速率相对较低,标准模式下可达100kbps,快速模式下可达400kbps,高速模式下可达3.4Mbps。
- SPI:数据传输速率较高,通常可以达到几Mbps甚至几十Mbps,具体速率取决于设备的性能和时钟频率设置。
- 硬件复杂度
- IIC:硬件电路相对简单,只需要两条线(SDA和SCL),且支持多主机和多从机的连接方式,总线上的设备通过唯一的地址进行识别。
- SPI:硬件电路相对复杂一些,除了时钟线和数据线外,还需要片选线来选择从设备,且每个从设备都需要单独的片选信号,因此在连接多个从设备时,需要更多的引脚资源。
- 通信协议
- IIC:通信协议相对复杂,有严格的起始和停止条件、应答机制等。主设备在发送数据后,需要等待从设备的应答信号来确认数据是否被正确接收,若未收到应答,则认为数据传输失败。
- SPI:通信协议相对简单,没有严格的应答机制。主设备通过片选信号选中从设备后,就可以在时钟信号的驱动下直接进行数据的发送和接收,主设备默认从设备会在时钟的同步下正确接收和发送数据。
- 应用场景
- IIC:适用于连接低速设备,如EEPROM、传感器、实时时钟等,这些设备对数据传输速率要求不高,但需要简单、可靠的通信方式。由于其支持多主机和多从机的连接方式,常用于需要多个设备共享总线的场景。
- SPI:适用于连接高速设备,如闪存芯片、ADC/DAC转换器、显示屏控制器等,这些设备需要快速的数据传输能力。SPI在一些对实时性要求较高的系统中也有广泛应用,如工业控制、汽车电子等领域。
- 抗干扰能力
- IIC:IIC总线采用双向数据线,数据传输时需要进行仲裁和同步,且通常传输速度较慢,在抗干扰方面相对较弱。
- SPI:SPI采用时钟信号同步数据传输,且数据传输速度较快,同时片选信号可以确保每次通信只与特定的从设备进行,减少了其他设备的干扰,因此抗干扰能力相对较强。