007---I2C协议的基本知识(一)

1. 摘要

文章为学习记录。主要介绍 I2C 协议的概述、物理层、协议层、I2C设备器件地址和存储地址。

2. I2C概述

I2C 协议(Inter-Integrated Circuit)是由 Philips (现NXP)开发的一种双向二线同步****串行总线,用于连接低速外设。

3. I2C物理层

I2C 通讯设备之间的常用连接方式如下图所示。
在这里插入图片描述
物理层特点:
(a)支持多个通讯主机及多个通讯从机。
(b)两条线。一条双向串行数据线(SDA) ,一条串行时钟线(SCL)。数据线用来表示数据,时钟线用于数据收发同步。
(c)每个从设备有唯一的地址。主机利用这个地址进行不同设备之间的访问。
(d)总线通过上拉电阻接到高电平。当 I2C 所有设备都空闲时,由上拉电阻把总线拉成高电平。
(e)多个主机同时使用总线时,仲裁决定由哪个设备占用总线。
(f)低速通信:标准模式下速率可达100 kbps,快速模式下可达400 kbps,高速模式下可达3.4 Mbps。

4. I2C 协议层

I2C 协议整体时序图分为 4 个部分。如下图所示,①②③④表示 I2C 协议的 4个状态,分别为“总线空闲状态”、“起始信号”、“数据读/写状态”、“停止信号。
在这里插入图片描述
(1) ①表示“总线空闲状态”。在此状态下, SCL 和 SDA 均保持高电平,此时无 I2C 设备工作。
(2) ②表示“起始信号”。在 I2C 总线处于“空闲状态”,SCL 依旧保持高电平, SDA 出现由高电平转为低电平的下降沿时,产生一个起始信号。此时与总线相连的所有 I2C 设备在检测到起始信号后,均跳出空闲状态,等待控制字节的输入。
(3) ③表示“数据读/写状态”。数据读写时序图如下图所示。
在这里插入图片描述
当主机向从机写入指令或数据时, SDA 上的数据在SCL为高电平时写入从机设备,每次只写入一位数据; SDA 中的数据在SCL 为低电平时进行数据更新,以保证在 SCL 为高电平时采集到 SDA 数据的稳定状态。
当指令或数据传输完成,从机设备正确接收到指令或数据后,会通过拉低 SDA 为低电平,向主机设备发送单比特的应答信号,表示数据或指令写入成功。若从机正确应答,可以结束或开始下一字节数据或指令的传输。

(4) ④表示“停止信号”。完成数据读写后,SCL 保持高电平,SDA 出现由低电平转为高电平的上升沿时,产生一个停止信号。I2C 总线跳转回“总线空闲状态”。

5. I2C设备器件地址

每个 I2C 设备在出厂前都被设置了器件地址,器件地址一般位宽为 7 位,用户不可自主更改。有的 I2C 设备的器件地址设置了全部位宽;有的 I2C 设备的器件地址设置了部分位宽。
在 I2C 主从设备通讯时,主机在发送了起始信号后,接着会发送控制命令,控制命令格式如下图所示。
在这里插入图片描述
控制命令长度为 1 个字节,它的高 7 位为 I2C 设备的器件地址,最低位为读写控制位。读写控制位为 0 时,表示主机要对从机进行数据写入操作;读写控制位为 1 时,表示主机要对从机进行数据读出操作。
通常情况下,主机在与从机建立通讯时,并不是直接向想要通讯的从机发送控制命令(器件地址 + 读/写控制位)以建立通讯,而是主机会将控制命令发送到SDA上,与主机硬件相连的从机设备都会接收到主机发送的控制命令。所有从机设备在接收到主机发送的控制命令后会与自身器件地址做对比,若两者地址相同,该从机设备会回应一个应答信号告知主机设备,主机设备接收到应答信号后,主从设备建立通讯连接,两者可进行数据通讯。

6. I2C设备存储地址

每一个支持 I2C 通讯协议的设备,内部都会包含一些可进行读/写操作的寄存器或存储器,只有向对应寄存器写入正确参数,该设备才能正常工作。
根据 I2C 设备要配置寄存器的多少或存储容量的大小的不同,存储地址位宽分为单字节和 2 字节两种。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值