I2C基础

1 基本介绍

I²C (Inter-Integrated Circuit)。内部集成电路。拥有两根线,一根数据线SDA和一根时钟线SCL。
这两条线都是漏极开路或者集电极开路结构,使用时需要外加上拉电阻,可以挂载多个设备。每个接到I2C总线上的器件都有唯一的地址。其中,主动发起操作的一方为主机,另外一方为从机。I2C规定通信时的时钟,起始信号,停止信号只能由主机产生。
示意图如下
在这里插入图片描述
连接到相同总线上的IC数量只受总线最大电容400pF的限制,最多可挂112个设备,串行的8位双向数据传输位速率在标准模式下可达100Kbit/s,快速模式下可达400Kbit/s,高速模式下可达3.4Mbit/s。I2C是半双工模式。

2 特点

  • 只使用两条信号线,传输距离短
  • 支持多主机多从机
  • 有应答机制
  • 极低的电流消耗.抗高噪声干扰。
  • 速率比SPI慢。
  • IIC 是多主设备的总线

3 硬件连接

EEPROM一般与I2C连接,下面是常用的一种连接方式。
在这里插入图片描述
SCL、SDA的上拉电阻由这两个引脚的灌电流决定,保证其高低电平都满足要求。
犹豫I2C通信速率比较慢,所以在与CPU连接时,可用GPIO模拟,比较灵活。

4 通信

4.1 控制器

STM32的I2C控制器框图如下:
在这里插入图片描述

4.2 协议

I2C协议包括以下状态:

  • 空闲状态:SDA\SCL均为高电平,总线空闲
  • 开始信号:SCL为高电平,SDA的电平由高跳到低表示开始信号。
  • 终止信号:SCL为高电平,SDA的电平由低跳到高表示终止信号。
  • 应答信号:接收器反馈应答信号,应答信号为低电平,则为有效应答位,表示成功接收。
  • 数据有效性
  • 数据传输

IIC协议规定:

  • 每一支IIC设备都有一个唯一的七位设备地址;
  • 数据帧大小为8位的字节;
  • 数据(帧)中的某些数据位用于控制通信的开始、停止、方向(读写)和应答机制。
  • IIC协议标准规定发起通信的设备称为主设备,主设备发起一次通信后,其它设备均为从设备。
  • 总线上有1个主设备和多个从设备,当一个从设备响应后,其他从设备不能进行通信。
    在这里插入图片描述
    当没有数据传输的时候,两根总线都为高电平;数据传输开始时,需要发送一个起始信号;数据传输结束后,需要发送一个终止信号;每8bit数据传输结束,都需要一个ACK。起止信号都由Master发出,而ACK则可能由Master或者SLAVE来发出。

在这里插入图片描述
在这里插入图片描述
ACK和NACK
数据传输时先传MSB(most significant bit)最高有效位。接收者在每个字节后的第9个时钟周期将SDA保持低电平进行确认数据接收成功;而在第9个时钟周期将SDA保持高电平表示数据传输出错,或者主机不再想接收数据。

主机给从机写数据的过程如下:
在这里插入图片描述
主机从从机读数据过程如下:
在这里插入图片描述

5 SPI VS I2C

  • SPI使用线多,硬件资源占的多
  • SPI全双工,所以传的快,通常能达到甚至超过10 Mbps,而I2C最快3.4 Mbps。
  • SPI适合数据流应用,而IIC更适合“字节设备”的多设备应用。
  • 3
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值