TripTheWorld

PCIe总线何去何从? 实际的需求催生了技术的变革。 PCIe就像是计算机王国里的一场“交通革命”,它替代了PCI成为计算机领域主要的互联总线。那么它的发展趋势如何?让我们一步一步揭开它神秘的面纱。欢迎关注微信公众号“硬件工程师宝典”,获取更多资讯。

I2C从入门到精通之二:I2C设备的硬件架构

0
阅读(75)

0,引言

在上一篇文章我们讲解了《I2C从入门到精通之一:I2C的历史起源和综合简介》,今天我们继续接着介绍I2C设备的硬件架构。

所有I2C主题的文章都会收录在《深入浅出聊I2C》合集里,欢迎评阅。通过这个专集的阅读,你将成为I2C专家。


Document.png

百度网盘分享的文件 

上如是I2C学习资料和标准(pdf格式),需要下载的朋友,请关注本微信公众号“硬件工程师宝典”,在对话框内回复“I2C”,将获取标准下载链接。其中“I2C_Spec_Rev7_2021_UM10204.pdf”这份文件是最新的I2C specification, 希望大家重点阅读。

一, I2C设备的硬件连接和分布

1、I2C设备的硬件

I2C 系统为总线上的所有设备提供了两条共享的通信线路。这两条线路用于双向、半双工通信。I2C 允许有多个控制器和多个目标设备。这两条线路都需要上拉电阻。图 1 展示了 I2C 物理层的典型实现方式,I2C(Inter-Integrated Circuit)总线的硬件架构相对简单,主要由主设备、从设备、两条信号线(SDA和SCL)以及上拉电阻组成。

3.png

1 I2C 物理层的典型实现方式

I2C 被广泛采用的一个原因在于它仅使用两条线路进行通信。在图一中,第一条线路是 SCL,它主要由控制器设备控制,是一种串行时钟。SCL 用于同步将数据传入或传出目标设备。第二条线路是 SDA,它是串行数据线。SDA 用于向目标设备发送数据或从目标设备接收数据。例如,主设备Master1或者Master2可以向从设备Slave1或者Slave2发送配置数据和输出代码,或者从设备Slave1或者Slave2可以将转换数据发送回主设备Master1或者Master2。I2C 是半双工通信,每次只有一个主设备Master或从设备Slave在总线上发送数据。

I2C 由主设备Master设备启动和停止通信,这消除了总线争用的潜在问题。与从设备Slave的通信是通过总线上的唯一地址进行的。这使得 I2C 总线上可以同时存在多个主设备Master和多个目从设备Slave。

SDA 和 SCL 线与总线上的所有设备都有开漏连接。这需要一个上拉电阻连接到公共电压电源。

2、硬件架构核心组件:主设备和从设备

主设备 (Master Device)

角色: 主设备负责发起和终止通信,生成时钟信号(SCL),并向从设备发送数据或从从设备接收数据。

数量: I2C总线可以有一个或多个主设备。在多主设备系统中,需要有仲裁机制来解决总线访问冲突。

例子: 微控制器(MCU)、微处理器(MPU)等。

从设备 (Slave Device)

角色: 从设备响应主设备的请求,根据其唯一的地址被主设备寻址,并执行主设备指令(发送数据或接收数据)。从设备不能发起通信,也不能生成时钟信号。

数量: I2C总线可以连接多个从设备,理论上最多可达128个(7位地址)或1024个(10位地址)。

例子: 传感器(温度、湿度、压力等)、EEPROM、实时时钟(RTC)、LCD控制器、GPIO扩展器等。

二, I2C设备的信号和管脚

1、数据信号线

再把前面的图拿来用一下:图二中有SDA,SCL,VDD和GND四种信号类型。

3.png

2 I2C 物理层的典型实现方式

串行数据线 (SDA - Serial Data Line)

功能: 这是一条双向数据线,用于在主设备和从设备之间传输数据。

特性: SDA线是开漏 (Open-Drain) 输出,这意味着它只能将总线拉低(逻辑0),而不能主动拉高。当所有设备都释放SDA线时,它会通过外部上拉电阻被拉高(逻辑1)。

串行时钟线 (SCL - Serial Clock Line)

功能: 这是一条单向或双向时钟线,用于同步主设备和从设备之间的数据传输。通常由主设备生成时钟信号。

特性: SCL线也是开漏 (Open-Drain) 输出,同样需要外部上拉电阻。主设备控制SCL线的时钟频率,从设备可以通过“时钟延长”(clock stretching)功能在需要更多时间处理数据时暂时拉低SCL线,暂停通信。

上拉电阻 (Pull-up Resistors)

必要性: 由于SDA和SCL线都是开漏输出,它们需要外部上拉电阻来确保在没有设备拉低时,总线能够保持高电平(逻辑1)。

作用: 上拉电阻将SDA和SCL线连接到正电源(VCC)。当总线上的设备不驱动信号线时,上拉电阻会将信号线拉至高电平。当设备需要发送逻辑0时,它会拉低信号线。

阻值选择: 上拉电阻的阻值选择很重要。过大的阻值会导致信号上升沿变慢,影响通信速度;过小的阻值会增加电流消耗,并可能导致设备无法有效拉低总线。通常,阻值在1kΩ到10kΩ之间,具体取决于总线电容、工作电压和通信速度。

信号连接

I2C总线的连接方式非常简单,所有连接到总线的设备都并联在SDA和SCL这两条线上。

连接说明:

电源连接: 所有I2C设备都必须连接到相同的电源(VDD或VCC)和地(GND)。

SDA连接: 主设备的SDA引脚、所有从设备的SDA引脚以及一个上拉电阻都连接到同一条SDA总线上。

SCL连接: 主设备的SCL引脚、所有从设备的SCL引脚以及另一个上拉电阻都连接到同一条SCL总线上。

上拉电阻位置: 上拉电阻通常放置在总线的任意一点,但通常靠近主设备或总线的物理中心,以确保信号完整性。每个I2C总线只需要一组上拉电阻,而不是每个设备都带一组。

2、其它可选信号或管脚

设备地址: 每个从设备在I2C总线上都有一个唯一的7位或10位地址。主设备通过发送这个地址来选择要与之通信的从设备。在图三中,(A2, A1, A0)是I2C总线设备中用于设备寻址的引脚, 单个总线系统上最多可寻址八个设备,用于区分同一总线上的多个设备。


4.png


3 I2C 设备的管脚

写保护(WP):当写保护输入端连接到地(GND)时,允许正常的写操作。当WP被拉高到电源电压VCC时,禁止对设备的所有写操作。如果未连接,WP会在内部被拉低到地(GND)。

报警功能(ALERT):I2C 设备中的 ALERT 引脚如图4所示(也常被称为 SMBALERT 或 SMBA)是一个可选的信号线,它的主要作用是允许从设备在需要主设备关注时主动发出中断请求,而无需主设备不断地轮询每个从设备的状态。这在许多应用中都非常有用,尤其是在系统管理和电源管理等领域。从设备主动通知: 传统的 I2C 通信中,主设备需要定期轮询每个从设备以检查其状态或是否有数据待发送。如果从设备需要紧急通知主设备,例如传感器检测到超出阈值、电池电量低、设备错误等,它可以通过拉低 ALERT 引脚来立即通知主设备。

5.png

4 I2C 设备的管脚ALERT

三, 抛砖引玉

I2C总线因其简洁、高效和灵活性,在各种电子设备和系统中得到了广泛应用。它特别适用于微控制器与低速外设之间的短距离、板内通信。。

再接下来的文章中,我们将深入介绍I2C协议Protocol。

敬请关注下一篇:I2C从入门到精通之三:I2C协议Protocol》

七,参考文献:

需要以下参考文献(I2C标准)的朋友,请关注本微信公众号“硬件工程师宝典”,在对话框内回复“I2C”,将获取标准下载连接。其中“I2C_Spec_Rev7_2021_UM10204.pdf”这份文件是最新的I2C specification, 希望大家重点阅读。


Document.png


百度网盘分享的文件