5.2 TI Precision Labs - I2C: Protocol Overview

+荐课 提问/讨论 评论 收藏 分享
大家好,欢迎观看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 示例 - 内部寄存器的读取/写入” 培训视频中介绍了更为复杂的 读取/写入事务或模式。 本视频到此结束。 谢谢观看。 请尝试完成测验以
课程介绍 共计4课时,29分25秒

[高精度实验室] 接口 : (5) I2C 总线

Precision Labs I2C 总线 高精度实验室 TIPL

在本系列课程中,我们讨论 I2C 总线中的信号传输采用的协议。讨论漏极开路信号的概念,以及上拉电阻和负载电容对信号时钟的影响。

  • 技术支持
  • 其他

推荐帖子

求大神|我关闭不了定时器
#include #define uint unsigned int #define uchar unsigned char void PWM_init(uint zkb1,uint zkb2); void init_clk(); uint count_PWM = 0; uchar flag = 0; void main() {   WDTCTL = WDTP...
ab1046492147 微控制器 MCU
发布自己的TI-430小四轴方案~~flappy430!(可能是首个430小四轴)
本帖最后由 YUE435 于 2014-8-17 12:40 编辑 发布自己的TI-430小四轴方案~~flappy430! 在坛子里学习到了很多东西,十分的感谢各位坛友们。最近正值TI杯,用TI的芯片做四旋翼, 恰好最近也在做这个,发布一下,反馈论坛~!还望各位大神多多指点啦~!虽然做的不是很好, 至少证明了,我大430也是可以做小四轴的哇咔咔咔。。。。。。貌似之前确实还都是AVR,S...
YUE435 微控制器 MCU
CC1310切换速率的办法
客户在使用CC131开发产品的过程中,经常会遇到切换速率的场景,比如此刻使用50Kbps速率传输,下一时刻使用10Kbps速率传输,那么如何有效的在各个速率之间切换,这里介绍两个办法: 一、使用RF_control来切换速率 RF_control函数说明如下: /** * @brief Set RF control parameters * @note Calling context ...
Aguilera 无线连接
【求助】关于中断问题
一开始我用的是1点多的版本中断是 interrupt[UART1RX_VECTOR] void usart1_rx (void) 可以调用中断 后来换了高版本的 中断是 #pragma vector=UART1RX_VECTOR __interrupt void usart1_rx(void) 编译也可以通过 就是不能调用中断了 程序的其他部分都没变 请问为什么呢 谢谢...
weimingqiang 微控制器 MCU

hawkier

学习了,I2C总线知识

2020年04月08日 13:26:26

jpf

学习接口 : I2C 总线

2020年03月02日 16:35:12

hellokt43

学习接口 : I2C 总线

2020年02月27日 09:24:08

dingxilindy

凤凰息梧桐 学习 TI Precision Labs - I2C: Buffers Overview

2020年01月20日 14:27:12

凤凰息梧桐

学习学习TI课程

2020年01月18日 20:45:55

54chenjq

This video is part of the TI Precision Labs - I2C curriculum. In this training we discuss the physical signaling used by the I2C protocol. The concept of open-drain signaling is covered as well as the effects of pull-up resistance and load capacitance on signal timing.

2020年01月17日 23:09:59

shakencity

学习学习TI Precision Labs 5 - I2C

2020年01月14日 10:43:55

分享到X
微博
QQ
QQ空间
微信

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新文章 手机版

站点相关: EEWORLD首页 EE大学堂 论坛 下载中心 Datasheet 活动专区 博客

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved