h1_key

当前位置:首页 >新闻资讯 > 技术文章>I2C上拉电阻应用解析
I2C上拉电阻应用解析
2023-05-30 2237次

  I2C(Inter-Integrated Circuit),中文描述为集成电路总线。它是一种串行通信总线,使用多主从架构,是由飞利浦公司在80年代初设计的,方便了主板、嵌入式系统或手机与周边设备组件之间的通讯。由于其简单性,它被广泛用于微控制器与传感器阵列、显示器、IoT设备、EEPROM等之间的通信。

  

 

  I2C主要特点如下:

  ●只需要两条总线;

  ●没有严格的波特率要求,例如使用RS232,主设备生成总线时钟;

  ●所有组件之间都存在简单的主/从关系,连接到总线的每个设备均可通过唯一地址进行软件寻址;

  ●I2C是真正的多主设备总线,可提供仲裁和冲突检测;

  ●传输速度分为四种模式:

  1.标准模式:Standard Mode = 100Kbps

  2.快速模式:Fast Mode = 400Kbps

  3.高速模式:High speed mode = 3.4Mbps

  4.超快速模式:Ultra fast mode = 5Mbps

  5.最大主设备数:无限制;

  ●最大从机数:理论上是127。


  对I2C知识做简单回顾后,下面我们分九个部分,对I2C上拉电阻的应用做详细的讲解与案例分析。首先带大家了解下I2C总线的硬件架构。

  I2C总线硬件架构

  I2C协议仅需要SDA和SCL两个引脚。SDA是串行数据线的缩写,而SCL是串行时钟线的缩写。这两条数据线需要接上拉电阻。设备间的连接如下图所示:

  

 

  使用I2C,可以将多个从机(Slave)连接到单个主设备(Master)(一对多通信),并且还可以有多个主设备(Master)控制一个或多个从机(Slave)(多对多通信)。

  I2C总线(SDA,SCL)内部都使用漏极开路驱动器(开漏驱动),因此SDA和SCL可以被拉低为低电平,但是不能被驱动为高电平,所以每条线上都要使用一个上拉电阻,默认情况下将其保持在高电平。

  

 

  I2C的上拉电阻可以是1.5K,2.2K,4.7K,电阻的大小对时序有一定影响,对信号的上升时间和下降时间也有影响,一般接1.5K或2.2K。

  上拉电阻的值取决于许多因素,确定I2C上拉电阻可以通过下面的公式计算出来:

  强上拉(小电阻)是用来防止芯片上的I2C引脚被驱动为低电平。可以被芯片的输入缓冲器读取为有效逻辑低电平的VOL电平决定了最小上拉电阻[RP(min)]。RP(min)由VCC、VOL和IOL组成的如下公式计算出来:

  

 

  由于I2C标准定义了上升时间标准,最大上拉电阻受到总线容值(Cb)的限制。如果上拉电阻值过高,I2C总线在被拉低之前可能不会上升到逻辑高。RC电路对在时间t=0开始的幅度为VCC的电压阶跃的响应由时间常数RC表征。电压波形可以通过以下三个公式计算出来:

  

 

  For VIH = 0.7 x VCC:

  

 

  For VIL = 0.3 x VCC:

  

 

  I2C总线的上升时间可以通过下面公式推算出来:

  

 

  最大上拉电阻是一个由最大上升时间为其中最主要一个因素构成的公式,请参考以下公式:

  

 

  其中:

  VOL 是逻辑低电压;

  IOL 是逻辑低电流;

  tr 是信号的最大上升时间;

  Cb 是总线电容;

  具体如下表所示:

  

 

  这里不难发现在做电阻选择时要满足以下几个条件:

  ●灌电流最大值为3mA;

  ●I2C总线规范和用户手册还为低电平输出电压设置了最大值为0.4V。


  所以根据上述公式可以计算,对于5V的电源,每个上拉电阻阻值至少1.53KΩ,而对于3.3V的电源,每个电阻阻值至少967Ω。如果觉得计算电阻值比较麻烦,也可以使用典型值4.7KΩ。

  最终在调试的时候,当测量SDA或SCL信号并且逻辑Low上的电压高于0.4V时,我们就可以知道灌电流太高了。如下图所示:

  

 

当然,这并不意味着每当灌电流超过3mA时,设备就会立即停止工作。但是,在操作超出其规格的设备时应始终小心,因为它可能导致通信故障,缩短其使用寿命甚至永久损坏设备。从硬件架构可以看出I2C的上拉电阻是必须的,那上拉电阻的阻值应该如何确定呢?带着这个疑问我们一起通过下面的内容寻找下答案。

 

  I2C总线上拉电阻的阻值确认

  由于I2C接口采用Open Drain机制,器件本身只能输出低电平,无法主动输出高电平,只能通过外部上拉电阻RP将信号线拉至高电平。因此I2C总线上的上拉电阻是必须的。

  

 

 

  RP不宜过小,一般不低于1KΩ

  一般IO端口的驱动能力在2mA~4mA量级。如果RP阻值过小,VDD灌入端口的电流将较大,这导致端口输出的低电平值增大(I2C协议规定,端口输出低电平的最高允许值为0.4V),如果灌入端口的电流过大,还可能损坏端口。故通常上拉电阻应选取不低于1KΩ的电阻(当VDD=3V时,灌入电流不超过3mA)。

  

  RP不宜过大,一般不高于10KΩ

  由于端口输出高电平是通过RP实现的,线上电平从低到高变化时,电源通过RP对线上负载电容CL充电,这需要一定的时间,即上升时间。端口信号的上升时间可近似用充电时间常数RPCL乘积表示。

  信号线负载电容(对地)由多方面组成,包括器件引脚、PCB信号线、连接器等。如果信号线上挂有多个器件,负载电容也会增大。比如总线规定,对应400Kbps速率应用,信号上升时间应小于300ns,假设线上CL为20PF,可计算出对应的RP值为15KΩ。

  如果RC充电时间常数过大,将使得信号上升沿变化缓慢,达不到数据传输的要求。因此一般应用中选取的都是几KΩ量级的上拉电阻,比如都选取4.7K的电阻。

  小阻值的RP电阻增大了端口Sink电流,故在可能的情况下,RP取值应稍大一点,以减少耗电。另外,通常情况下,SDA,SCL两条线上的上拉电阻取值是一致的,并上拉到同一电源上。

  由于信号线负载电容对设计会产生较大影响,我们单独用一节来介绍下I2C总线寄生电容的具体组成与注意事项。

  I2C总线寄生电容

  I2C总线寄生电容主要有master寄生电容、slave寄生电容和PCB走线电容组成,如下图所示:

  

 

  CBUS = CPCB + CMASTER + CSLAVE0 + CSLAVE1 + CSLAVE2 + ∙∙∙∙∙

  这些寄生电容共同组成I2C总线的电容,I2C主机和从机越多,I2C总线上的电容就越大。根据相关文档,不同的I2C通信模式对寄生电容的要求不同,具体如下表所示:

  

 

  正是因为这个寄生电容的存在,导致I2C总线上拉电阻的选择会受到限制。另外在一些特殊应用中还需要保证I2C较强的抗干扰能力,下面我们就来看下如何通过设计来实现较强抗干扰能力。

  I2C总线布线与抗干扰设计

  I2C信号线属于低速控制线,在手机PCB设计时,按通常的控制IO对待即可,无需做特别的保护设计,一般不用担心受到噪声源干扰。

  但在一些特定的情况下,比如折叠、滑盖机型中,I2C的两根信号线需要通过转轴或滑轨处的FPC,此时由于信号路径比较长,距离天线比较近,而且Open Drain的输出级对地阻抗大,对干扰比较敏感,因此比较容易受到RF信号源的干扰。在这种情况下,就应适当注意对I2C信号线的保护。比如I2C两条信号线(SDA,SCL)等长度地平行走线,两边加地线进行保护,避免临近层出现高速信号线等。

  上拉电阻应安置在OD输出端附近。当I2C总线上主从器件(Master & Slave)两端均为OD输出时,电阻放置在信号路径的中间位置。当主设备端是软件模拟时序,而从设备是OD输出时,应将电阻安置在靠近从设备的位置。

  I2C协议还定义了串联在SDA、SCL线上电阻Rs。该电阻的作用是有效抑制总线上的干扰脉冲进入从设备,提高可靠性。这个电阻的选择一般在100~200Ω左右。当然,这个电阻并不是必须的,在恶劣噪声环境中,可以选用。

  

 

  比如常用的FM接收模块或者Capsense触摸感应功能块,都是通过I2C接口控制的。I2C接口信号从处理器出发,经过PCB上的信号路径,进入上述电路单元。I2C信号线上载有一定干扰,这种干扰虽然幅度并不很大,但还是会影响敏感的FM接收模块或Capsense触摸感应功能块。此时,可以通过在靠近FM模块或触摸感应模块的I2C信号线上串接Rs电阻,即可有效降低干扰的影响。此外,上拉电阻端的电源也要进行退耦处理。

  上拉电阻的阻值大小会影响上升沿爬升时间,从而影响I2C的通信频率,下面我们来具体看下会产生哪些具体影响。

  I2C总线上拉电阻对通信频率的影响

  I2C总线通信,无非就是传递高低电平,针对于高电平或者低电平变化,那么需要分别分析上拉电阻的影响。

  1、I2C总线电平由低到高时

  如下图所示:

  

 

  由于I2C器件的硬件结构为Open Drain,所以当I2C总线电平由低到高时,I2C器件(同一时刻,可以是I2C主机,也可以是I2C从机)释放总线电平,即内部的MOSFET关闭,如此,Vcc经过上拉电阻对I2C总线寄生电容充电,直至到达Vcc。时间常数即为RC网络。

  2、I2C总线电平由高到低时

  如下图所示:

  

 

  当I2C总线电平由高到低时,I2C器件(同一时刻,可以是I2C主机,也可以是I2C从机)拉低I2C总线,MOSFET导通,所以I2C总线的寄生电容通过MOSFET的导通电阻放电,由于导通电阻往往很小,所以放电速度很快。

  3、I2C总线的上升下降时间对比

  如下图所示,为I2C总线上升沿和下降沿的曲线,可以看出上升时间远远大于下降时间,也就是说I2C总线的通信频率受上升时间影响最大,进一步,I2C总线上拉电阻影响I2C的通信频率,即上拉电阻阻值越大,就越限制I2C的通信频率。

  

 

  另外,根据电容的充放电公式,可以得出以下公式,确定I2C总线上拉电阻的最大值。

  

 

因此,根据给定的I2C通信模式,可以确定I2C总线上拉电阻阻值的最大值。下面我们就来看下如何确定最小值呢?

 

  I2C总线上拉电阻对VOL的影响

  如下图所示,在I2C主机发出低电平时,内部的MOSFET导通,导通电阻Rdson与I2C总线上拉电阻Rpullup组成电阻网络。根据戴维南定理,如果上拉电阻Rpullup阻值越小,则Rdson上的电压VOL就越大。显然,如果VOL大于某一特定值,I2C从机就无法监测出I2C总线上的低电平。另外,如果上拉电阻Rpullup阻值过小,系统功耗也会增加。

  

 

  所以,通过这个分析可以确定I2C总线上拉电阻的最小值。

  

 

以上我们讲的是硬件实现的I2C总线方式,现实中还会存在软件实现I2C的应用,下面我们就来看下在软件I2C实现中上拉电阻如何应用。

 

  I2C总线软件模拟中上拉电阻的应用

  由于一般的I2C应用速率并不高(400Kbps),使用处理器的IO口模拟I2C波形,完全可以胜任(处理器一般担任Master,占有I2C通信的控制权,无需担心随机的I2C通信服务中断其他任务的执行)。

  处理器分配给I2C任务的IO口,要求可以输出高低电平,还能配置为输入端口。处理器根据总线规范以及从设备的时序要求,利用2条IO信号线,模拟I2C接口时序波形,进行I2C通信。

  处理器发送数据时,通过IO口输出高电平,上升时间基本与外部上拉电阻阻值无关,且比用外部上拉电阻上拉到高电平快很多。处理器在接受数据时,即便上拉电阻阻值选的大一些,从设备输出数据的波形上升沿缓慢,但由于处理器使用软件采样的而非硬件采样,因此,对数据传输的结果并不影响。也就是说,使用IO口模拟I2C时序时,上拉电阻阻值可以适当选的大一些。

  需要指出的是,使用软件模拟最多只能完成单Master的应用,对于多Master应用,由于需要进行总线控制权的仲裁管理,使用软件模拟的方法很难完成。

  I2C总线空闲的时候,两条信号线应该维持高电平。否则,上拉电阻上会有耗电。特别是在上电过程中,IO线上电平也应保持在高电平状态。也就是说:当Master的I2C使用的是IO软件模拟时,一定要保证该两个IO上电默认均为输入(或高阻)或者输出高电平,切不可默认为输出低电平。IO默认为输入时,可以通过外部上拉电阻将I2C信号线拉至高电平。

  在I2C实际应用中还会遇到类似电源倒灌的问题,它会影响I2C的通信可靠性,严重的会影响到芯片工作,下面我们就来重点看下如何规避此类问题。

  I2C总线应用中上拉电阻电源问题

  在部分应用中,还存在主从设备以及上拉电阻电源不一致的情况,比如Camera模组。在很多设计方案中,Camera模组不工作时,并不是进入Power Down模式,而是直接关闭模组供电VDDS。此时,处理器与模组相互连接的所有信号线都应该进入高阻态,否则就会有电流漏入模组,而对于此时的I2C控制信号线来说,由于上拉电阻的存在,必须关断上拉电阻电源VDDP。如果上拉电阻使用的是系统电源VDDM(VDDP=VDDM),无法关闭,就会有漏电流进入模组,因此这种情况下,应该使用VDDS作为上拉电阻电源(VDDP=VDDS),这样上拉电阻电源与Slave电源即可同时关闭,切断了漏电路径。

  另外需要注意的是,在上述应用实例中选择的IO,应该选取上电默认为输入(或高阻)才行。

  

 

  根据上述几节的分析,可以很简单的计算出I2C总线上拉电阻的阻值范围。下面我们通过一个实际案例来回顾下上述内容。

  I2C总线上拉电阻阻值计算实例

  例如,在I2C Fast mode下,I2C总线电容Cb = 200pF,总线电压为Vcc = 3.3V,计算上拉电阻阻值。

  

 

  因此,可以得到I2C总线上拉电阻的范围,结合系统功耗和通信速度,最终确定上拉电阻的阻值。另外,某些情况下的计算会出现RP(min)大于RP(max)的情况,这个时候就需要考虑降低I2C总线电容,解决办法就是增加I2C总线中继器(Hub,Repeater,Buffer)。

 

  I2C碰到的各种问题,多半是上拉电阻或者控制器时钟的问题。没上拉电阻或者上拉电阻过大,都会导致不稳定而出现寻址不到的问题。

  本质上来讲,I2C总线电容决定上拉电阻的最大值,I2C器件open-drain接口导通电阻决定上拉电阻的最小值。

  

  I2C的上拉电阻选择对于所有设计I2C接口的芯片来说很重要!

  例如我们电科星拓已量产的I2C接口芯片INTL95XX与INTL96XX系列,以及留有I2C接口访问芯片内部寄存器的芯片,都很注重这个问题。一旦在实际应用中遇到类似的问题,要从本质上考虑解决这些问题。下面通过我们INTL9555(16路I2C和SMBus GPIO扩展器)的应用框图简单看下:

  

 

 

  • 低压MOS在光伏优化器(MPPT)上的应用-REASUNOS瑞森半导体
  • 低压MOS在光伏优化器(MPPT)上的应用-REASUNOS瑞森半导体:光伏优化器,英名简称MPPT,又称光伏功率优化器和组件功率优化器,是一种智能设备,旨在提高光伏组件的能源效率和稳定性。光伏优化器(MPPT)的作用: 光伏优化器用于多个光伏组件串联形成的组件串中,用来实时追踪到单块组件的最大功率点。来解决因阴影遮挡、组件朝向差异或组件衰减不一致所造成的光伏系统发电量降低的问题。
    2024-04-18 25次
  • 低压MOS在新能源园林机械上的应用-REASUNOS瑞森半导体
  • 在欧美地区,以锂电池为动力源的新能源园林机械迅速地替代着以往的燃油和交流电动力机器。而中国也将迎来一场风暴式革命。园林工具是人类绿化景观的养护设备,是以养护草坪、绿篱、保护花草、树木为作业对象的,代替大部分手工劳动为代表的机械化工具。如:打草机、 链锯、修枝机、割草机等。
    2024-03-29 50次
  • 低压MOS在无人机上的应用-REASUNOS瑞森半导体
  • 低压MOS在无人机上的应用-REASUNOS瑞森半导体,无人机动力系统中的电机,俗称“马达”,是无人机的动力来源,无人机通过改变电机的转速来改变无人机的飞行状态。即改变每个电机的速度,使得无人机能够盘旋空中,上升或下降,或向各个方向移动。
    2024-03-21 55次
  • 碳化硅MOS超高压MOS在电焊机上的应用-REASUNOS瑞森半导体
  • 电焊机是指为焊接提供一定特性的电源的电器,其工作原理:在接触到焊接物与被焊接物时,发生短路,短路产生高温电弧,将焊接物熔化,使得它们相互融合。电焊机分为家用焊机和工业焊机。
    2024-03-14 60次
  • 低压MOS在步进电机驱动器上的应用-REASUNOS瑞森半导体
  • 低压MOS在步进电机驱动器上的应用-REASUNOS瑞森半导体,步进电机驱动器是一种用于控制步进电机运动的装置,它是将控制信号转换成步进电机可以识别的控制电压或电流的电路。它在工业自动化领域有着广泛的应用,如机器人、印刷机、木工机床、喷绘机等。步进电机驱动器的组成结构主要由以下部分
    2024-03-08 88次

    万联芯微信公众号

    元器件现货+BOM配单+PCBA制造平台
    关注公众号,优惠活动早知道!
    10s
    温馨提示:
    订单商品问题请移至我的售后服务提交售后申请,其他需投诉问题可移至我的投诉提交,我们将在第一时间给您答复
    返回顶部