TI教室 >
产品 >
模拟混合信号 >
接口 >
I2C >
[高精度实验室] 接口 : (5) I2C 总线 > 5.2 TI Precision Labs - I2C: Protocol Overview
- 本课程为精品课,您可以登录eeworld继续观看:
- 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 总线中的信号传输采用的协议。讨论漏极开路信号的概念,以及上拉电阻和负载电容对信号时钟的影响。
猜你喜欢
换一换
推荐帖子
- DSP开发100问【转帖】
- 一、时钟和电源 问:DSP的电源设计和时钟设计应该特别注意哪些方面?外接晶振选用有源的好还是无源的  ...
- 新鲜老笔 DSP 与 ARM 处理器
- 示波器地线应用注意问题
- 这是一个非常隐蔽的问题,稍不注意,在接入示波器时,就会导致线路板上的某些芯片突然爆炸,不仅会对项目产生非常大的影响,也足以让我们着实郁闷上几天。所以,应该足够引起电路设计人员和电路调试工作人员的重视。 本人就接二连三地中了这种埋伏,在这里我想重点放在分析中招儿的过程,是怎么放过这个隐患而使自己遭受损失的,这一点很重要,因为没有重视所以深受其害,...
- Jacktang 模拟与混合信号
- 模型化开发过程中要基本掌握的Matlab/Simulink的功能
- 基于模型设计其实是一种设计方法,当然建模的软件以及代码生成工具也不是只有Matlab/Simulink这一种,比如还有Labview、以及ETAS公司的ASCET等等。当然前者由于需要特定板卡支持,而且系统移植性不好,在基于模型的设计中用的较少,更多的被用于测试领域;后者一般用于汽车行业,其实更多的用于博世集团的研发体系中。同时由于matlab\simulink在各个工程领域以及数学领域的广泛应用...
- Jacktang 微控制器 MCU
- IAR for 430软件的初学者如何使用
- msp430单片机使用的软件为iar软件。下面介绍如何在IAR软件中新建workspace和project workspace 工作空间,里面可以存放多个项目 project 一个项目工程 第一步:新建工作空间file->new->workspace 第二部:新建工程:project->create new project->C->MAIN-&...
- 灞波儿奔 微控制器 MCU