我們在設計板子的時候,往往注意那些看起來比較核心,比較關鍵的部分,對于那些邊邊角角的地方可能不夠注意,但是這些地方往往帶來災難性的后果。
比如說電源的上電時序,我們需要注意系統電源的上升時間,很多人不理解,上電就上電啊,為啥一定規定上升時間?告訴你,這里面處理不好,問題可就大了。
下面舉個例子:
很多簡單的基于MCU的產品采用下面的方式來做Reset,這樣做行不行呢? 當然可以, 為什么呢? 因為那么多產品都這么做了,也沒有聽說過有什么問題,當然OK啦。
今天我們就來用最簡單的方式來描述這個究竟會不會有問題。
首先我們來看理想情況下的上電復位是什么情況:
當VCC到達MCU的工作電壓閾值的時候,MCU開始工作,復位信號20ms以后拉高,Perfect!問題是現實和理想總是有距離的,我們先來看看采用上圖RC充電的復位方式會得到什么樣的波形:
我們可以看到即便當VCC上電完美的時候,我們也需要確保Reset充電充到Vih的時候,時間要大于20ms,可是現實真的如此嗎?
可惜理想和現實還有一點距離,請看上面這張圖,從VCC上電到達工作電壓閾值,到Reset慢慢充電到達Vih,這段時間就是我們需要的復位時間,可是這種情況其實很脆弱,假設VCC上升沿時有臺階或者倒鉤怎么辦?哈哈,第一個問題出現了:
1.復位時間變短
我們可以看到,VCC上電時,第一次到達閾值電壓后, 芯片已經開始工作,也就是開始復位了,可是偏偏電源不爭氣, 又倒回來回到閾值以下,所以復位的時間只能從VCC第二次上升到閾值電壓開始算, 那么可以明顯看到復位時間變短了,因為每一個芯片對復位的時間是有要求的, 如果復位時間不夠,帶來的后果是每次上電不一樣, 有時候起來,有時候起不來,高低溫測試時情況可能會更糟糕。
2.快速熱插拔
當用戶快速拔出然后插入電源時,VCC上會有一個跌落, 但是這個跌落由于阻容RC的平滑作用, 在Reset上并沒有得到足夠深的跌落,由于VCC的跌落把MCU內部已經搞亂了,但是復位信號卻沒有起作用, 芯片會產生lock out或者latch up。
在產品的使用過程中,很常見的現象是,很多人會快速插拔一下電源,結果導致的現象是起不來了,只有再次拔出電源,然后稍等一會兒再插入電源才行。
這種快速熱插拔導致的問題,在我原來C公司的ASR***系列路由器上導致I2Cexpander lockout,此問題出現在已經銷售出去的產品上, 而且軟件解決不了,所以引發的后果是非常嚴重的,至于為什么EVT沒有測試出來,這個可以理解的,因為只有樣本多了,才會出現林子大了什么鳥都有的故事。
3.電源上出現Glitch
這種情況在系統工作過程中,如果受到外界的干擾或者電源太爛,VCC有時候會出現Glitch,此時如果有專門的POR芯片來trigger Reset,那當然沒問題了,可惜我們使用的是阻容RC的Reset方式。
由于電源上的Glitch時間短,經過RC積分后的Reset信號跌落變得更加小,小到不足以觸發復位(這一點和上面的快速熱插拔原理相同),所以很明顯系統會死機,而且死機了就只能插拔電源,并且不能快速插拔才能恢復正常。
為了證明本人沒有胡說八道,我把大牛Howard Johnson的一段話摘錄一下,請讀者仔細品味。
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.上電順序被破壞
這里有人想不通了,我上電慢一點和上電順序有啥關系啊,請聽我圖文并茂的說明如下:
MCU的上電時序要求如下:5V -> 1.8V->3.3V -> Reset.
當在5V上面出現下面兩種情況時,就會產生問題(事實USB 5V供電時,有些產品的電源質量很差,我們無法預料5V輸出的情況)。
1)上電時5V有臺階或者回溝
2)運行過程中5V有Dip或者Glitch
我們看到由于5V電源的快速跌落,1.8V由于負載重電流大,很快電就放光了,跌落到0V,而且3.3V由于輕載,來不及放電,跌落很小,所以上電順序變成了3.3V = Reset->5V->1.8V,帶來的問題有兩個:
1)重新上電后,由于3.3V一直在,所以變成3.3V先上電了,這個和第一次上電的1.8V先上電的要求反過來了,后果很簡單,芯片很容易latchup, 起不來,或者燒毀
2)由于采用的3.3V RC復位,那么此次由于3.3V來不及放電,Reset信號也根本沒有反應,你想想CPU內核的電源都掉過了,系統居然沒有復位信號,這也太說不過去了吧,不只芯片起不來,而且非常的危險。
總結一下,當我們在簡單的MCU系統采用RC的方式產生Reset時,要評估好風險,對于電源輸出質量很好, 并且不會出現客戶經常熱插拔的產品是OK的。反之,如果是一些客戶經常即插即用的周邊設備,就要注意小心選擇你的R和C的值,在滿足復位時間的基礎上,盡量短,越長越不安全, 另外注意測試你使用電源電路確保不要出現臺階,倒鉤,還有太長的上升時間。
硬件工程師有時候做原理圖設計的時候,有很多參考設計可以抄,問題是我們在抄別人原理圖的時候要知道Why,不能抄的一點技術含量都沒有,這樣才能進步。
-
mcu
+關注
關注
146文章
17162瀏覽量
351348 -
pcb
+關注
關注
4319文章
23105瀏覽量
398132
原文標題:讓你目瞪口呆的那些坑:電源上電
文章出處:【微信號:eda365wx,微信公眾號:EDA365電子論壇】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論