IIC和SPI简介

 一、IIC介绍

              IIC 即Inter-Integrated Circuit(集成电路总线),这种总线类型是由飞利浦半导体公司在八十年代初设计出来的一种简单、双向、二线制、同步串行总线,主要是用来连接整体电路(ICS) ,IIC是一种多向控制总线,也就是说多个芯片可以连接到同一总线结构下,同时每个芯片都可以作为实时数据传输的控制源。这种方式简化了信号传输总线接口。

              I2C串行总线一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。所有接到I2C总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。

              每个连接到总线的设备都有一个独立的地址,主机正是利用该地址对设备进行访问

 

I2C开始和结束信号

  开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。

  结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。

          起始信号后,总线上所有的从机开始等待主机紧接下来的从机地址addr广播。因为总线上每个设备的地址都是唯一的,当主机广播的地址与某个设备地址相同时,该设备就被选中,并向主机发出应答(ACK)或者非应答(NACK),主机只有在接收到应答信号后继续发送/接收数据,没选中的设备将会忽略之后的数据信号。根据I2C协议,从机地址可以是7位或者10位。

         I2C通讯采用的是读写复合的格式。传输过程中主机需要发出2次起始信号:第一次传输主机通过从机地址找到从机设备,发送一段数据,这个数据是从设备内部寄存器或者存储器地址;第二次传输是对该地址进行读/写。主机要读取从机数据时,主机会释放对SDA总线的控制,由从机控制SDA总线,主机负责接收信号;主机要向从机设备写数据时,SDA由主机控制,从机负责接收信号。

 

写操作:

         主机发送Start起始信号后发送I2C 从机地址addr和读操作1(1bit)或写操作0(1bit),如果是写操作0,主机等待从机发送ACK,收到ACK后主机发送从机Regaddr寄存器地址,接着继续等待ACK,等到ACK后主机发送Data,即要写入寄存器中的数据,从机发送ACK,主机发送Data重复多次可顺序写入多个寄存器直至主机产生STOP停止信号

 

读操作:

         如果是需要接受从机数据,主机通常需要发起2次起始,Start起始信号后,主机发送从机地址addr以及写操作0,主机等待从机发送ACK,收到ACK后主机发送从机Regaddr寄存器地址,接着继续等待ACK,等到ACK后,需要再发起一次起始信号,主机发送从机地址addr和读操作1,并等待ACK,从机发送ACK后接着发送data即寄存器里的值,主机发送ACK表示收到,从机继续发送data即顺序读下一个寄存器,当主机希望停止接收数据时就向返回一个非应答信号(NACK),数据传输将结束。

SDA线上的数据在时钟“高”期间必须是稳定的,只有当SCL线上的时钟信号为低时,数据线上的“高”或“低”状态才可以改变。

参考:https://blog.csdn.net/qq_29344757/article/details/76520378

二、SPI介绍

SPI是串行外设接口(Serial Peripheral Interface)的缩写,顾名思义就是串行外围设备接口。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,如今越来越多的芯片集成了这种通信协议。SPI数据传输速度总体来说比I2C总线要快,速度可达到几Mbps。

 

SPI总线只需四条线(如图所示)就可以完成MCU与各种外围器件的通讯:

(1)MOSI – 主(Master)器件数据输出,从(Slave)器件数据输入

(2)MISO – 主(Master)器件数据输入,从(Slave)器件数据输出

(3)SCLK –时钟信号,由主(Master)器件产生

(4)/SS – 从器件使能信号,由主器件控制,有的IC会标注为CS(Chip select)

          在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。在多个从器件的系统中,每个从器件需要独立的使能信号,硬件上比I2C系统要稍微复杂一些。

          当有多个从设备的时候,因为每个从设备上都有一个片选引脚接入到主设备机中,当我们的主设备和某个从设备通信时将需要将从设备对应的片选引脚电平拉低(低电平有效)。接着开始发送工作脉冲到时钟线SCLK上提供时钟脉冲,MISO、MOSI则基于此脉冲完成数据传输,在相应的脉冲时间上,[主设备]把信号发到MOSI实现“写”,同时可对MISO采样而实现“读”。

 

SPI传输模式:

          通过设置控制寄存器SPICR1中的CPOL和CPHA位,将SPI可以分成四种传输模式。

SPI通讯模式

模式

CPOL(时钟极性)

CPHA(时钟相位)

 

MODE0

0

0

MODE1

0

1

MODE2

1

0

MODE3

1

1

CPOL=0,表示当SCLK=0时处于空闲态,SCLK=1有效。

CPOL=1,表示当SCLK=1时处于空闲态,SCLK=0有效。

CPHA=0,表示数据采样是在第一个跳变沿,数据发送在第2个边沿。

CPHA=1,表示数据采样是在第二个跳变沿,数据发送在第1个边沿。

SPI工作原理 

 

 

           SPI是一个环形总线结构,SPI接口在内部硬件实际上是两个简单的移位寄存器,传输的数据为8位,根据上面的传输模式发出一位数据就会接收到一位数据,移位寄存器在旧的数据没有发完之前是不会接受新的数据的。8个时钟脉冲以后,两个寄存器的内容互相交换一次。这样就完成里一个SPI时序。

           一个从机Slave设备要想能够接收到主机Master 发过来的控制信号, 必须在此之前能够被 Master设备进行访问。 所以, Master设备必须首先通过 SS/CS pin对Slave 设备进行片选, 把想要访问的从机 Slave 设备选上。在数据传输的过程中,  传输一位数据就需要相对应的采样一位数据。

 

SPI的缺点:没有指定的流控制,没有应答机制确认是否接收到数据。

参考:https://blog.csdn.net/qq_38410730/article/details/80318821

 

  • 25
    点赞
  • 147
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: .96 OLED的IICSPI的区别在于通信协议不同。IIC是一种串行通信协议,需要两根线(SCL和SDA)进行数据传输,而SPI是一种高速串行通信协议,需要四根线(SCK、MOSI、MISO和SS)进行数据传输。SPI通信速度更快,但需要更多的引脚,而IIC则需要更少的引脚,但通信速度较慢。在选择使用哪种通信协议时,需要根据具体的应用场景和需求来决定。 ### 回答2: 0.96 OLED是一种小巧的显示屏,常见于Arduino、Raspberry Pi等开源单板计算机、嵌入式系统等场景。在实际应用中,OLED显示屏可以采用IICSPI两种不同的协议进行驱动。 IICSPI都是串行通信协议,实现了设备之间数据传输的目的。但是,它们在传输方式、速度、协议规范等方面存在一些差异。 1. 传输方式: IIC是一种基于总线的协议,适用于多个设备之间的数据传输。单个主设备通过发送指令,控制多个从设备进行数据交换。IIC总线上的设备通过两根线(SDA和SCL)进行数据传输。 SPI是一种点对点的通信协议,一对主从设备之间需要四根线(SCK、MOSI、MISO、SS)进行通信。其中,主设备通过控制CS(chip select)引脚和从设备建立连接,然后通过其他引脚进行数据传输。 2. 速度: IIC的速度一般比SPI慢,在100kHz到400kHz之间,但可以通过修改控制寄存器的值来调整时钟速度。 SPI的速度一般较快,可以达到MHz级别。SPI的速度受到主从设备的处理能力、时钟速度等多个因素的制约。 3. 协议规范: IIC的协议规范较为简洁,通常分为读和写两种操作,可以通过发送地址和数据实现设备之间的数据交换。 SPI的协议规范较为灵活,可以通过发送指令、数据、状态等多种信息实现设备间交互,灵活性较高。 从以上三个方面来看,IICSPI在协议特性上存在较大的差异。在实际应用中,需要结合系统环境和硬件条件,选择合适的协议模式。如果需要在多个设备之间进行数据传输,可以选择IIC总线模式;如果需要较快的数据传输速度,可以选择SPI模式。 ### 回答3: 0.96寸OLED屏幕是一种非常常见的显示屏设备,在嵌入式系统和一些小型设备中被广泛应用。IICSPI是两种常用于控制OLED屏幕的通讯方式。 IIC是一种串行通信协议,也称为I2C。它采用双线传输模式,包括一个数据线和一个时钟线。在IIC通信中,Master设备控制通信的时序、速率与数据传递逻辑,Scl(时钟线)控制信号的传输速率,Sda(数据线)是数据信号传输的线路。IIC协议使用地址来寻址Slave设备,Master向Slave传送数据时一般会先发送一个地址,然后是读或写命令或数据。IIC协议虽然速率较SPI较慢,但是控制芯片的引脚数目比较少,非常适合资源受限的小型设备。 SPI是一种串行总线协议,它由4根线组成,包括一个时钟线、一个双向数据线MOSI(Master Out Slave In)和MISO(Master In Slave Out),还有一个片选线CS(Chip Select)。SPI采用全双工通讯模式,可以进行高速的数据传输,因此SPI通信速度比IIC快,且传输的数据量更大,在数据量大的情况下更为适用。 综上所述,IICSPI通信方式各有优缺点。IIC通信方式适用于需要控制的引脚数比较少的小型设备,SPI通信方式适用于需要高速数据传输的大型设备。具体选择哪一种通信方式,应该根据具体的应用场景来进行选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值