細節決定品質,這句話人盡皆知。但是,在電子產品的開發實踐中,真正做到充分地處理細微之處,并非易事。細節處理不充分,在通常作業條件下,產品能夠運行正常;但是當作業條件惡化(例如,電源波動,噪聲干擾),可能會出現意想不到的負面結果。而電子產品質量的優劣,更多是在惡劣作業條件下才能充分體現出來。
我們以下圖所示的上拉電阻為例,聊聊細節處理對電子產品質量的重要性。

上拉電阻的主要作用,是為了保證輸入型 I/O埠在無外部輸入信號時,保持確定的高電平。這一點對于即使剛入門的電子工程師,通常也是能夠理解、掌握的。那么對于上拉電阻的阻值,該如何選擇呢?通常,我們會根據典型電路或參考書籍上的示例,選擇 4.7K, 5.1K, 10K 等。那么,這個阻值的選擇,有什么限制嗎 ?答案是有限制的。
如果我們閱讀MCU手冊的電特性單元,會發現I/O 部分有一個引數 IOL,用于表征 I/O 埠作為輸出埠且輸出低電平時,埠輸入的電流值,而這個引數存在最大電流值的限制。上拉電阻的阻值限制,正是和這個引數相關,需滿足上拉電阻 R > Vcc / IOL (max)。
上拉電阻,是用于輸入型的 I/O 埠,為什么其限制值和輸出埠的引數 IOL 相關呢?這就涉及上拉電阻的另外一個作用-例外發生時的安全防護功能。
我們都知道,上拉電阻是用于輸入方向的 I/O 埠。而埠的方向選擇,通常是由方向暫存器設定的。在通常的作業條件下,方向一旦設定,不會發生變化,除非應用程式通過指令變更其方向設定。但是,如果作業環境存在強噪聲,方向暫存器中的設定值可能會被意外修改,使原本設定為輸入型的I/O 埠變更為輸出埠。如果此時埠緩沖器的資料恰好是 0 ,則有電流從VCC流經上拉電阻和埠的 N 管。如果上拉電阻值很小,則會出現電流過大的情形,甚至造成I/O埠的硬體損壞。
因此,上拉電阻的阻值選擇,不僅考慮埠作為輸入方向時、利用該電阻使埠有確定的初始值,還需考慮例外發生時,不會因埠方向變更造成埠的損壞。
我們再來看下圖中關于上拉電阻的方案:

從邏輯功能看,這樣的處理可以保證每個埠的高電平,并且節約了上拉電阻的數量。但是,這種處理方法存在潛在的風險。如前文所述,當作業環境中存在強噪聲時,方向暫存器可能會被意外篡改。如果共用上拉電阻的兩個埠都被意外篡改為輸出埠,并且恰好一個埠的資料緩沖器資料 = 1, 另外一個埠的資料緩沖器資料 = 0,那么會有從一個埠的P管流經另外一個埠N管的大電流產生,可能會造成埠的損壞。
因此,不推薦多個埠共用同一個上拉電阻的處理方法。安全的處理方法是,每個埠通過單獨的上拉電阻連接到電源,如下圖所示。

所以說,簡單的上拉電阻這樣的細節,對產品的品質也是非常重要的。
uj5u.com熱心網友回復:
公用上拉電阻可以實作線與uj5u.com熱心網友回復:
謝謝評論@worldy。轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/175337.html
標籤:單片機/工控
下一篇:2006-京淘Day14
