加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

技术 | I2C 子系统(二)

2022/05/26
1560
阅读需 7 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2、I2C Architecture

I2C 采用的 GPIO 一般为开漏模式,支持线与功能,但是开漏模式无法输出高电平,所以需要外部上拉。Vdd 可以采用 5V、3.3V、1.8V 等,电源电压不同,上拉电阻阻值也不同。

一般总线上认为,低于0.3Vdd为低电平,高于0.7Vdd为高电平。

推挽结构和开漏结构

推挽结构:使用两个三极管MOSFET,以推挽方式存在于电路中。电路工作时,两只对称的开关管每次只有一个导通,所以导通损耗小、效率高。既可以向负载灌电流,也可以从负载抽取电流。推拉式输出级既提高电路的负载能力,又提高开关速度。

 

图中上面是 NPN 型三极管,下面是 PNP 型三极管。分别有以下两种情况:

输出高电平:向负载灌电流。

 

输出低电平:从负载拉电流。

 

三极管和 MOS 管效果类似,不赘述。

开漏结构(OD):对比推挽结构,开漏结构只有一个三极管或者MOS管

之所以叫开漏,是因为MOS管分为三极:源极、栅极、漏极。漏极开路输出,所以叫开漏;如果是三极管:基极、集电极、发射极,集电极开路,所以叫开集输出(OC)。

开集输出(OC),NPN 三极管:

 

这个结构很好分析:Vin 高电平,三极管导通,对外输出低电平,外部被直接拉到低。Vin 低电平,集电极(C)开路,输出电平状态由外部决定。

 

以上分析均采用三极管,MOS管类似。

因此,推挽结构可以输出高低电平。开漏输出只能输出低电平,高电平由外部电路决定。

对比总结如下:

 

电平跳变速度,推挽输出由CPU控制,高低电平跳变速度快(0->1),开漏输出由外部上拉电阻决定,上拉电阻小,反应速度快,从低电平到高电平跳变速度就快,但电阻小电流就大,功耗就高,反之亦然。

所以开漏输出的外部上拉电阻要兼顾速度和功耗。上拉电阻小,信号边沿陡峭,信号好,但是功耗高。

电平转换:推挽输出输出的高低电平只有0和Vdd,开漏输出的高电平由外部上拉电阻决定,多少V都可以,只要不超过MOS管击穿电压

线与功能

线与:所有 GPIO 输出高就是高,只要有一个输出低,整条线上面的都是低,这就是“与”的意思。

推挽结构下,两个GPIO口连接到一根线上,假如左边的PMOS导通,右边的NMOS导通,Vdd就会通过两个MOS管直接接地,由于MOS管导通电阻不大,会导致电流很大,直接损坏这两个GPIO口,因此,推挽输出不支持线与。

 

推挽结构在这种情况下会损坏GPIO口。

开漏:假如很多GPIO是开漏结构,接到了一根线。开漏结构输出的高电平靠外部上拉,假如有一个GPIO接地,那么电流会通过上拉电阻流进GPIO口接地,因为有上拉电阻的存在,所以不会损坏GPIO口。

线与,是 I2C 协议的基础!线与:当总线上只要有一个设备输出低电平,整条总线便处于低电平状态,这时候总线被称为占用状态。

 

上拉电阻计算

1、上拉电阻过小,电流大,端口低电平 level 增大。

2、上拉电阻过大,上升沿时间增大,方波可能会变成三角波

因此计算出一个精确的上拉电阻阻值是非常重要的。计算上拉电阻的阻值,有明确计算公式:

最大电阻和上升沿时间 tr 、总线电容 Cb 、标准上升沿时间 0.8473 有关。

最小电阻和电源Vdd电压、GPIO口自己最大输出电压 Vol、 GPIO口自己最大电流 Vol 有关。

查《I2C-bus specification and user manual.pdf》7.1节:

查《I2C-bus specification and user manual.pdf》表10:

1、标准模式:0~100KHz,上升沿时间 tr = 1us

2、快速模式:100~400KHz,上升沿时间 tr = 0.3us

3、高速模式:up to 3.4MHz,上升沿时间 tr = 0.12us

由此公式,假设 Vdd 是 1.8V 供电,Cb总线电容是200pF(虽然协议规定负载电容最大400pF,实际上超过200pF波形就很不好,我们以200pF来计算)

标准模式 :

快速模式:

高速模式:

最小电阻(Vdd越大,上拉电阻就要越大):

注意,高速模式下,电源电压一般采用 1.8 V,不会采用 3.3V,因为如果用 3.3V 计算你会发现最小电阻比最大电阻大。

采用合适的电源电压和合适的上拉电阻,才会让你的 I2C 传输信号最优。上拉电阻选小了,会使得总线电流大,端口输出的低电平会变大(一般低电平不允许超过0.4V)。上拉电阻选大了(RC),上升时间增大,方波变三角波。

大家在不同速率采用的电阻一般有以下几种:1.5K、2.2K、4.7K。

上拉电阻关系图

 

 

相关推荐

电子产业图谱

研究生在读,熟悉硬件、STM32单片机、嵌入式Linux。已收获小米、联发科、浙江大华、上能电气、英威腾、汇川技术、格力、富士康等大厂offer。在这里分享求职经验、嵌入式学习规划、考研、嵌入式Linux技术文章等。