I2C 设计数学:电容和电阻

时间:2023-05-05

了解 I 2 C 及其带来的一些设计挑战,包括逻辑阈值、影响电容的因素以及和上拉电阻。

本文介绍了哪些变量会影响总线的电容。它还着眼于用于确定上拉电阻大小和确定电路走线的长度的数学计算。让我们从讨论什么是I 2 C 开始。

I2C 是一种多主、多从串行接口,允许微芯片以 100 kHz(标准模式)、400 kHz(快速模式)、1 MHz(快速模式 Plus)和 3.4 MHz(高速模式)。 

我们之前的一篇文章 I2C 总线硬件实现细节非常详细地解释了该机制。可以在NXP 的网站上找到 总线规范。 

 

上面显示的是 I2C 硬件配置以及简化的时钟和数据波形。

 

现实生活中的 I2C 事务不是图纸中常见的方波脉冲。由于寄生电容的存在和上拉电阻的使用,电路具有固有阻抗。  

逻辑高到逻辑低的转换涉及电流通过 NMOS 晶体管的低阻抗通道放电——这些转换是快速的。然而,逻辑低到逻辑高的转换涉及必须流过相对高值上拉电阻的电流。较低的上拉电阻会导致更快的转换,但也会导致更高的电流消耗(当信号为逻辑低电平时);更高的上拉电阻会导致更慢的转换和更低的电流消耗。所选择的电阻值在较高频率下变得越来越重要。

 

由于逻辑低到逻辑高电流路径中的上拉电阻,正转换看起来是圆的。

 

总线电容或电阻的任何增加都会增加逻辑高转换时间。在某一点,电位差甚至不会达到逻辑高阈值,或者在转换回逻辑低之前不会保持足够长的时间。

 

在上图中,RC 时间常数太大,未达到逻辑高阈值。

不同的 I2C 设备可以有不同的逻辑阈值。前面的图表都假设转换为 VLL=0.3?3.3V=1VVLL=0.3?3.3V=1V 和 VLH=0.7?3.3V=2.3V,但情况并非总是如此。例如,ADP5062 在 VLL=0.5V 和 VLH=1.2V 处有转换

同一总线上可以使用不同阈值电压的芯片;在这种情况下,应使用逻辑高阈值电压和逻辑低阈值电压进行计算。

 

此图显示假设的逻辑低阈值电压为 0.7 V 和假设的逻辑高阈值电压为 1.3 V。这些低值增加了处于逻辑高状态的时间,而不会显着改变处于逻辑低状态的时间. 这种配置允许更高频率的操作。

 

电容

NXP 规范规定,标准模式和快速模式设备的总总线电容为 400 pF,快速模式 Plus 设备为 550 pF。您不应为达到这些电容上限而向 I2C 线路添加电容器——总线电容越低越好。

 

电介质

您的电路板基材会影响总线的总电容。大多数 PCB 基材的介电常数在 2.5?ε?5 范围内(ε 取决于频率)。

 

该图显示了介电常数对微带线电容的影响。

 

更昂贵的基础材料往往具有较低的总介电常数——这会降低走线的总电容,这是我们的目标。通过选择TLT(ε=2.5) 而不是Policlad 370HR (ε FR4 =4.5),可以将总走线电容降低 45% 。

 

总线电容增加的来源

总线电容的来源包括总线上的 IC、微带走线以及附近的信号走线和电源层。此外,在电路板较小或 I2C 走线靠近电路板边缘时,电容边缘效应也不容忽视。

I2C 线路附近的任何金属或电介质都会增加您的总电容,但在许多情况下,这种影响可以忽略不计。

 

微不足道的电容来源

寄生键合和封装电容不是您可以控制的。幸运的是,每条信号线大约只有 1-2 pF(有关详细信息,请参阅本文档)。换句话说,它不会成为您整个电路中的重要考虑因素。此 1-2 pF 电容包含在以下段落的估算值中。

电容的重要来源

电路中使用的IC

NXP规范列出了 10 pF 的“每个 I/O 引脚的电容”。您添加的每个 IC 都会使总总线电容增加大约 10 pF(请参阅特定 IC 的数据表),然后您还必须考虑与将 IC 连接到总线的走线相关的电容。

 

铜线电容

当我们在这里说“铜走线电容”时,我们指的是接地电介质上的单条走线。如果 IC 彼此相距较远,或者I 2 C总线上有多个 IC,则 I 2 C信号线和地平面之间的电容耦合可能很重要。对于长距离运行,将 I 2 C 线彼此分开几个迹线宽度(或将 Vdd 和接地迹线放置在信号迹线之间)以减少两条信号线之间的电容耦合效应。

要计算信号与接地层(或电源层)之间的电容耦合,请使用以下等式,其中考虑了边缘效应。

 

C[pf] \approx \frac{0.264\tfrac{[pf]}{[mm]}(\epsilon_r+1.41)}{Ln\left(\frac{0.598\tfrac{1}{[mm]} \cdot \text{层高}} {0.08\tfrac{1}{[mm]} \cdot \text{迹线宽度}+0.1\tfrac{1}{[mm]}\cdot \text{迹线厚度}} \右)}

修改自 Johnson 和 Graham 的“高速数字设计”

 

 

 
 

下面的计算是四层堆叠的相邻层的示例计算,具有以下实际参数:εFR4 = 4.5,走线宽度 = 0.13 mm,层高 = 0.23 mm,走线厚度 = 0.035 mm。

 

C[pf]0.264[pf][cm](4.5+1.41)Ln(0.5981[mm] cdot0.23[mm]0.081[mm]?0.13[mm]+0.11[mm]?0.035 [mm])=0.68pFcm  

 

孔径对微带线电容的影响

可以通过增加到地平面的距离来减小电容——这是通过将信号迹线放置在与地平面相隔一层或多层的层上来实现的。也可以从平面层去除铜,以便在迹线下方产生铜空隙。这个空隙被称为孔径。

 

 

那么这对整体电容有什么影响呢?如果我们使用与之前计算相同的参数,但在信号走线和地平面之间增加 0.965 mm,我们可以将电容降低约 40%。如果您的 PCB 布局允许在信号迹线正下方有一个适当大的孔径,那么这对于具有很长迹线的设计来说可能是值得改进的。

 

C[pf] \approx \frac{0.264\tfrac{[pf]}{[cm]}(4.5+1.41)}{Ln\left(\frac{0.598\tfrac{1}{[mm]}\左 (0.23\text{[mm]}+0.035 \text{[mm]}+0.93\text{[mm]}\right )} {0.08\tfrac{1}{[mm]} \cdot 0.13\text{ [mm]}+0.1\tfrac{1}{[mm]}\cdot 0.035\text{[mm]}}\right)}=0.40\tfrac{pF}{cm}

电阻器

 

两个要求决定了上拉电阻。首先,上拉电阻必须将电流限制在不超过输出晶体管漏极电流的水平。其次,电阻器必须防止 SCL 或 SDA 信号处于逻辑低状态时消耗过多的电流。实际上,电流消耗是主要考虑因素,因为通常不需要使用小到足以危及输出晶体管的电阻。

 

例如,假设我们有一条 3.3 V 总线并希望将电流限制在 3 mA。

 

Rmin=VbusIMax=3.3[V]3[ma]=1.1k\欧

 

如果我们假设时钟和数据线都有 50% 的占空比,则功耗为

 

P=0.5?2?V2R=(3.3[V])21100Ω10[mW]

 

低值上拉电阻产生更快的转换和“更尖锐”的波,但它们也会导致更高的功耗。

 

计算上拉电阻的值

为确保功能正常,设计人员必须确保满足 I 2 C 设备的时序要求。

 

上图说明了与上升时间、下降时间、处于逻辑低状态的时间和处于逻辑高状态的时间相对应的 I 2 C 事务段这些时序参数的适当值通常在设备的数据表中指明。该图未按比例绘制。

 

高值上拉电阻器会增加到逻辑高阈值的转换时间,这可能会阻止 IC 正常工作。


逻辑高电平上升时间过长,未达到逻辑高电平阈值。因此,该总线上的设备将无法通信。

计算上拉电阻的值需要知道上升时间要求。然后,使用指数函数对曲线建模,找出在通过逻辑低阈值电压后达到逻辑高阈值电压所需的时间。

 

 

上升曲线由如下所示的指数函数给出。要求解上升时间,请从达到逻辑低阈值的时间中减去达到逻辑高阈值所需的时间。该方程式提供与水平轴(时间)相关的垂直轴(电压)。在确定时间差之前,有必要重新排列方程以求解时间。

 

V逻辑高=Vcc(1?e(?t逻辑高R上拉?CBus))

tLogic High=CBus?RPull Up?Ln(VCCVCC?VLogic High)

初始方程式用于求解达到逻辑高阈值电压的时间

 

VLogic Low=Vcc(1?e(?tLogic LowRPull Up?CBus))

tLogic Low=CBus?RPull Up?Ln(VCCVCC?VLogic Low)

初始方程式用于求解达到逻辑低阈值电压的时间

 

重新排列以解决 $$R_{\text{Pull Up}}$$ 它变成RPull Up and it becomes

 

RPull Up Max=tRise TimeLn(Vcc?VLogic LowVcc?VLogic High)?Cbus

 

这是用于计算上拉电阻的终形式;Rise Time、V Logic Low和 V Logic High在数据表中给出,C Bus是根据您的电路特性估算的。选择 t上升时间= 150 ns、V逻辑低= 0.5 V 和 V逻辑高= 1.2 V的任意值,并假设总线电容为 150 pF,我们有以下内容:

 

RPull Up Max=1.5?10?9[s]Ln(3.3[V]?0.5[V]3.3[V]?1.2[V])3500Ω

 

概括

I2C 上拉电阻的值必须足够大以减少不必要的电流消耗,并且必须足够小以产生可接受的上升时间。本文中提供的计算可以帮助您找到合适的值,但如果您真的想优化 I2C 总线,您可能需要使用示波器测量信号(如果可能,请使用低电容探头)并调整上拉电阻,直到达到所需的时序特性。

上一篇:SCR系统加热控制
下一篇:DSP 中的基本信号操作:定值信号和交变信号

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料