0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

I2C和电源的关系

h1654155971.8456 来源:lq 2018-12-13 10:39 次阅读

前面说的“I2C七宗罪之第一罪”和复位有关系, 这一次我们来说说:

I2C和电源的关系

提到电源大家的心理通常是紧张滴,不自觉地发问:是不是问题很严重?是的, 非常严重, 而且通过软件是没有办法解决的。我们先来看下面这张简图:

1.系统有风扇,12V供电

2.Fan和CPU之间有转速检测TACH和转速控制PWM信号

3.CPU左边有一个颗I2C EXPANDER,用来做GPIO扩展的;

4.DC-DC产生VCC-3.3V分别供给CPU和I2C Expander。

乍一看,也没啥问题啊!俗话说得好,平静的水面下暗流涌动啊,我先来给大家一点点提示,看看谁能先猜到问题所在,我们来看看CPU PWM/TACH内部结构。

这个也没有啥问题啊, 我们都知道IBIS buffer的样子如下,这个在网络上随便google或者度娘,到处都是啊。

这些看起来都没有什么问题,可是偏偏我们把这里的CPU(MCU)和风扇放在一起就出问题了,看看下面这张示意图,你也许会开始有feel:

我们从电源的上电顺序开始:

1.插入12V电源,Fan先开始运转,注意此时DC-DC还没有开始工作,也就是说VCC-3.3V还没有产生;

2.由于风扇的12V先上电,PWN/TACH信号线已经有电了,于是通过图中MCU的保护二极管(上管)对3.3V充电;

3.注意此时DC-DC仍然还没有工作,但是3.3V已经开始升压,但是来源不是DC-DC Buck,而且来自Fan的I/O管脚漏过来的;

4.此时DC-DC电源开始工作,由于同步整流的电源BUCK都需要自举,也就说我们通常所说的Bootstrap的电路,下管的MOSFET要先打开(关于电源部分我们后面再详细叙述),产生的后果是把原先I/O漏过来的电压拉到地;

5.Bootstrap电路开始工作后,DC-DC开始正式工作,从0开始产生VCC-3.3V。

于是我们就看了如上图的波形, 图中绿色的就是3.3V, 12V电源插入瞬间开始上升,然后在某一个时间,突然下降到0, 再重新上升到3.3V, 电源完成上电。

说到这, 有人开始问了,你不是讨论I2C吗? 怎么和我们讨论起3.3V电源来了啊?别急别急, 事情都是慢慢明朗起来的。

如果此时你回去看最上面的第一张图,那么你就发现图中有一个I2C Expander,对了,问题就出自这里,通过我们从上面的讨论,我们已经知道, 3.3V的上电不是一帆风顺的,而是会有一个Spike,也就是一个倒钩。如下面所示:

我再来给一张清晰一点图,VCC每次上电都是先被12V-Fan I/O充电,然后跌落到地,在爬升会3.3V, 原因上面我已经给出详细的解释,那么又有人问了,这个会有什么问题吗?我先明确的回答,会出大问题。

我先来贴一段英文,我非常强烈建议大家平时工作中要养成读英文论文的习惯,我倒不是崇洋媚外,老外那些大牛的文章,真的让你觉得很精妙, 有时候自己翻译成中文总觉得怪怪的,生怕曲解了大牛的原意,所以还是老老实实去读原版文章,不要翻译成中文。

If by any chance, the TACH pin is pulled or driven high while the Expander VCC is not applied (which should not be allowed during normal operation), the Expander could be powered up from the TACH pin through the connected internal diode between the pin and VCC. Such false power-up events do not ensure the required power supply to Expander the POR would not be ensured, and a lockup may occur.

Point和上面的英文意思差不多,就是I2C Expander(我们这里是CPU)被别的电路 通过I/O管脚商店了。我们先来把这颗粒I2C expander的内部电路给画一下, 我们看到这颗芯片没有外部复位pin脚,所以一般内部会有一个简单设计的POR电路:

我们看到,当3.3V VCC上电有倒钩时,由于Fan通过TACH/PWM对I2C expander提前上电, 然后突然又倒回来, 在这个过程中有两件事是不确定的:

The POR brings the Expander to a known working state (the default condition) by initializing the internal storage elements (flip-flops) and recognizing its connections (such as identifying the status of pins A1 and A0 as high or low, which is how the Expander slave address can be decided). Without the POR feature, the Expander may start up in a random state and thus may cause a lockup.

1.I2C expander是不是已经上电成功了?我们不知道,因为3.3V上电到了半山腰又倒回来,此时芯片内部的POR是不是对芯片完成内部复位我们不清楚,不仅如此I2C expander有没有准确锁定外部的strap pin脚的状态,我们也不清楚;

2.由于不能确定是否完成内部存储单元(触发器)的初始化,I2X expander可能工作一个很random的状态,而不是我们需要的Idle状态。

关于这个解释,后来TI的工程师给出详细的解释, 英文我不就翻译成中文了,请读者仔细品味和理解:

The device has a 6 bit state machine (64 states) of which 49 valid state and 15 are invalid states. The above fix will work assuming the device comes up in a valid state. Typically on all our designs, an invalid state would lead to the idle state on the immediately next clock cycle. However, the PCF8575 is our very first I2C device and there are some invalid states that could latch the SDA line low indefinitely. The 9 clk cycle fix will not work if the device were to power up into an invalid state. The only way to bring the device out of this state is to provide a proper reset.

那我们说了那么多,究竟结果是怎么样呢? 结果就是I2C expander产生了Lock up, I2C接口访问不了,有时候还会拉住SCL或者SDA.

总结下来就是一句话:芯片需要POR电路来进行复位,如果因为别的原因提前上电,导致POR工作不正常,那么就会有问题。

关于上面的现象还有另外一种解释,就是当VCC的倒钩时,此时I2C Expander的内部电路已经被搞乱了, 但是有内部POR的RC电路的平滑作用, 导致内部Reset被滤平滑了,内部Reset没有碰到门限电压,请仔细看上图红色的凹陷。

这样导致芯片也不能正常复位,当然也就不能正常工作了。请看大牛Howard Johnson的描述:

Howard Johnson : Power interruptions drive power-on-reset circuits crazy.. If a processor is involved, the dropout is long enough to make scrambled eggs of the processor’s internal state machines but not long enough to discharge the RC circuit. If the RC circuit doesn't discharge, ~RESET doesn't activate, and the processor spins out of control, powered on, but lost in space.

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 电源
    +关注

    关注

    184

    文章

    17711

    浏览量

    250081
  • 二极管
    +关注

    关注

    147

    文章

    9637

    浏览量

    166418
  • I2C
    I2C
    +关注

    关注

    28

    文章

    1487

    浏览量

    123687

原文标题:I2C七宗罪之第二罪

文章出处:【微信号:eda365wx,微信公众号:EDA365电子论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    i2c总线ppt(I2C总线器件应用)

    I2C总线器件应用第一节 I2C总线器件应用概述I2C总线工作原理I2C总线系统结构I2C总线系统结构如图7-1所示。其中,SCL是时钟线,
    发表于 08-13 17:34 0次下载

    i2c总线的特点

    i2c总线的特点:2 I2C 总线使设计人员和厂商都得益.. 3 2.1 设计人员的得益.. 4 2.2 厂商的得益. 5 3 介绍I2C 总线规范 6 4
    发表于 08-05 09:05 26次下载

    I2C总线规范与I2C器件C51读写程序

    I2C总线规范与I2C器件C51读写程序:本文简要介绍了I2C总线,并给出了I2C器件的C51读
    发表于 08-22 17:51 93次下载

    I2C总线应用中的几个问题

    I2C总线应用中的几个问题:i2c上拉电阻阻值的确定,PCB布局布线与抗干扰设计,软件模拟I2C时序,I2C 应用中上拉电阻电源问题。
    发表于 09-13 14:27 51次下载
    <b class='flag-5'>I2C</b>总线应用中的几个问题

    I2C Guid I2C指南

    I2C Guid  I2C指南 The I2C bus is used in a wide rangeof applications because it is simpleand
    发表于 04-23 13:55 36次下载

    什么是i2c总线

    什么是i2c总线  下载请点击: i2c总线协议中文版 
    发表于 11-05 09:26 2921次阅读

    基于51的I2c总线

    I2c总线,基于51的I2c总线,程序学习。快来下载学习吧
    发表于 01-13 11:49 34次下载

    i2c

    单片机i2c总线操作;单片机i2c总线操作;单片机i2c总线操作;
    发表于 05-17 11:09 35次下载

    Widrange I2C电源显示器

    Widrange I2C电源显示器
    发表于 04-27 15:40 0次下载
    Widrange <b class='flag-5'>I2C</b><b class='flag-5'>电源</b>显示器

    I2C设备地址关系——以MPU6050举例

    I2C设备地址关系——以MPU6050举例
    发表于 12-06 13:21 10次下载
    <b class='flag-5'>I2C</b>设备地址<b class='flag-5'>关系</b>——以MPU6050举例

    硬件I2C与模拟I2C

    硬件I2C对应芯片上的I2C外设,有相应I2C驱动电路,其所使用的I2C管脚也是专用的,因而效率要远高于软件模拟的I2C;一般也较为稳定,但
    发表于 12-28 19:14 81次下载
    硬件<b class='flag-5'>I2C</b>与模拟<b class='flag-5'>I2C</b>

    ESP 12E I2c基卡的I2C IO卡设计

    电子发烧友网站提供《ESP 12E I2c基卡的I2C IO卡设计.zip》资料免费下载
    发表于 08-15 09:27 3次下载
    ESP 12E <b class='flag-5'>I2c</b>基卡的<b class='flag-5'>I2C</b> IO卡设计

    I2C子系统SW Architecture

    I2C SW Architecture 【driver 驱动层】由普通驱动工程师负责,【i2c 核心层】由 Linux 提供,【i2c 核心层】以下由芯片原厂负责。 I2C 子系统
    的头像 发表于 07-22 16:01 953次阅读
    <b class='flag-5'>I2C</b>子系统SW Architecture

    I2CI3C的区别有哪些

    I2CI3C 主要区别如下: I2C 虽然也是两条线,但是很多时候传感器需要一条额外的中断线,来告诉主控数据已经准备好。I3C 允许从设备直接在总线上产生中断,不再需要一条额外的
    的头像 发表于 07-22 16:20 6936次阅读
    <b class='flag-5'>I2C</b>和<b class='flag-5'>I3C</b>的区别有哪些

    i2c采样是上升沿吗?

    i2c采样是上升沿吗?  I2C采样是指在I2C总线上对数据进行采样。在I2C总线上,数据的传输是通过2条线传递。一条是时钟线(SCL),另
    的头像 发表于 09-19 17:16 2732次阅读