看了GPIO內(nèi)部電路原理,有了恍然大悟的理解
發(fā)布時(shí)間:2024-10-12作者:admin點(diǎn)擊:105
筆者近日在B站刷到了一個(gè)視頻,使我對(duì)GPIO的I/O口內(nèi)部基本結(jié)構(gòu)以及工作原理有了恍然大明白的理解,現(xiàn)在對(duì)此做一個(gè)總結(jié),并為大家推薦該視頻Keysking
【STM32】GPIO內(nèi)部電路原理
前言
GPIO內(nèi)部結(jié)構(gòu)概覽
GPIO內(nèi)部結(jié)構(gòu)詳解
保護(hù)電路
輸出電路
推挽輸出
開漏輸出
輸入電路
總結(jié)
參考資料
GPIO內(nèi)部結(jié)構(gòu)概覽
結(jié)構(gòu)關(guān)系圖如下圖所示
GPIO內(nèi)部結(jié)構(gòu)詳解
保護(hù)電路
PS:
當(dāng)I/O口為FT 5V容忍時(shí),其上方保護(hù)二極管電壓Vdd = 5V
保護(hù)二極管不能長期導(dǎo)通,否則會(huì)燒壞保護(hù)二極管。所以保護(hù)電路只能抵御一瞬間的電壓波動(dòng),較長時(shí)間的電壓波動(dòng)仍會(huì)損壞芯片
輸出電路
推挽輸出
流程圖:
代碼 –> 寄存器 –> 輸出控制器 –> 控制P-MOS/N-MOS的導(dǎo)通與斷開 –> 輸出的電壓
分類討論:
SET置1:P-MOS導(dǎo)通 N-MOS斷開 芯片輸出3.3V(此電壓由芯片輸出,所以推挽輸出有驅(qū)動(dòng)能力
RESET置0:P-MOS斷開 N-MOS導(dǎo)通 芯片輸出0V
開漏輸出
前提:在開漏輸出下,P-MOS一直斷開,所以在圖上我直接將其刪去以簡(jiǎn)化單路
以I/O口外接工作電壓為5v的小燈泡為例
開漏輸出更像是一個(gè)電子開關(guān),小燈泡的工作電壓由小燈泡外接的5V提供(注意,此I/O口需5V容忍)。因?yàn)殡妷河赏獠刻峁?,所以開漏輸出無驅(qū)動(dòng)能力(他只是個(gè)電子開關(guān) 不提供電壓 所以當(dāng)然沒驅(qū)動(dòng)能力)
分類討論:
SET置1:N-MOS導(dǎo)通 電路通路 小燈泡電壓由外部5V提供 燈亮
RESET置0:N-MOS斷開 電路內(nèi)部高阻態(tài) 電路斷路 無電流 燈滅
所以,開漏輸出的高電平實(shí)際是高阻態(tài) 無法輸出電流 無驅(qū)動(dòng)能力
輸入電路
上下拉電阻:
Pull-up上拉:開關(guān)1閉合,I/O引腳內(nèi)部上拉
Pull-down下拉:開關(guān)2閉合,I/O引腳內(nèi)部下拉
不上拉也不下拉:開關(guān)1、2均不閉合,I/O引腳內(nèi)部浮空 電平不確定
PS:I/O口輸入可以配置內(nèi)部的上下拉電阻,為硬件功能實(shí)現(xiàn)提供了更多的可能(比如KEY按鍵模塊中,如果KEY模塊沒有配置外部的上拉電阻,則可以通過自行配置內(nèi)部的上下拉電阻來實(shí)現(xiàn)功能。
TTL肖特基觸發(fā)器:
實(shí)際上是模擬電壓 –> 數(shù)字電壓
高低參考電壓之間,維持原本電平信號(hào)不變,以此來抗噪聲
PS:
Q:為什么沒有復(fù)用輸入模式?
A:因?yàn)閺?fù)用功能輸入與通用功能輸入可以同時(shí)讀取施密特觸發(fā)器的輸
總結(jié)
對(duì)于GPIO內(nèi)部結(jié)構(gòu)而言,通過不同的配置可以完成不同的輸入輸出功能
輸出:
代碼 –> 寄存器 –> 輸出控制模塊 –> 控制P-MOS與N-MOS的導(dǎo)通與斷開情況 –> 推挽/開漏輸出
輸入:
I/O口輸入模擬電壓 –> 上下拉電阻 –> 施密特觸發(fā)器 –> 數(shù)字電壓 –> 存儲(chǔ)到輸入數(shù)據(jù)寄存器