目录
一、SPI的概念
SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供了方便。正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议,比如AT91RM9200.
在STM32中IIC是一种通信方式,SPI也是一种通信方式,现在我来讲讲IIC通信和SPI通信的区别和优缺点。
(1)SPI通常需要以下四个引脚
1、SCLK(SCK)
时钟线
2、CS(NSS、CE、SSEL)
片选线
3、MOSI
Master Output Slave Input,主设备数据输出,从设备数据输入。
4、MISO
Master Input Slave Output,主设备数据输入,从设备数据输出。
(2)SPI通信的工作原理
通过了解, SPI是一种同步通信方式,所以它有时钟线,时钟由主设备提供。CS为片选线,片选线用来区分和哪个从机进行交互,通常由主机来控制。通常片选线被拉低,代表该从机被选中。
由以下图可以看出,通过SPI时钟发生器分别输出时钟信号给主机设备和从机设备,数据之间的传输通过移位寄存器实现。
主设备发送数据时,主设备将要发送的数据写入移位寄存器,然后通过MOSI一位一位地发送给从机,数据可以是8位的,也可以是16位的,可以通过软件配置。发送时可以先发送高位,也可以先发送低位,但是需要保证主从机的设置是一致的。从机接收数据时,同时也会将自己地移位寄存器中的内容通过MISO发送给主机。也就是说,主机在给从机发送数据时,同时也会收到从机发送来地数据。
(3)SPI通信的工作特点
由此可知SPI通信的特点如下:
- 同步全双工。
- 支持一主多从。
- 只需要四根线,甚至三根线也可以实现单工通信。
- 数据传输速率快。
二、IIC通信的概念
IIC(Inter-Integrated Circuit)协议是一种同步串行通信接口,它采用半双工工作模式,即在同一时间只能进行单向的数据传输。总线由两条信号线组成:一条是数据线SDA(Serial Data Line),用于传输数据;另一条是时钟线SCL(Serial Clock Line),由主设备提供时钟信号,以确保所有连接到总线的设备同步进行数据交换。
在I2C总线上,每个从设备都有一个唯一的地址,主设备通过发送这个地址来选择与其通信的目标设备。由于支持多主控功能,多个具备主控能力的设备可以在同一总线上竞争控制权,并通过硬件仲裁机制避免冲突。
由于其物理接口简单且占用线路少,I2C被广泛应用于嵌入式系统和电子设备中,方便连接各种低速外设,例如传感器、存储器、时钟芯片等。同时,I2C支持多种速度等级,能满足不同应用环境对数据传输速率的需求。
(1)IIC通信的引脚
IIC总线引脚定义
- SDA (I2C数据引脚)
- CLK (I2C数据引脚)
IIC总线结构示意图
① 由时钟线SCL和数据线SDA组成,并且都接上拉电阻,确保总线空闲状态为高电平
② 总线支持多设备连接,允许多主机存在,每个设备都有一个唯一的地址
③ 连接到总线上的数目受总线的最大电容400pf限制
④ 数据传输速率:标准模式100k bit/s 快速模式400k bit/s 高速模式3.4Mbit/s
(2)IIC通信的工作原理
- 起始信号(S):当SCL为高电平时,SDA从高电平变为低电平
- 停止信号(P):当SCL为高电平时,SDA从低电平变为高电平
- 应答信号:上拉电阻影响下SDA默认为高,而从机拉低SDA就是确认收到数据即ACK,否则NACK
三、SPI通信和IIC通信的区别
SPI协议和I2C协议(即IIC协议)是两个常见的串行通信协议,SPI协议适用于高速传输、实现简单的场景,而I2C协议适用于低速传输、需要多个器件之间进行通信的场景。都被广泛应用于微控制器和其他数字电路之间的数据传输。下面将简单的介绍一下它们的区别。
1. 性能方面:SPI协议通常比I2C协议更快速,因为SPI协议使用全双工通信模式,每个设备都有独立的数据线,可以在同时收发数据,而I2C协议则是半双工通信模式,数据必须通过单根数据线被轮流发送和接收,因此速度会慢一些。
2. 硬件连接方面:SPI协议需要使用4条线:时钟线(CLK)、主从选择线(SS)、主设备输出线(MISO)和主设备输入线(MOSI)。其中,CLK、SS、MOSI是由主设备输出的,MISO是由从设备输出的。而I2C协议只需要使用2条线:时钟线(CLK)和数据线(SDA)。其中,时钟线和数据线都是由主设备输出的。
3. 系统复杂性方面:SPI协议的工作方式更简单,在硬件和软件层面上的开销都比I2C小。但是,由于SPI协议必须配置每个设备的选择线(SS),因此对于多个设备的系统而言,硬件设计和软件编程可能会更加复杂。相比之下,I2C协议使用7位从设备地址,因此可以轻松连接多个从设备,且不需要额外的硬件或软件开销。
4. 稳定性和灵活性方面:I2C协议在电路噪声、干扰和电流峰值方面更加鲁棒,因为它使用了比SPI协议更为复杂的通信协议。此外,I2C协议不仅支持多个从设备,还允许主设备和从设备交换角色,增加了系统的灵活性。
参考博文: