ARM之I2C总线协议介绍

I2C总线协议

概述:I2C(Inter-Integrated Circuit)总线是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备,是微电子通信控制领域挂规范采用的一种总线标准。是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。Exynos4412芯片包含8个通用I2C接口控制器。
I2C主从机设备连接
ARM之I2C总线协议介绍_第1张图片

I2C总线物理连接ARM之I2C总线协议介绍_第2张图片
特点

  • 半双工。
  • 只要求两条总线线路:一条串行数据线SDA(Serial Data Address),一条串行时钟线(Serial Clock Address)。
  • 每个连接到总线的器件都可以通过唯一的地址。
  • 真正的多主机总线,支持冲突检测和仲裁,防止数据破坏。
  • 串行8位双向数据传输位。
  • 速率在标准模式下可达100kbit/s、快速模式下可达400kbit/s、高速模式下可达3.4Mbit/s。
  • 片上的滤波器可以滤去总线数据线上的毛刺波保证数据完整。
  • 连接到相同总线的IC数量只受到总线的最大电容400pF限制。

I2C总线内容

I2C引脚

  • SDA(I2C数据引脚);
  • CLK(I2C时钟引脚);
    ARM之I2C总线协议介绍_第3张图片

I2C信号类型

I2C总线在数据传输过程中有三种信号,它们分别是:开始信号(S)、结束信号(P)、应答信号(ACK)。
ARM之I2C总线协议介绍_第4张图片
开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。
结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。
应答信号:接收设备在接收到8bit数据后,在第9个时钟周期,向发送设备发送低电平,表示成功收到数据。

I2C总线时序

当I2C总线是空闲的,SDA和SCL线都是高电平。I2C数据通信的主机发送开始信号(S)起始,到主机发送停止信号(P)结束。在开始信号和结束信号之间以字节为单位传输数据,每个字节后必须跟一个响应位,每次传输可以发送的字节数量不受限制。数据是一位一位地进行传输,先传输高位(MSB),再传输低位(LSB)。
发送器作为数据的发送方,接收器作为数据的接收方。根据SCL上的时钟信号进行数据传输同步,保证数据有效传输。SCL时钟为低电平周期时发送器发送数据,SDA线上数据可以发送变化,SCL时钟为高电平周期时接收器接收数据,SDA线上数据必须保持稳定。
ARM之I2C总线协议介绍_第5张图片

I2C总线ACK信号

为了完成一个字节的发送操作,接收器必须将一个ACK信号发送到发送器。ACK信号在SCL线的第9个时钟周期产生。发送完一个字节后,第9个时钟周期发送器释放对SDA线的控制,SDA线由于上拉电阻的作用恢复到高电平。接收器如果接收数据成功,将SDA线置低电平作为ACK信号。发送器收到ACK信号,继续发送数据;接收器如果接收数据失败,则在第9个时钟周期不动作,SDA一直为高电平、发送器没有接收到ACK信号,就会发出停止信号停止本次通信或开始发送开始信号,重新发送。
ARM之I2C总线协议介绍_第6张图片

I2C设备地址

ARM之I2C总线协议介绍_第7张图片
I2C设备用一个7位或10位的数字,唯一标识自己。方便主机寻找自己,建立I2C通信。I2C设备地址由固定地址和可编程部分构成。这样I2C总线就可以支持一个I2C总线上挂载多个同样的器件,而地址不同。I2C地址的可编程部分最大数量就是可以连接到I2C总线上相同器件的数量。一般可编程的部分的值,由特定引脚的电器连接决定。

I2C总线地址寻址及数据传输方向控制

I2C总线的寻址过程是通常在起始信号后的第一个字节决定了主机选择哪一个从机。例外的情况是可以寻址所有器件的广播地址,使用这个地址时理论上所有器件都会发出一个响应,但是也可以使器件忽略这个地址。
第一个字节的头7位组成了从机地址,第8位它决定了数据传输的方向,第一个字节的最低位是0表示主机会写信息到被选中的从机;1表示主机会向从机读信息;
7位寻址
ARM之I2C总线协议介绍_第8张图片
10位寻址和7位寻址兼容,而且可以结合使用。10位寻址过程是起始信号后的头两个字节,通常决定了主机要寻址哪个从机。10位从机地址由在起始条件信号或重复起始信号后的头两个字节组成。第一个字节的头7位是11110XX的组合,其中最后两位XX是10位地址的两个最高位(MSB)。第一个字节的第8位是R/W位,决定了数据传输的方向,第一个字节的最低位是=0,表示主机会写信息到被选中的从机;1表示主机会向从机读信息。
ARM之I2C总线协议介绍_第9张图片

你可能感兴趣的:(ARM开发,物联网,嵌入式)