龙空技术网

硬件必备(一)IIC通信为什么要开漏输出?

浅笑养家 1040

前言:

此时同学们对“iic模式”大致比较注重,我们都想要剖析一些“iic模式”的相关文章。那么小编也在网上网罗了一些对于“iic模式””的相关资讯,希望同学们能喜欢,小伙伴们快快来学习一下吧!

IIC作为硬件领域微控制器与外围电路之间通信使用最多的通信方式,作为硬件工程师,需要更加深入的了解,才能在面试硬件工程师岗位上游刃有余。网上一大堆讲解IIC通信知识,都比较基础,这里我就不多做介绍了,下面为大家深入介绍下IIC通信。

1、IIC为什么要开漏输出?

在说这个问题之前,我们先了解下IIC的具体功能和硬件引脚:

IIC硬件结构

IIC硬件引脚及功能(通常IIC通信只需要三根线,包括GND):

SCL(Serial clock line)是时钟线控制数据发送的时序,一般是由主机发送,主从共用一个时钟,从机可以有多个,单主机只能有一个。SDA(Serial data)是数据线,用来传输数据,可以双向传输

接下来,进入正题,IIC为什么要开漏输出

GPIO输出配置

GPIO输入配置

上图中微控制器GPIO输出一般有两种模式:推挽输出和开漏输出,其中推挽输出有两种输出状态:高电平或低电平,开漏输出有两种状态:低电平或高阻态。如果GPIO需要做输入,那么一定不允许高电平或低电平强输出的存在,这样才能准确判断输入信号的电平状态。

那么如果一个引脚需要同时具有输入输出功能,就需要输入的时候能作为高阻态,尽量不影响输入信号,需要输出的时候需要输出高低电平两种状态,所以IIC的SDA引脚需要开漏输出再加上外部上拉电阻实现高低电平输出。如果是推挽输出,只有强制高低电平两种状态,那么在作为输入的时候,其状态也一直维持之前输出配置的状态,输入信号就没意义。

所以通过上面的分析来看,IIC通信的SCL引脚可以配置为推挽输出,因为他是单向传输(只是从主机传到从机),但是SDA必须配置为开漏输出,因为他是双向传输,需要同时具备输入输出的功能。

2、IIC为什么需要上拉

前面也讲述了IIC的配置,需要配置为开漏输出,下图中,开漏输出只有两种状态:低电平和高阻态,要正常工作,需要同时具备高低电平输出能力,那么就需要上拉电阻配合输出高低电平,所以IIC一般都需要上拉电阻。

IIC的上拉电阻一般有三种选择1.5K,2.2K,4.7K, 电阻的大小对IIC的时序有一定影响,对信号的上升时间和下降时间也有影响。

I2C上拉电阻确定有一个计算公式:

Rmin={Vdd(min)-0.4V}/3mA

Rmax=(T/0.874) *c, T=1us 100KHz, T=0.3us 400KHz

C是Bus capacitance,IIC通信速率达到400KHz总线电容一般小于200pF,IIC通信速率达到100KHz总线电容一般小于400pF。

Rp最大值由总线最大容限(Cbmax)决定,Rp最小值由Vio与上拉驱动电流 (一般最大3mA)决定。

关注我,硬件工程师进阶之路。

标签: #iic模式