I2C走线技巧、及上拉电阻、电源电压、总线电容三者间的函数关系__Charles_Chen的博客-程序员信息网_i2c走线要求

技术标签: IIC  I2C总线  

目录

I2C总线PCB布线注意事项:

博客其他文档可以学习:https://www.cnblogs.com/zhiqiang_zhang/

I2C总线线路的走线方式

I2C器件与I2C总线的接线方式

I2C总线连接规范

I2C总线中上拉电阻、电源电压、总线电容三者之间的函数关系

I2C上拉电阻 - raymon_tec - 博客园


 I2C总线PCB布线注意事项:


  1、在设计逻辑电路的印刷电路板的同时,其地线应该构成闭环的形式,这样可以有效的提高电路抗干扰能力。
  2、地线应尽量的粗。我们都知道,细的线电阻较大,电阻大的话会造成接地电位随着电流的变化而变化,这样的话会导致信号电平不稳,继而造成电路的抗干扰能力下降。
  3、要注意接地点的选择。当电路板上信号频率低于1MHz时,由于布线和元件之间的电磁感应影响很小,而接地电路形成的环流对干扰的影响较大,所以要采用一点接地,使其不形成回路。当电路板上信号频率高于10MHz时,由于布线的电感效应明显,地线阻抗变得很大,此时接地电路形成的环流就不再是主要的问题了。所以应采用多点接地,尽量降低地线阻抗。
  4、电源线的布置除了要根据电流的大小尽量加粗走线宽度外,在布线时还应使电源线、地线的走线方向与数据线的走线方身一致在布线工作的最后,用地线将电路板的底层没有走线的地方铺满,这些方法都有助于增强电路的抗干扰能力。
  5、数据线的宽度应尽可能地宽,以减小阻抗。
  6、应尽可能地减少过孔的数量。要知道电路板的一个过孔就会带来大约10pF的电容效应,在高频电路中这样干扰是很大的,所以要尽可能的减少过孔的数量,再者,过多的过孔还会造成电路板的机械强度大大的减弱。

博客其他文档可以学习:CNZHIQIANG - 博客园

I2C总线线路的走线方式

  一般来说走线必须使总线线路的串扰和干扰最小。
  如果PCB 板的总线长度或带状电缆超过10cm, 包括VDD 和VSS 线配线方式必须是:
  SDA _______________________
  VDD _______________________
  VSS _______________________
  SCL _______________________

  如果只有VSS 线那么配线方式必须是:
  SDA _______________________
  VSS _______________________
  SCL _______________________
  如果PCB 用了VSS层和VDD层,VDD和VSS 线可忽略。

  如果总线线路是双绞线,每条总线都可围着VSS 绕;另一种方法是SCL 线围着VSS 绕SDA 线围着VDD 绕。后者必须在两条双绞线的末端连接一个电容,使VDD 线和VSS 线解耦。

I2C总线一般再Master端和Slaver端都会加上拉电阻,PCB布局时将上拉电阻摆放在靠近Master端和Slaver端

I2C器件与I2C总线的接线方式

转自:I2C器件与I2C总线的接线方式-基础电子-维库电子市场网

I2C总线允许利用不同制造工艺生产的器件以及使用不同电源电压的器件进行通信。对于电源电压固定为5×(1±10%)V的器件,其逻辑电平规定如下:
 
  VILmax=1.5V(输入低电平);
 
  VIHmax=3V(输入高电平)。
 
  对于能够适应电源电压范围较宽的器件(如CMOS类),其逻辑电平规定如下:
 
  VILmax=0.3VDD(输入低电平);
 
  VIHmax=0.7VDD(输入高电平)。

  具有固定输入电平的I2C总线器件,可以分别单独连接适合自己的电源电压,但是公共的I2C总线上拉电阻必须连接到一个电压为5×(1±10%)V的电源上,如图1所示,其中VDD2~VDD4是由器件决定的。

  图1 固定输入电平器件与I2C器件的连接

  输入电平与电源电压相关联的I2C总线器件,往往也是工作电压范围较宽的一类器件,必须采用一个公共电源,I2C总线上拉电阻也连接到该电源上,如图2所示。

  图2 输入电平随电源而变的器件与I2C器件的连接

  当以上两种器件混合使用时,其中输入电平与电源电压相关联的一类I2C总线器件必须采用一个公共电源,I2C总线上拉电阻也连接到该电源上。其他I2C总线器件,可以分别单独使用适合自己的电源电压,如图3所示。其中VDD2和VDD的大小是由器件决定的,例如,可以是12V。

  图3 两类器件混合与I2C器件的连接

  另外,对于器件输入级的噪声容限还应该作以下要求:低电平噪声容限为0.1VDD,高电平噪声容限为0.2VDD。为了抑制由于环境电磁干扰在SDA和SCL线上引起的过高的尖脉冲,有必要在器件引脚上串接电阻RS。

I2C总线连接规范

I2C总线连接规范 - 百度文库

I2C总线中上拉电阻、电源电压、总线电容三者之间的函数关系

I2C总线中上拉电阻、电源电压、总线电容三者之间的函数关系 - 马小跳life - 博客园

I2C总线中上拉电阻、电源电压、总线电容三者之间的函数关系

在我们的实际设计中,需要清楚I2C的总线的两个特征:
1、串行数据SDA和串行时钟SCL线都是双向线路,通过一个电流源或上拉电阻Rp连接到正的电源电压+VDD,当总线空闲时这两条线路都是高电平。连接到总线的器件输出级必须是漏极开路或集电极开路才能执行线与的功能。I2C 总线上数据的传输位速率,在标准模式下可达100kbit/s,快速模式(F/S)下可达400kbit/s,高速模式(Hs)下可达3.4Mbit/s。


2、连接到相同总线的IC数量只受到总线的最大电容400pF限制。如果总线线路的负载电容升高,位速率将逐渐下降。
总线规定使用非标准电源电压,不遵从I2C 总线系统电平规定的器件,必须将输入电平连接到有上拉电阻Rp 的VDD电压。

其中的一些术语描述如下:
1,总线输入电平的定义:低电平噪声容限是0.1VDD,高电平噪声容限是0.2VDD。VOL定义为在漏极开路或集电极开路时,有3mA下拉电流时的低电平输出电压,最大值取VOLmax=0.4V,这个3mA是指定的最小下拉电流。在一定范围内,下拉电流越大,驱动能力越强。Rpmin是电源电压的函数,即电源电压越高,Rpmin值越高。Rpmax是负载电容的函数,总线电容越大,即负载越大,Rpmax越低。


2,总线电容是线路连接和管脚的总电容,规定总线输入电流的最大值是10uA,同时规定了上升时间tr的最大值,由于高电平要求0.2VDD的噪声容限,这个输入电流限制了Rp 的最大值。总的高电平输入电流是Rpmax的函数。在电源电压一定时,总的高电平输入电流越大,Rpmax越小。总线的负载电容和上拉电阻的值决定了信号的上升时间tr,规定
trmax=300ns。时间常数等于源端阻抗和总线电容的乘积,上拉电阻太大会造成时间常数过大,从而使上升沿的斜率变小,增大了总线上升时间。
 
小结:
1、上拉电阻Rp的值由三个参数决定:电源电压、总线电容和连接器件的数量(输入电流+漏电流)。


2、总线电容Cb是一条总线线路连接和管脚的总,单位是pF。由于规定了上升时间,这个电容限制了上拉电阻Rp 的最大值,而电源电压限制了上拉电阻Rp 的最小值,输出级在VOLmax=0.4V 时指定的最小下拉电流是3mA。
如果总线线路的电容负载升高,位速率将逐渐下降,总线的电容负载是400pF 时的,允许最大位速率是1.7Mbit/s 。总线电容负载在100pF~400pF 时时序参数必须呈线性增加。

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

(实验:接入200K上拉电阻,结果观察到信号上升时间增大,方波变成三角波)

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

Rmin={Vdd(min)-o.4V}/3mA

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

C是Bus capacitance

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

于是 Rpmin=5V/3mA≈1.7K(@Vio=5V)或者2.8V/3mA≈1K(@Vio=2.8V)

Rpmax的取值:参考周公的I2C总线规范中文版P33图39与P35图44

标准模式,100Kbps总线的负载最大容限<=400pF;快速模式,400Kbps总线的负载最大容限<=200pF,根据具体使用情况、目前的器件制造工艺、PCB的走线距离等因素以及标准的向下兼容性,设计中以快速模式为基础,即总线负载电容<200pF,也就是传输速度可以上到400Kbps是不成问题的。于是Rpmax可以取的范围是1.8K~7K @ Vio=5V对应50pF~200pF

根据Rpmin与Rpmax的限制范围,一般取5.1K @ Vio=5V , 负载容限的环境要求也容易达到。在2.8V系统中,console设计选3.3K,portable/handset等低供耗的设计选4.7K牺牲速度换取电池使用时间

总的来说:电源电压限制了上拉电阻的最小值 ; 负载电容(总线电容)限制了上拉电阻的最大值

补充:在I2c总线可以串连300欧姆电阻RS可以用于防止SDA和SCL线的高电压毛刺

      : I2c从设备的数量受总线电容,<=400pF的限制

I2C上拉电阻 - raymon_tec - 博客园

上拉电阻阻值的确定

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

 

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

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

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

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

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

如果RC充电时间常数过大,将使得信号上升沿变化缓慢,达不到数据传输的要求。

因此一般应用中选取的都是几KΩ量级的上拉电阻,比如都选取4K7的电阻。

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

PCB布局布线与抗干扰设计

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

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

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

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

             

 

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

软件模拟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接口采用开漏Open Drain机制,器件本身只能输出低电平,无法主动输出高电平,只能通过外部上拉电阻RP将信号线拉至高电平。因此I2C总线上的上拉电阻是必须的。

           

 

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

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

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

1.IIC的接口一般都是OD或者OC门,芯片内部无上拉电阻时,外部需要加上拉电阻才能输出高电平。

2.上拉电阻的最小值受电源电压限制,最大值受负载电容(总线电容)限制。计算公式为:

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

Rmax=(T/0.874) *C,T=1us 100KHz, T=0.3us 400KHz,C是Bus capacitance

3. RP一般不低于1KΩ。一般IO 端口的驱动能力在2~4mA量级,如果RP阻值过小,VDD灌入端口的电流较大,会导致MOS管不完全导通,由饱和状态变成放大状态,使端口输出的低电平值增大(IIC规定端口输出低电平的最高值为0.4V);同时灌入端口的电流过大,还可能损坏端口。

RP一般不高于10KΩ。由于端口输出高电平是通过RP实现的,线上电平从低到高变化时,电源通过RP对线上负载电容CL充电,这需要一定的时间,即上升时间。端口信号的上升时间可近似用充电时间常数RPCL乘积表示。如果RC充电时间常数过大,将使得信号上升沿变化缓慢,达不到数据传输的要求。

4.I2C总线的传输速率分为标准模式(100Kbit/s)和快速模式(400Kbit/s),负载的最大容限分别是400pF和200pF

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

6.IIC从设备的数量受总线电容<=400pF的限制

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

需要指出的是,使用软件模拟最多只能完成单Master的应用,对于多Master应用,由于需要进行总线控制权的仲裁管理,使用软件模拟的方法很难完成。
————————————————
版权声明:本文为CSDN博主「小杨同学呀」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42341666/article/details/108639046

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/chenhuanqiangnihao/article/details/114027867

智能推荐

TTSR再次理解,主要是针对Texture Transformer TT的全部过程的一个梳理_马鹏森的博客-程序员信息网_ttsr

Proposed Method因此,文章基于注意力机制,提出了一个纹理 Transformer 网络(TTSR),最大程度地利用了参考图像的信息,它可以有效地搜索与迁移高分辨率的纹理特征到低分辨率图像中,解决纹理模糊和纹理失真的问题。网络的主要两个部分:纹理转换器 (Texture Transformer )TT :把Ref图像中的HR纹理迁移到LR图像中 跨尺度特征集成模块(Cross-Scale Feature Integration) CSFI:融合不同尺度的纹理特征,提高SR图像质量1.

小猿圈python之python期末考试测试题(二)_小猿圈Python开发面试题(二)_weixin_39828198的博客-程序员信息网

原标题:小猿圈Python开发面试题(二)小猿圈Python老师继上一次python面试题一,接着更新python面试题二,同学们测试一做的怎么样呢?有没有把握呢,想要看答案的同学们,可以在小猿圈上找一下,或者直接给小编留言。 一、问答题1. Python 的特点和优点是什么?2、 深拷贝和浅拷贝的区别是什么?3、解释 Python 中的三元表达式4、 如何在 Python 中管理内存?、5、 f...

python爬虫啥用_什么是网络爬虫?有什么用?怎么爬?一篇文章带你领略python爬虫魅力..._weixin_39825854的博客-程序员信息网

网络爬虫也叫做网络机器人,可以代替人们自动地在互联网中进行数据信息的采集与整理。在大数据时代,信息的采集是一项重要的工作,如果单纯靠人力进行信息采集,不仅低效繁琐,搜集的成本也会提高。此时,我们可以使用网络爬虫对数据信息进行自动采集,比如应用于搜索引擎中对站点进行爬取收录,应用于数据分析与挖掘中对数据进行采集,应用于金融分析中对金融数据进行采集,除此之外,还可以将网络爬虫应用于舆情监测与分析、目标...

excel服务器模板修改,勤哲Excel服务器设计查询模板_weixin_39753584的博客-程序员信息网

&gt;通过我的工作台只能完成比较简单的数据查询,更多的时候,我们需要设计查询模板,通过表间公式来完成数据的查询工作。看这样一个例子,假设您是销售部的统计员,月底您要制作一张本月(2007年5月)销售情况的汇总表,如下图所示:图 9 ? 6 销售台账表样设想一下您手工制作这张表格时的情形:您把本月发生的订单都拿到手边来,拿过一张《订单》,把上面的订单日期抄写到B4,订单编号抄写到C4,客户名称抄写...

快速幂 c语言,快速幂算法C语言版_weixin_39628256的博客-程序员信息网

快速幂取模算法在网站上一直没有找到有关于快速幂算法的一个详细的描述和解释,这里,我给出快速幂算法的完整解释,用的是C语言,不同语言的读者只好换个位啦,毕竟读C的人较多~所谓的快速幂,实际上是快速幂取模的缩写,简单的说,就是快速的求一个幂式的模(余)。在程序设计过程中,经常要去求一些大数对于某个数的余数,为了得到更快、计算范围更大的算法,产生了快速幂取模算法。[有读者反映在讲快速幂部分时有点含糊,所...

无人超市的核心不在于代替人,而是一款赚钱的互联网产品,是互联网伸向现实世界的_Lee_E的博客-程序员信息网_无人超市属于计算机的什么应用

1 互联网没什么道理,就是聪明地有套路地利用网络赚钱。2 无人超市就是新的快手,攫取高利润零售产业的份额,套路下的软件般复制,吸血零售行业。3 人脸是线下的现实生活中最直接的标志!4 网络不再只是链接主机,链接物,也将链接人。共同成为一个和谐可感智能的整体。

随便推点

展讯secureboot方案_flaoter的博客-程序员信息网

Secure Boot方案介绍及实施流程&nbsp;转自https://blog.csdn.net/weixin_34014555/article/details/862604591. Secure boot概述本文档主要是secure boot方案的介绍和...

关于AJAX跨域调用web api问题汇总(二)_寒飞a的博客-程序员信息网

上一篇写到利用Cross进行AJAX跨域,简单的略过了,因为网上有太多的文章说的比我好很多,本人不是很擅长写博客,比较懒。这篇开始说说重点问题。问题一、跨域ajax提交时,当携带headers头时,请求将报错。无法执行!上代码 $("#btnPost").click(function () { $.ajax({

在samba中设置Linux,linux中Samba服务器的配置_克莱儿儿儿的博客-程序员信息网

Samba简介Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置"Net...

树状数组_weixin_30849591的博客-程序员信息网

树状树组-----转载树状数组是对一个数组改变某个元素和求和比较实用的数据结构。两中操作都是O(logn)。 在解题过程中,我们有时需要维护一个数组的前缀和S[i]=A[1]+A[2]+...+A[i]。 但是不难发现,如果我们修改了任意一个A[i],S[i]、S[i+1]...S[n]都会发生变化。 可以说,每次修改A[i...

luigi学习8--使用中央调度器_weixin_30608131的博客-程序员信息网

--local-scheduler一般用在开发阶段,这在一个产品中是不建议这样使用的。使用中央调度器有两个目的:保证两个相同的task不会同时运行两次提供一个可视化的界面注意:中央调度器并不会帮助你执行任何任务或者帮助你使得你的任务更加并行。一、luigid serevr1.1运行luigid server在后台进程luigid --background --pidfi...

《博客园精华集--Sharepoint分册》第三轮结果(转)_weixin_30402085的博客-程序员信息网

写在前面: Sharepoint接触的人相对比较少,筛选下来感觉精华文章不多。对于本分册我准备采用入门、使用、开发、进阶的组织方式,当然如果大家认为不够精华有违精华集的宗旨的话,也可以将本分册拿掉,把其中的精华文章合并到其他分册。下面是我初步筛选的结果,时间、能力有限,难免有疏漏之处,希望大家能够提出宝贵意见,如分类不正确、转载文章、质量太差等,我们将根据大家的意见在后面的工作...

推荐文章

热门文章

相关标签