0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

I2C和電源的關(guān)系

h1654155971.8456 ? 來源:lq ? 2018-12-13 10:39 ? 次閱讀

前面說的“I2C七宗罪之第一罪”和復位有關(guān)系, 這一次我們來說說:

I2C和電源的關(guān)系

提到電源大家的心理通常是緊張滴,不自覺地發(fā)問:是不是問題很嚴重?是的, 非常嚴重, 而且通過軟件是沒有辦法解決的。我們先來看下面這張簡圖:

1.系統(tǒng)有風扇,12V供電;

2.Fan和CPU之間有轉(zhuǎn)速檢測TACH和轉(zhuǎn)速控制PWM信號;

3.CPU左邊有一個顆I2C EXPANDER,用來做GPIO擴展的;

4.DC-DC產(chǎn)生VCC-3.3V分別供給CPU和I2C Expander。

乍一看,也沒啥問題啊!俗話說得好,平靜的水面下暗流涌動啊,我先來給大家一點點提示,看看誰能先猜到問題所在,我們來看看CPU PWM/TACH內(nèi)部結(jié)構(gòu)。

這個也沒有啥問題啊, 我們都知道IBIS buffer的樣子如下,這個在網(wǎng)絡(luò)上隨便google或者度娘,到處都是啊。

這些看起來都沒有什么問題,可是偏偏我們把這里的CPU(MCU)和風扇放在一起就出問題了,看看下面這張示意圖,你也許會開始有feel:

我們從電源的上電順序開始:

1.插入12V電源,F(xiàn)an先開始運轉(zhuǎn),注意此時DC-DC還沒有開始工作,也就是說VCC-3.3V還沒有產(chǎn)生;

2.由于風扇的12V先上電,PWN/TACH信號線已經(jīng)有電了,于是通過圖中MCU的保護二極管(上管)對3.3V充電;

3.注意此時DC-DC仍然還沒有工作,但是3.3V已經(jīng)開始升壓,但是來源不是DC-DC Buck,而且來自Fan的I/O管腳漏過來的;

4.此時DC-DC電源開始工作,由于同步整流的電源BUCK都需要自舉,也就說我們通常所說的Bootstrap的電路,下管的MOSFET要先打開(關(guān)于電源部分我們后面再詳細敘述),產(chǎn)生的后果是把原先I/O漏過來的電壓拉到地;

5.Bootstrap電路開始工作后,DC-DC開始正式工作,從0開始產(chǎn)生VCC-3.3V。

于是我們就看了如上圖的波形, 圖中綠色的就是3.3V, 12V電源插入瞬間開始上升,然后在某一個時間,突然下降到0, 再重新上升到3.3V, 電源完成上電。

說到這, 有人開始問了,你不是討論I2C嗎? 怎么和我們討論起3.3V電源來了?。縿e急別急, 事情都是慢慢明朗起來的。

如果此時你回去看最上面的第一張圖,那么你就發(fā)現(xiàn)圖中有一個I2C Expander,對了,問題就出自這里,通過我們從上面的討論,我們已經(jīng)知道, 3.3V的上電不是一帆風順的,而是會有一個Spike,也就是一個倒鉤。如下面所示:

我再來給一張清晰一點圖,VCC每次上電都是先被12V-Fan I/O充電,然后跌落到地,在爬升會3.3V, 原因上面我已經(jīng)給出詳細的解釋,那么又有人問了,這個會有什么問題嗎?我先明確的回答,會出大問題。

我先來貼一段英文,我非常強烈建議大家平時工作中要養(yǎng)成讀英文論文的習慣,我倒不是崇洋媚外,老外那些大牛的文章,真的讓你覺得很精妙, 有時候自己翻譯成中文總覺得怪怪的,生怕曲解了大牛的原意,所以還是老老實實去讀原版文章,不要翻譯成中文。

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的內(nèi)部電路給畫一下, 我們看到這顆芯片沒有外部復位pin腳,所以一般內(nèi)部會有一個簡單設(shè)計的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是不是已經(jīng)上電成功了?我們不知道,因為3.3V上電到了半山腰又倒回來,此時芯片內(nèi)部的POR是不是對芯片完成內(nèi)部復位我們不清楚,不僅如此I2C expander有沒有準確鎖定外部的strap pin腳的狀態(tài),我們也不清楚;

2.由于不能確定是否完成內(nèi)部存儲單元(觸發(fā)器)的初始化,I2X expander可能工作一個很random的狀態(tài),而不是我們需要的Idle狀態(tài)。

關(guān)于這個解釋,后來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.

那我們說了那么多,究竟結(jié)果是怎么樣呢? 結(jié)果就是I2C expander產(chǎn)生了Lock up, I2C接口訪問不了,有時候還會拉住SCL或者SDA.

總結(jié)下來就是一句話:芯片需要POR電路來進行復位,如果因為別的原因提前上電,導致POR工作不正常,那么就會有問題。

關(guān)于上面的現(xiàn)象還有另外一種解釋,就是當VCC的倒鉤時,此時I2C Expander的內(nèi)部電路已經(jīng)被搞亂了, 但是有內(nèi)部POR的RC電路的平滑作用, 導致內(nèi)部Reset被濾平滑了,內(nèi)部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.

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 電源
    +關(guān)注

    關(guān)注

    184

    文章

    17495

    瀏覽量

    249208
  • 二極管
    +關(guān)注

    關(guān)注

    147

    文章

    9539

    瀏覽量

    165596
  • I2C
    I2C
    +關(guān)注

    關(guān)注

    28

    文章

    1477

    瀏覽量

    123104

原文標題:I2C七宗罪之第二罪

文章出處:【微信號:eda365wx,微信公眾號:EDA365電子論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    I2C總線—電平轉(zhuǎn)換

    我們先來看一張圖,熟悉I2C的人一看,這不是I2C的level shifter電路嘛,在Philip的I2C標準里面有,沒有啥復雜的。
    的頭像 發(fā)表于 11-02 12:32 ?4542次閱讀
    <b class='flag-5'>I2C</b>總線—電平轉(zhuǎn)換

    i2c總線ppt(I2C總線器件應(yīng)用)

    I2C總線器件應(yīng)用第一節(jié) I2C總線器件應(yīng)用概述I2C總線工作原理I2C總線系統(tǒng)結(jié)構(gòu)I2C總線系統(tǒng)結(jié)構(gòu)如圖7-1所示。其中,SCL是時鐘線,
    發(fā)表于 08-13 17:34 ?0次下載

    i2c總線的特點

    i2c總線的特點:2 I2C 總線使設(shè)計人員和廠商都得益.. 3 2.1 設(shè)計人員的得益.. 4 2.2 廠商的得益. 5 3 介紹I2C 總線規(guī)范 6 4
    發(fā)表于 08-05 09:05 ?26次下載

    I2C總線規(guī)范與I2C器件C51讀寫程序

    I2C總線規(guī)范與I2C器件C51讀寫程序:本文簡要介紹了I2C總線,并給出了I2C器件的C51讀
    發(fā)表于 08-22 17:51 ?93次下載

    I2C總線應(yīng)用中的幾個問題

    I2C總線應(yīng)用中的幾個問題:i2c上拉電阻阻值的確定,PCB布局布線與抗干擾設(shè)計,軟件模擬I2C時序,I2C 應(yīng)用中上拉電阻電源問題。
    發(fā)表于 09-13 14:27 ?51次下載
    <b class='flag-5'>I2C</b>總線應(yīng)用中的幾個問題

    I2C Guid I2C指南

    I2C Guid  I2C指南 The I2C bus is used in a wide rangeof applications because it is simpleand
    發(fā)表于 04-23 13:55 ?36次下載

    什么是i2c總線

    什么是i2c總線  下載請點擊: i2c總線協(xié)議中文版 
    發(fā)表于 11-05 09:26 ?2903次閱讀

    i2c

    單片機i2c總線操作;單片機i2c總線操作;單片機i2c總線操作;
    發(fā)表于 05-17 11:09 ?35次下載

    Widrange I2C電源顯示器

    Widrange I2C電源顯示器
    發(fā)表于 04-27 15:40 ?0次下載
    Widrange <b class='flag-5'>I2C</b><b class='flag-5'>電源</b>顯示器

    I2C設(shè)備地址關(guān)系——以MPU6050舉例

    I2C設(shè)備地址關(guān)系——以MPU6050舉例
    發(fā)表于 12-06 13:21 ?10次下載
    <b class='flag-5'>I2C</b>設(shè)備地址<b class='flag-5'>關(guān)系</b>——以MPU6050舉例

    硬件I2C與模擬I2C

    硬件I2C對應(yīng)芯片上的I2C外設(shè),有相應(yīng)I2C驅(qū)動電路,其所使用的I2C管腳也是專用的,因而效率要遠高于軟件模擬的I2C;一般也較為穩(wěn)定,但
    發(fā)表于 12-28 19:14 ?81次下載
    硬件<b class='flag-5'>I2C</b>與模擬<b class='flag-5'>I2C</b>

    ESP 12E I2c基卡的I2C IO卡設(shè)計

    電子發(fā)燒友網(wǎng)站提供《ESP 12E I2c基卡的I2C IO卡設(shè)計.zip》資料免費下載
    發(fā)表于 08-15 09:27 ?3次下載
    ESP 12E <b class='flag-5'>I2c</b>基卡的<b class='flag-5'>I2C</b> IO卡設(shè)計

    I2C子系統(tǒng)SW Architecture

    I2C SW Architecture 【driver 驅(qū)動層】由普通驅(qū)動工程師負責,【i2c 核心層】由 Linux 提供,【i2c 核心層】以下由芯片原廠負責。 I2C 子系統(tǒng)
    的頭像 發(fā)表于 07-22 16:01 ?899次閱讀
    <b class='flag-5'>I2C</b>子系統(tǒng)SW Architecture

    I2CI3C的區(qū)別有哪些

    I2CI3C 主要區(qū)別如下: I2C 雖然也是兩條線,但是很多時候傳感器需要一條額外的中斷線,來告訴主控數(shù)據(jù)已經(jīng)準備好。I3C 允許從設(shè)備直接在總線上產(chǎn)生中斷,不再需要一條額外的
    的頭像 發(fā)表于 07-22 16:20 ?6539次閱讀
    <b class='flag-5'>I2C</b>和<b class='flag-5'>I3C</b>的區(qū)別有哪些

    i2c采樣是上升沿嗎?

    i2c采樣是上升沿嗎?? I2C采樣是指在I2C總線上對數(shù)據(jù)進行采樣。在I2C總線上,數(shù)據(jù)的傳輸是通過2條線傳遞。一條是時鐘線(SCL),另
    的頭像 發(fā)表于 09-19 17:16 ?2474次閱讀