精华内容
下载资源
问答
  • I2C总线上拉电阻的选择

    千次阅读 2016-10-20 15:25:55
    1、I2C接口的输出端是漏极开路或集电极开路,所以必须在接口外接上拉。 2、上拉电阻的范围很宽,但也需要跟据功耗、信号上升时间等具体确定。 和速度应该没关系。主要是I2C是oc,所以需要。和驱动的从机数...

    1、I2C接口的输出端是漏极开路或集电极开路,所以必须在接口外接上拉。

    2、上拉电阻的范围很宽,但也需要跟据功耗、信号上升时间等具体确定。

    和速度应该没关系。主要是I2C是oc,所以需要。和驱动的从机个数(虽然从机个数不是由电阻决 定的)有一定关系

    不能说和速度没关系, 从机数量多的话, 由于经常在CMOS 集成电路里面源和基底是相连的, 而漏和基底存在寄生电容, 所以源和漏之间是有寄生电容的, 过大的上拉电阻会引起延时,导致边缘的上升下降速度变慢

    上拉电阻的取值何I2C总线的频率有关,工作在standard -mode时,其典型值为10K
    在FAST mode时,为减少时钟上升时间,满足上升时间的要求,一般为1K

    philips的IIC协议中pullup-res的典型值是5.1K@ VIO=5V(其实用5K一样,5.1K比较好买便宜),但手机系统一般VIO=2.8V,所以在参考设计中,通常此阻值用4.7K,虽然于驱动力上比协 议标准不如,但考虑到leakage current,用3.3K的漏电流比较大,综合考虑用4.7K,况且此阻值也是常规值

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

    总之,不同平台的官方试验和我的取值相似,倾向与用4。7K @ 2.8V VIO

    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牺牲速度换 取电池使用时间。有些IDH竟然用到10K或以上,将大大影响其抗噪性能,对于PCB的制造以及板层堆叠的结构的干扰将加大数据的误判

    I2C上拉电阻确定有一个计算公式:
    Rmin={Vdd(min)-o.4V}/3mA
    Rmax=(T/0.874) *c, T=1us 100KHz, T=0.3us 400KHz
    C是Bus capacitance

    关于iic的上拉电阻,个人最好的方式就是看参考设计,如果走线长了或好总线上有好几个芯片,就把电 阻改小一些。如果参考设计没有就在1.5K~5k左右里面选一个就是了。但实际的时候我们没有去测量总线的电容问题,只能在选件/走线时候给与些许的关 注

    展开全文
  • I2C上拉电阻到底

    2020-03-08 21:17:37
    I2C上啦电阻到底大 ...我在当时在驱动ov7670的时候,由于官哥的模块上没有默认I2C的上啦电阻,导致三四天I2C时序的设计,testbench,都是如此的崩溃,想哭的冲动都用了,FPGA内部上拉也不行。。。。后来官...

    I2C上啦电阻到底多大

    1. I2C出现的问题

    最近群里,由于大部分人都玩摄像头,在摄像头初始化,即I2C接口的初始化中,前前后后出现了很多问题,包括我自己。不能理解。。如下部分群聊记录:

     

    我在当时在驱动ov7670的时候,由于官哥的模块上没有默认I2C的上啦电阻,导致三四天I2C时序的设计,testbench,都是如此的崩溃,想哭的冲动都用了,FPGA内部上拉也不行。。。。后来官哥跟我说:“你个傻x,赶紧上啦4.7K”

    2. I2C电路举例

    以下是我的电路的设计,听官哥的,用了4,7K 的上拉电阻

     

    下面这个是官哥的

     

     

    还有人说,上啦时候,还不行了,首先要降低速度,其次减小上啦电阻,一直都是听人说,都不知道为什么过,人家都说经验。。。。。人家用到了1K电阻,我5K ,人家速度1K,我100K,屡试不爽,但是就是揪心,吃不好睡不香,这到底为什么呢。。。。

    3. I2C为什么要上拉电阻

    这是我最搞不懂的问题,他为啥不在IC内部做好上啦呢,让我们在外面再拉一次,麻烦死了。。还有这SCLK明明只是输出,为啥也要上啦呢。。这逼迫我不得不研究一下I2C内部电路。。。哎,如下:

    借鉴参考:http://bbs.eeworld.com.cn/thread-95337-1-1.html

    http://hi.baidu.com/spbeijilang/blog/item/012f13824c2d18b26d811911.html

    (1)单片机内部有上啦电阻,有些上拉能力够了,可以不加上拉电阻,有些不够,那就必须在外部加上拉电阻。解析如下:

    “这 个就要看你使用的单片机是否有标准的IIC标准接口了,如果你使用了标准的IIC接口,这个接口在使能的时候,引脚进入漏极开路模式,不过有一些单片机内 部的上拉电阻可以使能,这样就省去了外部的上拉电阻,我用过AVR的,就是使能的内部的上拉电阻。但是如果是使用单片机的引脚模拟IIC协议的话,这个就 得另说了,得看你的单片机引脚是否支持漏极开路模式或者上拉模式,不过一般推拉模式的输出引脚用在IIC里可能会有问题具体也没用过。”

    (2)也有人回答是为了保护,如下:

    “其 实各个I2C接口工作时只检测高、低电平,管你有没有什么上拉电阻呢!但问题是,你要是直接接电源的来实现高的话,一旦器件拉低时岂不危险?所以,这个上 拉电阻有保护作用。如果你确信直接接电源没问题(比如有短路保护等,呵呵),也可以试一试,问题的关键是主器件要能正确的拉低或置高,从器件要能明确地区 分高、低就可以了,这是问题的关键,当然,还有时序问题,不能混乱!”

    根据I2C总线规范,总线空闲时两根线都必须为高

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

     

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

    4. I2C上拉电阻大小问题

    看了一些文档,还有前辈的提醒,的确I2C上拉电阻也有很大的文章可做啊。有人这样说道:

    “最 直接的,牵涉到两方面的问题,首先是功耗的问题,其次是速度的问题,二者是矛盾的!如果你想尽量提高速度,那么就牵涉到总线电容的问题,其实很容易理解, 上拉电阻与总线的电容形成了RC,高速时将直接影响通讯!因为总线拉高时有个充电时间以及高电平的阀值,如果还没有充电到足以保证从器件可以识别的高电平 的阀值时主器件就以为完成了一个总线动作的话,那么通讯肯定是不能进行的!如果你想尽可能降低功耗,那么就要尽可能增大电阻以最大可能的减小电路各部分的 消耗电流从而实现整体降低功耗!但不可能无限大,否则充电时间你会受不了的!”

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

    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)

    标 准模式,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牺牲速度换取电池使用时间

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

    上拉电阻阻值的确定

    5. I2C上拉电阻电源问题

    这部分我也不是非常了解,因为我的设计中,摄像头和fpga是用的是同一个3.3V,不存在两个电源的问题,但是问题还是得说,如下:

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

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

    展开全文
  • I2C上拉电阻问题

    2014-10-22 10:41:52
    I2C上拉电阻可以是1.5K,2.2K,4.7K,电阻的大小对...I2C上拉电阻确定有一计算公式: Rmin={Vdd(min)-o.4V}/3mA Rmax=(T/0.874) *c, T=1us 100KHz, T=0.3us 400KHz C是Bus capacitance Rp最大值由总线最大容



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

     

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

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

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

    CBus capacitance

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

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

    Rpmax的取值:参考周公的I2C总线规范中文版P3339P3544

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

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

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

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

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

     

     

     

    上拉电阻阻值的确定

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

            

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

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

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

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

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

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

    因此一般应用中选取的都是几量级的上拉电阻,比如都选取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协议还定义了串联在SDASCL线上电阻Rs。该电阻的作用是,有效抑制总线上的干扰脉冲进入从设备,提高可靠性。这个电阻的选择一般在100200ohm左右。当然,这个电阻并不是必须的,在恶劣噪声环境中,可以选用。

                

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

    软件模拟I2C时序

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

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

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

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

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

              

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

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

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

                 

     

    展开全文
  • I2C串联保护电阻上拉电阻的选择

    千次阅读 2018-04-11 13:36:57
    中断,GPIO,I2C等一般都是OC或者OD门,芯片内部无上电阻时,则外部必须加上电阻才能输出高电平。一般I/O端的驱动能力在2~4mA量级,OC或者OD门的导通电压为0.4V左右,手机中加在上拉电阻上的电压一般都是2.8V,...

    中断,GPIO,I2C等一般都是OC或者OD门,芯片内部无上拉电阻时,则外部必须加上拉电阻才能输出高电平。一般I/O端的驱动能力在2~4mA量级,OC或者OD门的导通电压为0.4V左右,手机中加在上拉电阻上的电压一般都是2.8V,上拉电阻的最小值不能低于800R(2.8-0.4V/3mA=0.8K),5V电压时,则不能低于1.5K(5-0.4V/3mA=1.5K)。中断和GPIO信号本身,只需要产生一个高电平即可,不需要驱动设备,上拉电阻可以取大点,减小功耗,但须注意上拉电阻不能太大,否则会和PCB走线,器件等负载电容影响信号上升时间。经验值一般在4.7~100K之间。

        I2C上拉电阻阻值计算:

        I2C的接口一般都是OD机制,同样需要加上拉电阻才能输出高电平。上拉电阻的最小值须符合上文。下面计算下上拉电阻的最大值。

        

     I2C总线图

        I2C总线的传输速率分为标准模式(100Kbit/s)和快速模式(400Kbit/s),负载的最大容限分别是400pF和200pF,根据I2C总线协议,上拉电阻的最大值被总线电容所限制。

        下面两个图可以看出上拉电阻的取值(Rs是I2C设备串联在I2C总线上的电阻,可以防止SDA和SCL的高电压毛刺波,例如电视的显像管击穿产生的高压毛刺)

      

        由上图可以看出,上拉电阻的最小值由上拉电源决定,最大值由总线电容决定。

        最大值网上有个计算公式,Rmax=T/0.874*C,C=200pF时,T=1us;C=400pF时,T=0.3us。但是根据这个公式计算出来的值都不怎么对,另外常数0.874怎么来的?请懂得人指教下。手机等低功耗设备一般选择4.7K。



    如果上拉电阻值过小,VDD灌入端口的电流(Ic)将较大,这样会导致MOS管(三极管)不完全导通(Ib*β<Ic),有饱和状态变成放大状态,这样端口输出的低电平值增大(I2C协议规定,端口输出低电平的最高允许值为0.4V)
           如果上拉电阻过大,加上线上的总线电容,由于RC影响,会带来上升时间的增大(下降延是芯片内的晶体管,是有源驱动,速度较快;上升延是无源的外接电阻,速度慢),而且上拉电阻过大,即引起输出阻抗的增大,当输出阻抗和负载的阻抗可以比拟的时,则输出的高电平会分压而减少。


    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接口采用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应用中上拉电阻电源问题

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

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

                  


    展开全文
  • I2C 上拉电阻取值

    千次阅读 2017-10-20 10:54:31
    I2C总线上数据的传输速度在标准模式下为100Kbps,在快速模式下可达400Kbps,在...连接到总线的设备数量受I2C总线规范对I2C总线电容最大不能超过400pF规定的限制。 漏极开路上拉电阻取值为何不能很大或很小?
  • I2C上拉电阻

    千次阅读 2014-01-20 20:24:01
    I2C上拉电阻可以是1.5k、2.2k、4.7k,电阻的...I2C上拉电阻确定有一计算公式: Rmin=(Vdd(min)-0.4V)/3mA Rmax=(T/0.874)*C,T=1uS 100kHz,T=0.3uS 400kHz,C是Bus capacitance Rp最小值由Vio与上拉驱动电流(最
  • I2C上拉电阻取值问题

    2017-07-04 15:10:22
    I2C上拉电阻可以是1.5K,2.2K,4.7K, 电阻的大小对时序有一定影响,...I2C上拉电阻确定有一计算公式: Rmin={Vdd(min)-o.4V}/3mA Rmax=(T/0.874) *c, T=1us 100KHz, T=0.3us 400KHz C是Bus capacitance
  • 上拉电阻大小对i2c总线的影响

    千次阅读 2018-01-03 17:02:48
    就要看你使用的单片机是否有标准的IIC标准接口了,如果你使用了标准的IIC接口,这接口在使能的时候,引脚进入漏极开路模式,不过有一些单片机内部的上拉电阻可以使能,这样就省去了外部的上拉电阻,我用过AVR...
  • STM32 I2C上拉电阻的选择问题

    千次阅读 2016-03-23 22:20:03
    从开源的设计中我们可以看到,I2C上拉电阻可以是1.5K,2.2K,4.7K,然而电阻的大小对时序有一定影响,对信号的上升时间和下降时间也有影响,一般接1.5K 或2.2K。  上拉电阻阻值的确定:  由于I2C 接口采用Open...
  • i2c上拉电阻的实例分析

    千次阅读 2014-02-09 22:55:20
    手机原理设计中,上拉电阻常用在中断,GPIO控制,I2C等信号上,本文希望能通过实例分析加深对上拉电阻的理解。如果有错误,请大神们提出来。  中断,GPIO,I2C等一般都是OC或者OD门,芯片内部无上拉电阻时,则外部...
  • i2c上拉电阻取值问题

    2015-07-29 19:37:56
    漏极开路上拉电阻取值为何不能很大或很小?  如果上拉电阻值过小,VDD灌入端口的电流(Ic)将较大,这样会导致MOS管(三极管)不完全导通(Ib*β  如果上拉电阻过大,加上线上的总线电容,由于RC影响,会带来上升...
  • I2C总线上拉电阻--为什么要

    万次阅读 2014-04-26 01:33:50
    就要看你使用的单片机是否有标准的IIC标准接口了,如果你使用了标准的IIC接口,这接口在使能的时候,引脚进入漏极开路模式,不过有一些单片机内部的上拉电阻可以使能,这样就省去了外部的上拉电阻,我用过AVR...
  • I2C总线接上拉电阻能够维持输出电平的稳定,因此工程师必须快速的确定上拉电阻的阻值,尽可能快的展开工作运转。那么,如何快速的确定I2C上拉电阻阻值呢?在I2C总线上接上拉电阻是必须要做的吗?今天就让专家老师...
  • 如何确定I²C总线上拉电阻的阻值

    千次阅读 2017-05-03 22:37:04
    I2C总线为何需要上拉电阻I2C(Inter-Intergrated Circuit)总线是微电子通信控制领域中常用的一种总线标准,具有接线少,控制方式简单,通信速率高等优点。 I2C总线的内部结构图如图1所示,I2C器件连接到总线...
  • I2C总线为什么要接上拉电阻

    千次阅读 2021-01-12 10:01:27
    I2C总线为什么要接上拉电阻 1、根据I2C总线规范,总线空闲时两根线都必须为高; 这是规定,动不了的,不然什么叫标准呢?其实所谓的这神圣的标准也并不是多么邪乎,你想啊,只有是高的才能拉成低的,难道谁可以把...
  • I2C总线-上拉电阻阻值的计算

    千次阅读 2015-07-14 19:19:19
    I2C上拉电阻可以是1.5K,2.2K,4.7K,电阻的大小对...I2C上拉电阻确定有一计算公式: Rmin={Vdd(min)-o.4V}/3mA Rmax=T/(0.874*c), T=1us 100KHz, T=0.3us 400KHz C是Buscapacitance Rp最大值由总线最大容限(Cbm
  • I2C上拉电阻问题分析(基于stm32 HAL库)在使用stm32读写 ST温湿度hts221时,使用I2C总线,总线上还挂在了别的传感器,发现有时候可以读出数据,有时候读不出数据,一直是0。
  • I2C器件一定要加上拉电阻吗?

    千次阅读 2014-03-05 16:28:55
    最近碰到i2c器件的上拉电阻接错,导致通讯不正常,那么i2c需要上拉电阻么,大合适 从网上搜集了一些回答: 1).最近看一些关于AT24C02的电路图,发现有些在SDA,SCL这两脚上接了4.4K或者10K的上拉电阻。有些...
  • I2C 的开漏和上拉电阻

    千次阅读 2016-08-29 12:49:44
    开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据...CPU向受控单元发出一信号后,等待受控单元发出一应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,
  • 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与上拉驱动电流(最大取...
  • USB线上/串口/I2C引脚串联电阻的作用

    千次阅读 2019-02-18 16:03:37
    因为信号源的阻抗很低,跟信号线之间阻抗不匹配,串个电阻后,可改善匹配情况,以减少反射,避免振荡等。 第二是可以减少信号边沿的陡峭程度,从而减少高频噪声以及过冲等。因为串联的电阻,跟信号线的分布电容...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,128
精华内容 6,451
关键字:

多个i2c设备上拉电阻