對于嵌入式硬件這個龐大的知識體系而言,太多離散的知識點很容易疏漏,因此對于這些容易忘記甚至不明白的知識點做成一個梳理,供大家參考以及學習,本文主要針對推挽、開漏、高阻態、上拉電阻這些知識點的學習。
GPIO基礎
下圖截取的數據手冊圖,里面包含了GPIO的相關模式的介紹。

MCU輸出時會有兩種模式,一種叫做推挽模式,一種是開漏模式,對于一個GPIO要么不就是輸出高電平不就是輸出低電平嗎,為什么還要有這兩種模式,答案在后文。
GPIIO內部結構簡圖
如下圖所示,我們要關注的也就是mos管的開關狀態,枚舉一下會有四種情況,如下所示:
Q1 | Q2 | OUT |
open | close | High |
close | open | Low |
close | close | Floating |
open | open | Short Circuit |
推挽的理解
當 Q1 PMOS 打開,Q2 NMOS 關閉,VCC給負載所在電路的給這顆 NMOS 的柵極供電,也就是推電流出去,輸出高電平,當Q1 PMOS 關閉,Q2 NMOS打開時,負載所在的電路的NMOS柵極放電,也就是挽電流回來,這里用的是 NMOS 也就是在此專欄的硬件篇專門講過為什么是NMOS,應用的場景也有說明,如果還是不懂可以回去看看。
開漏的理解 驅動能力強
開漏模式下不加外部上拉電阻的話如下圖所示,這種情況是不能接受的。
因此我們需要加一個外部電阻,上拉電阻。
第一個就是改變高電平的電壓,防止主控燒壞相關器件,例如在IIC中,我們想用主控控制一個芯片,但是主控輸出的高電平為5V, 芯片引腳只支持3.3V輸入 ,因此會造成芯片給燒毀等一系列不確定因素的問題了,因此我們就要使用開漏模式了,同時最主要的就是需要外接一個上拉電阻了,用來將5V拉低成3.3V。
也就是NMOS關閉就是高阻態,高電平由外部提供,打開就是低電平。
第二個作用就是可以讓幾個GPIO同時控制芯片,但是推挽就會造成短路。
這里補充一下,I2C總線理論上可以連接127個設備(7位地址模式),2^7 (本質就是前7位是地址后一位是方向 )減去一個設備0 就是127.
推挽和開漏的區別
輸出狀態 | 直接輸出高電平和低電平 | 只輸出低電平,或通過上拉電阻輸出高電平 |
驅動方式 | 雙向驅動(高電平和低電平) | 只有低電平驅動(高電平由外部提供) |
輸出能力 | 高驅動能力 | 低驅動能力(需要上拉電阻) |
適用場景 | 一般的數字輸出、控制信號 | 多設備共享總線、I2C、1-Wire等 |
優點 | 響應速度快,能提供較大電流 | 支持多設備共享,避免驅動沖突 |
缺點 | 不適合多個設備共享,功耗較大 | 需要外部上拉電阻,響應速度較慢 |
上拉電阻,到底在拉什么?
上拉電阻應用的場景
上拉電阻都會伴隨著mos管的出現,其實就是工作在開漏模式下的GPIO口,
但是如果例如相關外部芯片集成上拉電阻,我們就不用外部加了,如下圖所示:
上拉電阻如何取值?
絕大部分上拉電阻都是 1K-100K 之間,電阻小的話優點就是驅動能力強,電阻大的話漏電流小。
漏電流?驅動能力?是什么?
漏電流就是mos管打開時,會形成通路,如果這個電阻是1K的話,那這邊的漏電流就有5mA了,這個電流是白白浪費的,而且還會產生熱量。因此阻值當然是越大越好,但是驅動能力會弱。。
何為驅動能力?
也就是低電平向高電平的電平轉換的過程,雖然你看到的是一個瞬間的上升沿,但是其實刻度調大之后,低電平到高電平并不是瞬間完成的,也就是之前章節說到的爬升過程了。。也要結合相關芯片負載的硬件選型了,否則會有失真的情況了。
-- END --
免責聲明:本文轉自網絡,版權歸原作者所有,如涉及作品版權問題,請及時與我們聯系,謝謝!
-
上拉電阻
+關注
關注
5文章
365瀏覽量
30996 -
推挽
+關注
關注
1文章
75瀏覽量
33988 -
高阻態
+關注
關注
0文章
19瀏覽量
15622 -
開漏
+關注
關注
0文章
6瀏覽量
6078 -
嵌入式硬件
+關注
關注
1文章
953瀏覽量
8645
發布評論請先 登錄
評論