我們?cè)谠O(shè)計(jì)板子的時(shí)候,往往注意那些看起來比較核心,比較關(guān)鍵的部分,對(duì)于那些邊邊角角的地方可能不夠注意,但是這些地方往往帶來災(zāi)難性的后果。
比如說電源的上電時(shí)序,我們需要注意系統(tǒng)電源的上升時(shí)間,很多人不理解,上電就上電啊,為啥一定規(guī)定上升時(shí)間?告訴你,這里面處理不好,問題可就大了。
下面舉個(gè)例子:
很多簡(jiǎn)單的基于MCU的產(chǎn)品采用下面的方式來做Reset,這樣做行不行呢? 當(dāng)然可以, 為什么呢? 因?yàn)槟敲炊喈a(chǎn)品都這么做了,也沒有聽說過有什么問題,當(dāng)然OK啦。
今天我們就來用最簡(jiǎn)單的方式來描述這個(gè)究竟會(huì)不會(huì)有問題。
首先我們來看理想情況下的上電復(fù)位是什么情況:
當(dāng)VCC到達(dá)MCU的工作電壓閾值的時(shí)候,MCU開始工作,復(fù)位信號(hào)20ms以后拉高,Perfect!問題是現(xiàn)實(shí)和理想總是有距離的,我們先來看看采用上圖RC充電的復(fù)位方式會(huì)得到什么樣的波形:
我們可以看到即便當(dāng)VCC上電完美的時(shí)候,我們也需要確保Reset充電充到Vih的時(shí)候,時(shí)間要大于20ms,可是現(xiàn)實(shí)真的如此嗎?
可惜理想和現(xiàn)實(shí)還有一點(diǎn)距離,請(qǐng)看上面這張圖,從VCC上電到達(dá)工作電壓閾值,到Reset慢慢充電到達(dá)Vih,這段時(shí)間就是我們需要的復(fù)位時(shí)間,可是這種情況其實(shí)很脆弱,假設(shè)VCC上升沿時(shí)有臺(tái)階或者倒鉤怎么辦?哈哈,第一個(gè)問題出現(xiàn)了:
1.復(fù)位時(shí)間變短
我們可以看到,VCC上電時(shí),第一次到達(dá)閾值電壓后, 芯片已經(jīng)開始工作,也就是開始復(fù)位了,可是偏偏電源不爭(zhēng)氣, 又倒回來回到閾值以下,所以復(fù)位的時(shí)間只能從VCC第二次上升到閾值電壓開始算, 那么可以明顯看到復(fù)位時(shí)間變短了,因?yàn)槊恳粋€(gè)芯片對(duì)復(fù)位的時(shí)間是有要求的, 如果復(fù)位時(shí)間不夠,帶來的后果是每次上電不一樣, 有時(shí)候起來,有時(shí)候起不來,高低溫測(cè)試時(shí)情況可能會(huì)更糟糕。
2.快速熱插拔
當(dāng)用戶快速拔出然后插入電源時(shí),VCC上會(huì)有一個(gè)跌落, 但是這個(gè)跌落由于阻容RC的平滑作用, 在Reset上并沒有得到足夠深的跌落,由于VCC的跌落把MCU內(nèi)部已經(jīng)搞亂了,但是復(fù)位信號(hào)卻沒有起作用, 芯片會(huì)產(chǎn)生lock out或者latch up。
在產(chǎn)品的使用過程中,很常見的現(xiàn)象是,很多人會(huì)快速插拔一下電源,結(jié)果導(dǎo)致的現(xiàn)象是起不來了,只有再次拔出電源,然后稍等一會(huì)兒再插入電源才行。
這種快速熱插拔導(dǎo)致的問題,在我原來C公司的ASR***系列路由器上導(dǎo)致I2Cexpander lockout,此問題出現(xiàn)在已經(jīng)銷售出去的產(chǎn)品上, 而且軟件解決不了,所以引發(fā)的后果是非常嚴(yán)重的,至于為什么EVT沒有測(cè)試出來,這個(gè)可以理解的,因?yàn)橹挥袠颖径嗔耍艜?huì)出現(xiàn)林子大了什么鳥都有的故事。
3.電源上出現(xiàn)Glitch
這種情況在系統(tǒng)工作過程中,如果受到外界的干擾或者電源太爛,VCC有時(shí)候會(huì)出現(xiàn)Glitch,此時(shí)如果有專門的POR芯片來trigger Reset,那當(dāng)然沒問題了,可惜我們使用的是阻容RC的Reset方式。
由于電源上的Glitch時(shí)間短,經(jīng)過RC積分后的Reset信號(hào)跌落變得更加小,小到不足以觸發(fā)復(fù)位(這一點(diǎn)和上面的快速熱插拔原理相同),所以很明顯系統(tǒng)會(huì)死機(jī),而且死機(jī)了就只能插拔電源,并且不能快速插拔才能恢復(fù)正常。
為了證明本人沒有胡說八道,我把大牛Howard Johnson的一段話摘錄一下,請(qǐng)讀者仔細(xì)品味。
Power interruptions drive power-on-reset circuits crazy. Consider what a power dropout does to the circuit in Figure 1. Imagine that the RC time constant in this figure is 1 sec. Let VCC come up and stabilize at full voltage for perhaps 10 sec.
Next, apply an ac power interruption just long enough to drop VCC to 0V for about 100 msec. 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.
4.上電順序被破壞
這里有人想不通了,我上電慢一點(diǎn)和上電順序有啥關(guān)系啊,請(qǐng)聽我圖文并茂的說明如下:
MCU的上電時(shí)序要求如下:5V -> 1.8V->3.3V -> Reset.
當(dāng)在5V上面出現(xiàn)下面兩種情況時(shí),就會(huì)產(chǎn)生問題(事實(shí)USB 5V供電時(shí),有些產(chǎn)品的電源質(zhì)量很差,我們無法預(yù)料5V輸出的情況)。
1)上電時(shí)5V有臺(tái)階或者回溝
2)運(yùn)行過程中5V有Dip或者Glitch
我們看到由于5V電源的快速跌落,1.8V由于負(fù)載重電流大,很快電就放光了,跌落到0V,而且3.3V由于輕載,來不及放電,跌落很小,所以上電順序變成了3.3V = Reset->5V->1.8V,帶來的問題有兩個(gè):
1)重新上電后,由于3.3V一直在,所以變成3.3V先上電了,這個(gè)和第一次上電的1.8V先上電的要求反過來了,后果很簡(jiǎn)單,芯片很容易latchup, 起不來,或者燒毀
2)由于采用的3.3V RC復(fù)位,那么此次由于3.3V來不及放電,Reset信號(hào)也根本沒有反應(yīng),你想想CPU內(nèi)核的電源都掉過了,系統(tǒng)居然沒有復(fù)位信號(hào),這也太說不過去了吧,不只芯片起不來,而且非常的危險(xiǎn)。
總結(jié)一下,當(dāng)我們?cè)诤?jiǎn)單的MCU系統(tǒng)采用RC的方式產(chǎn)生Reset時(shí),要評(píng)估好風(fēng)險(xiǎn),對(duì)于電源輸出質(zhì)量很好, 并且不會(huì)出現(xiàn)客戶經(jīng)常熱插拔的產(chǎn)品是OK的。反之,如果是一些客戶經(jīng)常即插即用的周邊設(shè)備,就要注意小心選擇你的R和C的值,在滿足復(fù)位時(shí)間的基礎(chǔ)上,盡量短,越長(zhǎng)越不安全, 另外注意測(cè)試你使用電源電路確保不要出現(xiàn)臺(tái)階,倒鉤,還有太長(zhǎng)的上升時(shí)間。
硬件工程師有時(shí)候做原理圖設(shè)計(jì)的時(shí)候,有很多參考設(shè)計(jì)可以抄,問題是我們?cè)诔瓌e人原理圖的時(shí)候要知道Why,不能抄的一點(diǎn)技術(shù)含量都沒有,這樣才能進(jìn)步。
-
mcu
+關(guān)注
關(guān)注
146文章
16993瀏覽量
350318 -
pcb
+關(guān)注
關(guān)注
4317文章
23007瀏覽量
396311
原文標(biāo)題:讓你目瞪口呆的那些坑:電源上電
文章出處:【微信號(hào):eda365wx,微信公眾號(hào):EDA365電子論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論