1、引言
STC8系列單片機的輸入/輸出口(英文是:Input/Output Interface,下文簡稱為:I/O口)有4種可以通過軟體配置的工作模式。其分別是:準雙向口、推輓輸出、開漏輸出和高阻輸入這4種工作模式,或者稱之為:I/O口的4種可配置電路結構。在學習和設計產品的過程中,該如何理解和使用這4種輸入/輸出口的工作模式呢?
2、準雙向口工作模式
STC8系列單片機輸入/輸出口的準雙向口工作模式內部電路結構如圖1所示。雖然準雙向口工作模式的內部電路結構看起來比較複雜,但是,在進行硬體電路設計和軟體編程過程中,僅僅需要知道以下兩個基本操作原理即可。
(1)當某個I/O口為輸出口時,向埠鎖存器寫入「1」,該I/O口內部電路下面的MOSFET截止,上邊的某個MOSFET導通,對外輸出至埠引腳為高電平;向埠鎖存器寫入「0」,該I/O口內部電路下面的MOSFET導通,上邊的某個MOSFET導通,對外輸出至埠引腳為低電平。
(2)當某個I/O口作為輸入口時,先向埠鎖存器寫入「1」,該I/O口內部電路下面的MOSFET截止,上邊的某個MOSFET導通,埠引腳為高電平,處於輸入狀態。此時,當I/O口埠引腳為高電平時,讀取到的I/O口狀態為「1」;當I/O埠引腳為低電平時,讀取到的I/O口狀態為「0」。下次再讀取該I/O口的輸入狀態時,按照上述操作方式進行讀取即可。
在圖1中所示「弱」、「極弱」和「強」的3隻具備上拉作用的MOSFET是STC8系列單片機I/O準雙向口工作模式特有的電路結構。其上拉有效的時機為:
(1)弱上拉MOSFET有效的時機:當某I/O埠鎖存器和引腳都為「1」時,弱上拉MOSFET導通,給準雙向口提供基本的驅動電流,使該I/O埠引腳輸出為高電平。當該I/O埠引腳輸入為低電平時,弱上拉MOSFET關閉,極弱上拉MOSFET導通。當弱上拉MOSFET有效導通時,如果單片機供電電壓為DC 5V,那麼,其導通電流約為250μA;如果單片機供電電壓為DC 3.3V,那麼,其導通電流約為150μA。由此可知:當STC8系列單片機採用DC 3.3V供電電壓,I/O準雙向口的功耗比較小。
(2)極弱上拉MOSFET有效的時機:當某I/O埠鎖存器和引腳都為「1」或懸空,且對應引腳輸入為低電平時,極弱上拉MOSFET導通,提供非常小的上拉導通電流用於維持該I/O埠引腳的高電平狀態。當極弱上拉MOSFET有效導通時,如果單片機供電電壓為DC 5V,那麼,其導通電流約為18μA;如果單片機供電電壓為DC 3.3V,那麼,其導通電流約為5μA。由此可知:當STC8系列單片機採用DC 3.3V供電電壓,I/O準雙向口的功耗比較小。
(3)強上拉MOSFET有效的時機:當某I/O埠鎖存器由「0」到「1」跳變時,在延時約2個CPU時鐘後,快速的導通,使該I/O埠引腳迅速的處於高電平狀態。
注意:通過以上對STC8系列單片機I/O準雙向口工作模式和內部電路的分析,一直在提I/O準雙向口3隻上拉MOSFET的導通狀態,沒有討論其截止狀態,其實,為了保證I/O準雙向口的正常工作,3隻上拉MOSFET至少有一隻要始終保持導通狀態,具體是那一隻導通,要根據以上3隻上拉MOSFET有效的時機進行判斷。
另外,從圖1中可以看出:STC8系列單片機I/O準雙向口輸入電路由一個幹擾抑制電路和施密特觸發器組成,說明該系列單片機I/O口的輸入接口抗幹擾能力比較好。
3、推輓輸出工作模式
STC8系列單片機輸入/輸出口的推輓輸出工作模式內部電路結構如圖2所示。該工作模式的內部電路結構與準雙向口模式相仿,少了「弱」和「極弱」兩隻上拉MOSFET。對於同一個I/O口而言,圖1和圖2中的強上拉MOSFET,很有可能是同一隻MOSFET,不過,其在準雙向口和推輓輸出模式下的有效導通時機和狀態不同。在準雙向口工作模式下,當I/O埠鎖存器出現由「0」至「1」的跳變時,強上拉MOSFET用於快速的把埠引腳上拉至高電平,然後,由「弱」或「極弱」上拉MOSFET維持埠引腳的高電平狀態(猜測:正常情況下,由於極弱上拉MOSFET導通電流最小,因此,一般是其導通維持埠引腳處於高電平狀態)。在推輓輸出工作模式下,當I/O埠鎖存器為「1」時,強上拉MOSFET持續導通,其最大能提供20mA的拉電流。注意:雖然I/O口推輓輸出工作模式能夠提供最大20mA的拉電流,但是,通過STC8單片機VCC引腳的供電電流最大不能超過90mA。
I/O口推輓輸出工作模式與準雙向口工作模式除了以上不同之外,其輸入內部電路與準雙向口工作模式相同。在此不在詳述。
4、開漏輸出工作模式
STC8系列單片機輸入/輸出口的開漏輸出工作模式內部電路結構如圖3所示。該工作模式與準雙向口和推輓輸出工作模式最大的不同是:其無上拉MOSFET,即在開漏輸出工作模式,I/O埠引腳內部電路所接的所有上拉MOSFET都處於截止無效狀態。該工作模式能夠比較好的匹配外接不同工作電源電壓的邏輯電路類外設(注意:一般不建議不同工作電源電壓的邏輯電路晶片進行直接連接,如果I/O口的工作模式設置不對,那麼,有可能導致單片機I/O埠承受過高電壓而損壞)。由於開漏輸出模式無片內上拉MOSFET,因此,必須在I/O埠引腳上外接上拉電阻,才能保證能夠使該I/O口具備正常的輸入和輸出功能。在外接上拉電阻的情況下,其輸入和輸出功能詳見準雙向口工作模式下的說明。
5、高阻輸入工作模式
STC8系列單片機輸入/輸出口的高阻輸入工作模式內部電路結構如圖4所示。該工作模式僅有輸入功能,而且其輸入內部電路結構與以上3種工作模式相同,即:當I/O口配置為高阻輸入工作模式時,沒有片內上拉MOSFET、上拉電阻和下拉MOSFET,I/O埠引腳處於完全懸空狀態。我覺得該工作模式最大好處是:把I/O口配置為高阻輸入模式時,其消耗的輸入電流主要有外置的上拉電阻確定,可以做的僅可能的低功耗,單片機自身I/O口處於高阻輸入工作模式,消耗電流非常小。注意:當STC8系列單片機I/O口配置為高阻輸入工作模式時,一定在對應I/O埠引腳上外置上拉電阻,保證I/O口輸入電平的穩定。
6、使用輸入/輸出口的經驗
以上關於STC8系列單片機輸入/輸出口4種工作模式的描述,不需要死記硬背,僅僅需要理解或者了解其基本工作原理即可。當採用STC8系列單片機進行產品硬體設計時,一般需要注意以下事項和經驗規則:
(1)一般在成本和印製電路板面積要求不是特別嚴格的情況下,為了保證單片機I/O埠引腳高低電平的可靠和穩定,通常在I/O埠引腳上外置4.7kΩ、5.1kΩ或10kΩ的上拉電阻(注意:上拉電阻越大,邏輯工作所需功耗越小,但是,其壞處是脈衝上升沿變得越緩慢,應根據實際情況進行調整)。
(2)對於成本和印製電路板面積特別受限的產品而言,可以有限的利用I/O口的推輓輸出模式下拉電流大可以直接驅動外部負載和準雙向口、推輓輸出與開漏輸出工作模式下灌電流大的特性節省成本和印製電路板面積,但是,這種方式僅限於玩具等商業消費類,且對可靠性和安全性無特殊要求的產品設計中。在工業、電力、測試測量、軌道交通等產品中,嚴禁使用。
(3)STC8系列單片機流入VCC供電引腳和流出GND接地引腳的最大電流不能超過90mA,否則,容易導致單片機工作異常或損壞。
歡迎關注我的百家號:愛搗鼓!獲得更多關於STC8系列單片機的精彩文章。謝謝!