I2C为什么需要外接上拉电阻?针对电路进行剖析

I2C为什么需要外接上拉电阻?针对电路进行剖析

文章目录

1.I²C的输出模式2.电路图分析(非IIC标准电路)2.1.MOS管断开的情况下的电路分析:2.2.MOS管闭合的情况下的电路分析:

3.如何选择上拉电阻的阻值

1.I²C的输出模式

I²C 的 SDA、SCL 线都是 开漏/开集电极输出(open-drain/open-collector)

开漏输出 : MCU内部通常集成了MOSFET来控制IO口的开关,对于开漏输出,MOSFET可以开启,控制引脚接地,为低电平,但是如果关闭则会导致引脚悬空(此时引脚的电平进入不确定状态,很显然这样不可靠),此时内部又加上了一个几十K到几百K的上拉电阻,形成弱上拉(保证MOSFET关闭状态下默认高电平),此时电流很小,这只适合“保持默认高电平”,不能满足 I²C 高速通信对上升沿的要求。

如果需要外接上拉电阻,建议关闭MCU或者电子器件的内部上拉

2.电路图分析(非IIC标准电路)

图片里面没有表示出MCU内部弱上拉的电路图,但是有外部上拉电路图,并且连接一个电子器件,器件内部的阻抗必须远大于外接的上拉电阻,这样能够极大的减小3.3V流到节点的电流,减小电流就能减小电压损耗,此时就可以保证节点的电压保持在接近3.3V,然后作为高阻输入,R2通常是远大于R1的,R2是让输入保持默认高阻状态,即芯片默认关闭,但是R1 才是保证 IO 能真正输出高电平的关键,所以外接一个上拉电阻用来保证能够上拉输出。

上拉电阻越小 ,上升沿越快(好处),但功耗更大(坏处)。

上拉电阻越大,上升沿越慢,功耗降低,但是如果是IIC快速通讯会导致上升沿速度太慢,信号畸形,通信错误

当内部MOS管打开后,有一个导通电阻(图中未标出),这个导通电阻非常小,通常为几毫欧到几欧,远小于R2,节点通过低电阻直接接到地,此时电压输出为0,即没有电压经过R2,电子期间不会激活

R2就是为了维持输入的高阻态,保证在没有外部驱动的情况下关闭,保持引脚为低电平,即高电平输入来激活电子器件

2.1.MOS管断开的情况下的电路分析:

VCC — R1 — 节点 — R2 — GND(MOS 断开不参与)这就是一个电阻分压网络,电流为:

I

=

V

C

C

R

1

+

R

2

I= \frac {V_ {CC}}{R_ {1}+R_ {2}}

I=R1​+R2​VCC​​节点电压(EN脚电压)为:

V

E

N

=

V

C

C

R

2

R

1

+

R

2

V_{EN} = V_{CC} \cdot \frac{R_2}{R_1 + R_2}

VEN​=VCC​⋅R1​+R2​R2​​为了让 V_BE接近V_CC,需要 R2≫R1:

例:

𝑉

𝐶

𝐶

=

3.3

V

,

𝑅

1

=

10

𝑘

Ω

,

𝑅

2

=

100

𝑘

Ω

V

C

C

=

3.3

V

,

R

1

=

10

k

Ω

,

R

2

=

100

k

Ω

例:𝑉𝐶𝐶=3.3V,𝑅1=10𝑘Ω,𝑅2=100𝑘Ω,VCC​=3.3V,R1​=10kΩ,R2​=100kΩ

例:VCC=3.3V,R1=10kΩ,R2=100kΩ,VCC​=3.3V,R1​=10kΩ,R2​=100kΩ

I

=

3.3

110

k

30

μ

A

,

V

E

N

=

3.3

100

110

3.0

V

I = \frac{3.3}{110k} \approx 30\ \mu A,\quad V_{EN} = 3.3 \cdot \frac{100}{110} \approx 3.0\ \text{V}

I=110k3.3​≈30 μA,VEN​=3.3⋅110100​≈3.0 V上拉还要“克服”EN脚的 输入漏电流(设为 I_leak),MOS 关断时,会有一股很小的直流电流从 VCC 经 R1 → 节点 → R2 → GND 流过,这股电流在节点上形成的分压把节点“抬高”,所以上拉电阻需要考虑到漏电流和抬升的电压

V

E

N

=

V

C

C

I

p

u

l

l

R

1

,

I

p

u

l

l

=

I

l

e

a

k

+

V

E

N

R

2

V_{EN} = V_{CC} - I_{pull} \cdot R_1,\quad I_{pull} = I_{leak} + \frac{V_{EN}}{R_2}

VEN​=VCC​−Ipull​⋅R1​,Ipull​=Ileak​+R2​VEN​​只要 I_leak 很小、R_2很大,I_pull 就很小,V_EN就会非常接近V_CC。

2.2.MOS管闭合的情况下的电路分析:

VCC — R1 — 节点 — MOS(on) — GND 电流几乎不流向R2,导致R2附近电压全为0大多数MOS闭环导通的电阻会远小于外接上拉电阻,节点电压结算:

V

E

N

=

V

C

C

R

D

S

(

o

n

)

R

1

+

R

D

S

(

o

n

)

0

V_{EN} = V_{CC} \cdot \frac{R_{DS(on)}}{R_1 + R_{DS(on)}} \approx 0

VEN​=VCC​⋅R1​+RDS(on)​RDS(on)​​≈0上拉电流:

I

=

V

C

C

R

1

+

R

D

S

(

o

n

)

V

C

C

R

1

I = \frac{V_{CC}}{R_1 + R_{DS(on)}} \approx \frac{V_{CC}}{R_1}

I=R1​+RDS(on)​VCC​​≈R1​VCC​​

R

1

=

10

k

Ω

,

R

D

S

(

o

n

)

=

50

Ω

V

E

N

16

mV

,

I

0.33

mA

R_1 = 10k\Omega , R_{DS(on)} = 50\Omega \Rightarrow V_{EN} \approx 16\ \text{mV},\ I \approx 0.33\ \text{mA}

R1​=10kΩ,RDS(on)​=50Ω⇒VEN​≈16 mV, I≈0.33 mA开漏只能“拉低”,不会主动拉高。没有 R1,MOS 关断时节点就是悬空(或只被 R2 往地拉)→ 得不到高电平。R2 的作用是“默认下拉,防误使能”;R1 的作用是“当 MOS 关断时提供上拉电流,把节点电压抬到高电平”。两者分工不同。

3.如何选择上拉电阻的阻值

低电平到高电平的转化在细分的时间刻度下并不是瞬间完成的,它需要有一个爬升的过程,而上拉电阻越大,爬升的越慢,上拉电阻越小,驱动能力越强,爬升的越快,在IIC标准中,在400KHZ的快速模式下,上升时间 t_r <= 300ns 电平上升波形图:

I²C 总线的信号线(SDA 和 SCL)会受到寄生电容的影响,并且影响高电平的上升速度,高电阻会影响电容的充电速度,这些寄生电容主要来源于:

引脚输入电容:每个设备的 I²C 引脚都会有一定的输入电容,通常为几 pF 到几十 pF。PCB 走线电容:印刷电路板上的走线也会引入电容,通常每厘米约为 1~2 pF。杜邦线电容:杜邦线的长度和材质会影响电容,通常每厘米约为 50~100 pF/m。 可以根据需要挂载的从机数量以及线束的长度,PCB走线的长度估算出总电容

上拉电阻和寄生电容形成一个 RC 电路,所以可以通过RC电路来计算电平上升时间

t

r

2.2

R

p

C

t

o

t

a

l

t r ​ ≈2.2⋅R p ​ ⋅C total ​

tr​≈2.2⋅Rp​⋅Ctotal​

R

p

​是上拉电阻;

C

t

o

t

a

l

​是总线电容。

R p ​ 是上拉电阻; C total ​ 是总线电容。

Rp​是上拉电阻;Ctotal​是总线电容。 根据公式来计算所需的上拉电阻

一般建议2.7K到4.7k之间能满足20cm走线的400KHZ高速通信

示例电路:

相关推荐

钉钉认证流程
365bet足球比分

钉钉认证流程

📅 08-12 👁️ 319
于谦 (相声演员)
bet3365也可以

于谦 (相声演员)

📅 07-23 👁️ 9743
大主宰中的牧尘在灵路中得到的黑纸有什么用
Best365官网登陆

大主宰中的牧尘在灵路中得到的黑纸有什么用

📅 08-07 👁️ 2639