對於MCU晶片的假開漏輸出(OD)你瞭解多少

除了傳統51微控制器之外,一般的MCU都有較強的IO功能,可以設定為幾種常見的配置方式:推輓輸出、OD輸出、浮空輸入、上下拉輸入等。有時候,我們需要把IO設定為OD輸出方式,寫“0”時由下拉管主動把電壓拉低,寫“1”時由外部上拉至特定的電壓水平。OD門可用於實現訊號的相與,或者直接驅動較高電壓等級的電路。

然而,為了實現對IO口的保護,MCU廠家一般都會為每一個IO口對地VSS和電源VDD都並接反向二極體,可作為ESD保護。這樣一來,所謂的OD門輸出模式,其實是“假”的OD門。

以STM32為例(圖1),當IO設定為OD門時,只有下拉管N-MOS工作。向輸出暫存器寫0,N-MOS管導通,輸出低電平;向輸出暫存器寫1,N-MOS管截止,輸出為高阻。在圖中我們可以看到,管腳的末端被兩個反向二極體並接到VSS和VDD或者VDD_FT(5V容忍VDD)。就是說,外部對IO引腳的上拉電壓無法超過VDD或者5V(忽略二極體壓降),它們並不是嚴格意義上的OD門。

對於MCU晶片的假開漏輸出(OD)你瞭解多少

圖1

對於MCU晶片的假開漏輸出(OD)你瞭解多少

圖2

看圖2,意圖是用STM32(供電3。3V)的IO口PB9驅動一個三極體,用12V驅動一個負載,PB9設定為OD輸出方式,根據OD門的特性,好像這個電路是可以工作。由以上的分析得知,這個電路是有問題的,當往PB9輸出暫存器寫1時,IO口的電壓被上拉至5V(或5+0。7V),三極體還是導通,無法完成關斷操作。圖3

相比於圖2,圖3這個電路卻可以正常工作。首先,驅動負載的電壓變成了5V,查閱STM32的資料表得知,PB9這個引腳具有5V容忍能力,看圖4,I/O Level一欄有“FT”標記的IO口,都具有5V容忍能力。當這樣的IO口設定為OD門時,是可以驅動5V水平的電路的。

對於MCU晶片的假開漏輸出(OD)你瞭解多少

圖4

要注意的是,STM32只是有一部分的IO口具備5V容忍能力,圖4中PB5就不具備5V容忍,在設計電路的時候就要多加註意。