經常會聽到MCU某I/O的驅動能力是xxmA,那么到底什么是驅動能力呢?如果某IO的驅動能力是5mA,它就輸出不了超過5mA的電流了嗎?為什么IO的驅動能力有差異呢?
要回答以上問題,需要先了解MCU內部的I/O結構,
(本圖來源于STM32F103參考手冊)
當輸出高電平1時,I/O內部VDD經過PMOS流向I/O引腳,如下圖紅色箭頭所示,
這時驅動能力是指,在輸出電流小于等于最大輸出電流的情況下,I/O引腳可以正常的輸出邏輯1。
P-MOS管的源極(S)接VDD,當MCU輸出1時,P-MOS管導通,電流從源極(S)流向漏極(D)。I/O引腳外接負載大小不同,流過P-MOS管的電流、VDS(源漏電壓)就會不同。輸出電流越大,VDS越大,I/O電壓就越小。當電壓低到Voh時的這個輸出電流,就表示驅動能力。
當輸出低電平0時,I/O引腳經過N-MOS流向I/O內部VSS,如下圖紅色箭頭所示
這時驅動能力是指,在小于等于最大輸入電流的情況下,I/O引腳可以正常的輸出邏輯0。道理同上,流過N-MOS電流越大,N-MOS產生壓降越大,I/O口電壓越大。當電壓達到邏輯0的最高電壓Vol時,這時的電流就表示驅動能力。
以上看明白后,文章開頭的3個問題也就有了答案,
1)I/O驅動能力是指在同時滿足Voh(輸出引腳為邏輯1時的最小電壓值) 和 Vol(輸出引腳為邏輯0時的最大電壓值)前提下,最大可以輸出和吸收的電流大小。Voh和Vol的值在芯片數據手冊中可以查到。
2)如果某I/O的驅動能力是5mA,并不是表示它輸出不了超過5mA的電流,只是當輸出電流超過5mA之后,它的輸出電壓會下降,電壓會小于Voh。
3)I/O驅動能力的差異來源于MOS管自身的特性,要想過電流能力大,MOS管體積就要大,芯片所需的面積就會更大,成本自然也會更高。所以通常MCU只是一部分I/O具有高驅動能力,并不是每一個I/O都做成了高驅動能力。
說了這么多,其實可以用下面這個簡單的電路來解釋,
MCU的IO引腳上外接一個電阻到GND,只要這個電阻不是太小,那么IO引腳的電壓是基本不變的,只是微小的下降。電阻很小、電流較大時,電壓會明顯下降。
感興趣的可以實際測試下,不過要注意別把電流整太大燒壞IO哦。