IIC协议

IIC协议

I²C(Inter-Integrated Circuit)字面上的意思是集成电路之间,它其实是I²C Bus简称,所以中文应该叫集成电路总线
I2C 总线是一种串行数据总线,只有二根信号线,一根是双向的数据线SDA,另一根是时钟线SCL,两条线可以挂多个设备。 通常我们为了方便把IIC设备分为主设备和从设备,基本上谁控制时钟线(即控制SCL的电平高低变换)谁就是主设备。iic总线可以挂很多设备,多主多从:
IIC协议_第1张图片
多主机会产生总线裁决问题。当多个主机同时想占用总线时,企图启动总线传输数据,就叫做总线竞争。I2C通过总线仲裁,以决定哪台主机控制总线。
主设备有编程代码控制,从设备由硬件本身控制。
iic总线通过上拉电阻接正电源。连接到总线上的任意器件输出低电平,都会使总线信号变为低。即各器件的SDA及SCL都是线与关系。
总线空闲状态 : SDA :高电平SCL :高电平
起始位:SCL为高电平期间 SDA出现下降沿(主机发送),总线处于占用状态
终止位: SCL为高电平期间 SDA出现上升沿(主机发送),总线处于空闲状态。
IIC协议_第2张图片
数据传输 : SDA上的数据只能在SCL为低电平期间翻转变化,在SCL为高电平期间必须保持稳定,IIC设备只在SCL为高电平期间采集SDA数据。
IIC协议_第3张图片
应答:
单片机发完8bit数据后就不再驱动总线了(SDA引脚变输入),而SDA和SDL硬件设计时都有上拉电阻,所以这时候SDA变成高电平。那么在第8个数据位,如果外接IIC设备能收到信号的话接着在第9个周期把SDA拉低,那么处理器检测到SDA拉低就能知道外接IIC设备数据已经收到。IIC数据从最高位开始传输(小端传输)。

IIC协议_第4张图片
IIC器件地址: 每一个IIC器件都有一个器件地址,有的器件地址在出厂时地址就设定好了,用户不可以更改,比如OV7670的地址为0x42。有的器件例如EEPROM,前四个地址已经确定为1010,后三个地址是由硬件链接确定的,所以一个IIC总线最多能连8个EEPROM芯片。

在总线的一次数据传输中,可以有一下几种组合方式:(阴影是主机发送,空白是从机发送A/非A表示应答/非应答(高电平))。

  • (1)、主机向从机发送数据,数据传送方向在整个传递过程中不变:
    在这里插入图片描述
  • (2)、主机在第一个字节后,立即从从机读数据(传输方向不变):
    在这里插入图片描述
  • (3)、在传送过程中,当需要改变传递方向时,起始信号和从机地址都被重复一次产生一次,但两次读/写方向位正好相反

spi,iIC,uart,usart区别

SPI 和 I2C(IIC)是同步传输协议,特征是:设备有主机(master)和从机(slave)的区分;主机在通讯时发送时钟信号。

SPI 的信号:
CS: 从机片选信号,表示主机将于该选定的从机通讯。低电平有效。在多从机的系统中,主机控制多条 CS 信号线,每条连接到一个从机。
SCK: 串行时钟线,从主机连接到每一个从机。
MOSI: 主出从入数据线。SPI 的数据线上,数据是单向的。因此需两条信号线。
MISO: 主入从出数据线。
在 SPI 系统中,只允许有一个主机。如果主机在工作时发现任何 CS 线被其他设备拉低,将报告一个系统错误,并退出运行。

I2C 的特点和信号:
I2C 也可以是多从系统,它是通过地址信息来选择从机的。因此,它去了片选信号线。
I2C 允许在同一系统中有多个主机,他通过一套仲裁协议来解决主机的冲突。在一个系统中,允许设备在主机和从机间转换角色。
SCL: 时钟信号线。
SDA: 数据信号线。

I2C 通过复杂的协议减少了连接线,并允许多主多从。但它的代价是低的传输速度。
I2C 定义的传输模式:

  • 标准模式:最高 100kbit/s,双向;
  • 快速模式:最高 400kbit/s,双向,兼容标准模式;
  • 快速模式Plus:最高 1Mbit/s,双向,兼容前两种模式;
  • 超级快速模式:最高 5Mbit/s,单向(主机只发送),不兼容,不支持多主。

在实际使用中,主要是标准模式和快速模式。

UART 是一种异步串行通讯协议,它通过收发双方精准的本地时钟来定时采样或切换信号电平。
UART 的收发双方是一对一的,且无主从之分。任何一方都可以在任何时刻发送数据。
UART 的双方必须采用事先约定的相同“波特率”(定时标准)来通讯。目前也有一些接收方通过对固定信号的检测来确定波特率的技术,但应用不广泛。
UART 的信号:
RXD: 接收信号线
TXD: 发送信号线

通讯的双方是将此二线交叉对接的。

USART 是对 UART 的扩展。它除了支持异步传输之外,也支持同步传输。但目前较少应用。

你可能感兴趣的:(嵌入式)