基于STM32的SPI通信和IIC通信协议学习笔记

目录

一、SPI的概念

(1)SPI通常需要以下四个引脚

1、SCLK(SCK)时钟线2、CS(NSS、CE、SSEL)片选线3、MOSIMaster Output Slave Input,主设备数据输出,从设备数据输入。4、MISOMaster Input Slave Output,主设备数据输入,从设备数据输出。

(2)SPI通信的工作原理

(3)SPI通信的工作特点

二、IIC通信的概念

(1)IIC通信的引脚

(2)IIC通信的工作原理

​编辑

三、SPI通信和IIC通信的区别

        SPI协议和I2C协议(即IIC协议)是两个常见的串行通信协议,SPI协议适用于高速传输、实现简单的场景,而I2C协议适用于低速传输、需要多个器件之间进行通信的场景。都被广泛应用于微控制器和其他数字电路之间的数据传输。下面将简单的介绍一下它们的区别。


一、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协议不仅支持多个从设备,还允许主设备和从设备交换角色,增加了系统的灵活性。

参考博文:

STM32速成笔记—SPI通信_stm32 spi通信-优快云博客

通信协议——IIC协议_iic通信协议-优快云博客

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值