首页 > 产品 > 模拟与混合信号 > TI 高精度实验室 - I2C >

I2C IC

最新课程

热门课程

6.2 TI 高精度实验室 -I2C:协议概述

大家好,欢迎观看 TI 高精度实验室 推出的 I²C 协议概述。 在本视频中,我们将讨论 如何在最基本的 层面实施此协议。 我们将讨论一些 用于实施 I²C 的 关键设计参数。 内部 IC 接口 简称 I²C, 创建于 1982 年, 旨在利用简单、 稳健的低成本 协议在 IC 之间 进行通信,同时 尽可能减少引脚数量。 随着外设部件的 种类日益增多, I²C 能够给 系统设计人员带来的好处 显而易见, 于是 I²C 接口迅速 普及起来, 在作为一项 标准公布之后, 很快得到了广泛应用。 很多器件 都会使用 I²C 通信接口,因此系统 设计人员可以创造无限可能, 唯一能够限制 设计能力的只有他们 自身的创造力。 这里我们只列举 几种可以使用的器件: IO 扩展器、温度传感器、 光传感器、存储器、 键盘扫描仪、压力 传感器、湿度传感器、 ADC、DAC 以及多种 采用 I²C 协议的 其他器件。 I²C 总线 是双向接口, 利用一个称为 主器件的控制器 与从器件 进行通信。 物理 I²C 接口由 串行时钟线 SCL 和 串行数据线 SDA 组成。 SDA 和 SCL 线都 必须通过上拉电阻器 连接到 VCC。 除非被主器件 成功寻址,否则 从器件无法传输数据。 I²C 总线上的 每个器件都有 一个特定的器件 地址,用于区分 同一个 I²C 总线上的其他器件。 I²C 与器件 之间的通信由 主器件发送一个 启动条件而开始, 并由主器件发送 一个停止条件而终止。 在 SCL 为高电平时 在 SDA 线上进行的 从高到低转换定义了启动条件。 当主器件通过 产生一个启动条件 控制了总线时, 除非停止条件 释放总线,否则 所有其他主器件 都无法控制总线。 在 SCL 为高电平时 在 SDA 线上进行的 从低到高转换定义了停止条件。 在启动条件 与停止条件之间, 必须执行 数据通信。 I²C 标准以 八位格式—— 有时称为字节—— 定义了所有 I²C 数据事务, 最高有效位 MSB 位于 数据帧的开头, 最低有效位 LSB 位于数据帧的末尾, 后面跟随 确认 ACK 或未确认 NACK。 必须注意的是, 在这些图中, 我们看到的 显示为正方形的位 利用颜色编码来 表明是主器件还是从器件 在控制此位的 生成。 灰色的位或正方形 表示由主器件控制, 而白色的位表示 由从器件控制。 通过从位 1 到位 9 重复时钟模式来 同时发送多个字节, 其中的 第九个位是 ACK 或 NACK。 发送数据 传输之后, 需要启动一个 停止条件或 重复启动条件 来确定要 释放总线 还是主器件要 启动一个新的事务。 在 SCL 的每个 时钟脉冲期间 传输一个数据位。 SDA 线上的一个 字节由 8 位组成。 一个字节可以是 器件地址、寄存器 地址或者写入到从器件 或从从器件读取的数据。 在启动条件与 停止条件之间, 可以从主器件向从器件 传输任意数量的数据字节。 在时钟周期的 高相位,SDA 线 上的数据必须 保持稳定。 此处展示了一个发送 1、0、1、0、1、0、1、0 的示例, 以十六进制表示为 AA,包含一个 ACK。 当 SCL 为高电平时, 会将数据线中的 变化视为 控制指令, 例如启动和停止。 数据的每个字节, 包括地址字节, 后面都跟随一个 来自接收器的 ACK 位。 ACK 位允许 接收器向 发送器告知它 已成功收到字节, 可以发送另一个字节了。 在接收器可以 发送 ACK 之前, 发送器必须 释放 SDA 线。 要发送 ACK 位, 接收器必须在 ACK/NACK 相关 时钟周期, 即周期 9 的低相位期间拉低 SDA 线。 当 SDA 线在 ACK/NACK 相关时钟周期期间 保持高电平时, 将被视为 NACK。 必须考虑设置 时间和保持时间。 有几个条件 会导致生成 NACK。 条件一,接收器 正在执行某个 实时功能,且未 准备好开始与 主器件进行通信,因此 无法接收或发送数据。 条件二, 在传输期间, 接收器收到了它无法 理解的数据或指令。 条件三,在传输期间, 接收器无法再接收 更多的数据字节。 条件四,主接收器 已读取数据, 并通过 NACK 向 从器件表明了这种情况。 下面是主器件 与从器件进行通信 以便向从器件 写入数据或从从器件 读取数据时的一般步骤。 下面是主器件 要向从器件发送 或写入数据时的步骤。 步骤一,主发送器 发送一个启动条件 并寻找 从接收器的地址。 步骤二,主发送器 向从接收器发送数据。 步骤三,主发送器 利用一个停止条件 终止传输。 下面是主器件要从 从器件接收或读取数据时的 步骤。 步骤一,主接收器 发送一个启动条件 并寻找 从发送器的地址。 步骤二,主接收器 向寄存器发送一个 请求以读取从发送器。 步骤三,主接收器从 从发送器 接收数据。 步骤四,主接收器 利用一个停止条件 终止传输。 用于生成读取和 写入事务的位和 条件模式的 定义如下所示。 灰色方框表示 它由主器件控制。 白色方框表示 它由从器件控制。 灰色/白色方框 表示位既可以 由主器件控制, 也可以由从器件控制。 条件分为三种。 条件一是启动条件, 条件二是堆栈条件, 条件三是重复启动条件。 地址位由 字母 A 表示。寄存器地址 位由字母 B 表示。数据位由 字母 D 表示。 读取/写入位 既可以是写入, 显示为负 W 并在此位为 0 时 执行;也可以是读取 ,显示为 R 并在 此位为 1 时执行。 第九个位 始终为两种可能: 确认,显示为 A 或 ACK,值为 0;或者 未确认,显示 为负 A 或 NACK, 值为 1。 下面是一个 向从器件写入 两个字节时的 位和条件模式。 主器件在总线上 生成一个启动条件。 主器件生成一个 7 位的从器件地址 以及最后一个位,即 读取/写入位。 在本例中,此位 是一个写入位,被 设置为 0, 表示为负 W。 假设总线上存在一个 具有此地址的从器件, 则此从器件 会生成 ACK。 随后,主器件会 发送 8 个连续寄存器位 或曰字节, 从器件随后会 生成一个 ACK 以 确认收到这些位。 接下来,主器件会 发送第二组连续位, 也就是第二个 字节,从器件会随即 再次确认,以 告知主器件 它已收到此字节。 然后,主器件会 生成停止条件 以终止此事务。 下面是一个从 从器件读取 两个字节的 位和条件模式。 主器件在总线上 生成一个启动条件。 主器件生成 7 位的从器件地址 以及最后一个位, 即读取/写入位。 在本例中,此位 是一个读取位,被 设置为 1, 表示为字母 R。 假设总线上存在一个 具有此地址的从器件, 则此从器件 会生成一个 ACK。 随后,从器件会 发送 8 个连续寄存器位 或曰一个字节, 主器件随后会 生成一个 ACK 以 确认收到这些位。 接下来,从器件会 发送第二组连续位, 也就是第二个字节, 但主器件将不确认,即 NACK, 告知从器件它已 接收完这些数据。 然后,主器件会 生成停止条件 以终止此事务。 这两种模式 代表主器件与 从器件之间进行的 最基本读取和写入事务。 “I²C 示例 - 内部 寄存器的读取/写入” 培训视频中 介绍了更为复杂的 读取/写入 事务或模式。 本视频到此结束。 谢谢观看。 请尝试完成测验以 检查您对本视频

大家好,欢迎观看 TI 高精度实验室

推出的 I²C 协议概述。

在本视频中,我们将讨论 如何在最基本的

层面实施此协议。

我们将讨论一些 用于实施 I²C 的

关键设计参数。

内部 IC 接口 简称 I²C,

创建于 1982 年, 旨在利用简单、

稳健的低成本 协议在 IC 之间

进行通信,同时 尽可能减少引脚数量。

随着外设部件的 种类日益增多,

I²C 能够给 系统设计人员带来的好处

显而易见, 于是 I²C

接口迅速 普及起来,

在作为一项 标准公布之后,

很快得到了广泛应用。

很多器件 都会使用

I²C 通信接口,因此系统 设计人员可以创造无限可能,

唯一能够限制 设计能力的只有他们

自身的创造力。

这里我们只列举 几种可以使用的器件:

IO 扩展器、温度传感器、 光传感器、存储器、

键盘扫描仪、压力 传感器、湿度传感器、

ADC、DAC 以及多种 采用 I²C 协议的

其他器件。

I²C 总线 是双向接口,

利用一个称为 主器件的控制器

与从器件 进行通信。

物理 I²C 接口由

串行时钟线 SCL 和 串行数据线 SDA 组成。

SDA 和 SCL 线都 必须通过上拉电阻器

连接到 VCC。

除非被主器件 成功寻址,否则

从器件无法传输数据。

I²C 总线上的 每个器件都有

一个特定的器件 地址,用于区分

同一个 I²C 总线上的其他器件。

I²C 与器件 之间的通信由

主器件发送一个 启动条件而开始,

并由主器件发送 一个停止条件而终止。

在 SCL 为高电平时 在 SDA 线上进行的

从高到低转换定义了启动条件。

当主器件通过 产生一个启动条件

控制了总线时, 除非停止条件

释放总线,否则 所有其他主器件

都无法控制总线。

在 SCL 为高电平时 在 SDA 线上进行的

从低到高转换定义了停止条件。

在启动条件 与停止条件之间,

必须执行 数据通信。

I²C 标准以 八位格式——

有时称为字节—— 定义了所有

I²C 数据事务, 最高有效位

MSB 位于 数据帧的开头,

最低有效位 LSB 位于数据帧的末尾,

后面跟随 确认 ACK

或未确认 NACK。

必须注意的是, 在这些图中,

我们看到的 显示为正方形的位

利用颜色编码来 表明是主器件还是从器件

在控制此位的 生成。

灰色的位或正方形 表示由主器件控制,

而白色的位表示 由从器件控制。

通过从位 1 到位 9 重复时钟模式来

同时发送多个字节, 其中的

第九个位是

ACK 或 NACK。

发送数据 传输之后,

需要启动一个 停止条件或

重复启动条件 来确定要

释放总线 还是主器件要

启动一个新的事务。

在 SCL 的每个 时钟脉冲期间

传输一个数据位。

SDA 线上的一个 字节由 8 位组成。

一个字节可以是 器件地址、寄存器

地址或者写入到从器件 或从从器件读取的数据。

在启动条件与 停止条件之间,

可以从主器件向从器件 传输任意数量的数据字节。

在时钟周期的 高相位,SDA 线

上的数据必须 保持稳定。

此处展示了一个发送 1、0、1、0、1、0、1、0 的示例,

以十六进制表示为 AA,包含一个 ACK。

当 SCL 为高电平时, 会将数据线中的

变化视为 控制指令,

例如启动和停止。

数据的每个字节, 包括地址字节,

后面都跟随一个 来自接收器的 ACK 位。

ACK 位允许 接收器向

发送器告知它 已成功收到字节,

可以发送另一个字节了。

在接收器可以 发送 ACK 之前,

发送器必须 释放 SDA 线。

要发送 ACK 位, 接收器必须在

ACK/NACK 相关 时钟周期,

即周期 9 的低相位期间拉低 SDA 线。

当 SDA 线在 ACK/NACK 相关时钟周期期间

保持高电平时, 将被视为 NACK。

必须考虑设置 时间和保持时间。

有几个条件 会导致生成

NACK。

条件一,接收器 正在执行某个

实时功能,且未 准备好开始与

主器件进行通信,因此 无法接收或发送数据。

条件二, 在传输期间,

接收器收到了它无法 理解的数据或指令。

条件三,在传输期间, 接收器无法再接收

更多的数据字节。

条件四,主接收器 已读取数据,

并通过 NACK 向 从器件表明了这种情况。

下面是主器件 与从器件进行通信

以便向从器件 写入数据或从从器件

读取数据时的一般步骤。

下面是主器件 要向从器件发送

或写入数据时的步骤。

步骤一,主发送器 发送一个启动条件

并寻找 从接收器的地址。

步骤二,主发送器 向从接收器发送数据。

步骤三,主发送器 利用一个停止条件

终止传输。

下面是主器件要从 从器件接收或读取数据时的

步骤。

步骤一,主接收器 发送一个启动条件

并寻找 从发送器的地址。

步骤二,主接收器 向寄存器发送一个

请求以读取从发送器。

步骤三,主接收器从 从发送器

接收数据。

步骤四,主接收器 利用一个停止条件

终止传输。

用于生成读取和 写入事务的位和

条件模式的 定义如下所示。

灰色方框表示 它由主器件控制。

白色方框表示 它由从器件控制。

灰色/白色方框 表示位既可以

由主器件控制, 也可以由从器件控制。

条件分为三种。

条件一是启动条件, 条件二是堆栈条件,

条件三是重复启动条件。

地址位由 字母 A 表示。寄存器地址

位由字母 B 表示。数据位由

字母 D 表示。

读取/写入位 既可以是写入,

显示为负 W 并在此位为 0 时

执行;也可以是读取 ,显示为 R 并在

此位为 1 时执行。

第九个位 始终为两种可能:

确认,显示为 A 或 ACK,值为 0;或者

未确认,显示 为负 A 或

NACK, 值为 1。

下面是一个 向从器件写入

两个字节时的 位和条件模式。

主器件在总线上 生成一个启动条件。

主器件生成一个 7 位的从器件地址

以及最后一个位,即 读取/写入位。

在本例中,此位 是一个写入位,被

设置为 0, 表示为负 W。

假设总线上存在一个 具有此地址的从器件,

则此从器件 会生成 ACK。

随后,主器件会 发送 8 个连续寄存器位

或曰字节, 从器件随后会

生成一个 ACK 以 确认收到这些位。

接下来,主器件会 发送第二组连续位,

也就是第二个 字节,从器件会随即

再次确认,以 告知主器件

它已收到此字节。

然后,主器件会 生成停止条件

以终止此事务。

下面是一个从 从器件读取

两个字节的 位和条件模式。

主器件在总线上 生成一个启动条件。

主器件生成 7 位的从器件地址

以及最后一个位, 即读取/写入位。

在本例中,此位 是一个读取位,被

设置为 1, 表示为字母 R。

假设总线上存在一个 具有此地址的从器件,

则此从器件 会生成一个 ACK。

随后,从器件会 发送 8 个连续寄存器位

或曰一个字节, 主器件随后会

生成一个 ACK 以 确认收到这些位。

接下来,从器件会 发送第二组连续位,

也就是第二个字节, 但主器件将不确认,即 NACK,

告知从器件它已 接收完这些数据。

然后,主器件会 生成停止条件

以终止此事务。

这两种模式 代表主器件与

从器件之间进行的 最基本读取和写入事务。

“I²C 示例 - 内部 寄存器的读取/写入”

培训视频中 介绍了更为复杂的

读取/写入 事务或模式。

本视频到此结束。

谢谢观看。

请尝试完成测验以 检查您对本视频

视频报错
手机看
扫码用手机观看
收藏本课程

视频简介

6.2 TI 高精度实验室 -I2C:协议概述

所属课程:TI 高精度实验室 - I2C 发布时间:2020.01.13 视频集数:4 本节视频时长:00:09:12

了解如何使用I2C IC进行设计。 TI Precision Labs(TIPL)是模拟信号链设计人员最全面的在线教室。该 接口系列 提供了通过工业,汽车和多种应用领域常用协议的技术培训。 从I2C系列开始,以了解I2C标准,数据协议的基础知识和所使用的物理信号,以及如何使用转换器和缓冲设备解决应用程序级问题。

TI培训小程序