0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32的GPIO工作方式與基本結(jié)構(gòu)

STM32嵌入式開發(fā) ? 來源:STM32嵌入式開發(fā) ? 作者:STM32嵌入式開發(fā) ? 2022-07-11 10:08 ? 次閱讀

GPIO是通用輸入/輸出端口的簡稱,是STM32可控制的引腳。GPIO的引腳與外部硬件設(shè)備連接,可實現(xiàn)與外部通訊、控制外部硬件或者采集外部硬件數(shù)據(jù)的功能。

STM32F103ZET6芯片為144腳芯片,包括7個通用目的的輸入/輸出口(GPIO)組,分別為GPIOA、GPIOB、GPIOC、GPIOD、GPIOE、GPIOF、GPIOG,同時每組GPIO口組有16個GPIO口。通常簡略稱為PAx、PBx、PCx、PDx、PEx、PFx、PGx,其中x為0-15。

STM32的大部分引腳除了當GPIO使用之外,還可以復(fù)用為外設(shè)功能引腳,比如串口。相關(guān)文章:學(xué)習(xí)STM32單片機,繞不開的串口。

GPIO基本結(jié)構(gòu)

每個GPIO內(nèi)部都有這樣的一個電路結(jié)構(gòu),這個結(jié)構(gòu)在本文下面會具體介紹。

c315bc78-00bc-11ed-ba43-dac502259ad0.png

保護二極管:IO引腳上下兩邊兩個二極管用于防止引腳外部過高、過低的電壓輸入。當引腳電壓高于VDD時,上方的二極管導(dǎo)通;當引腳電壓低于VSS時,下方的二極管導(dǎo)通,防止不正常電壓引入芯片導(dǎo)致芯片燒毀。相關(guān)文章:如何用二極管實現(xiàn)不同電壓的輸出?但是盡管如此,還是不能直接外接大功率器件,須加大功率及隔離電路驅(qū)動,防止燒壞芯片或者外接器件無法正常工作。

P-MOS管和N-MOS管:由P-MOS管和N-MOS管組成的單元電路使得GPIO具有“推挽輸出”和“開漏輸出”的模式。這里的電路會在下面很詳細地分析到。

TTL肖特基觸發(fā)器:信號經(jīng)過觸發(fā)器后,模擬信號轉(zhuǎn)化為0和1的數(shù)字信號。但是,當GPIO引腳作為ADC采集電壓的輸入通道時,用其“模擬輸入”功能,此時信號不再經(jīng)過觸發(fā)器進行TTL電平轉(zhuǎn)換。ADC外設(shè)要采集到的原始的模擬信號。

這里需要注意的是,在查看《STM32中文參考手冊V10》中的GPIO的表格時,會看到有“FT”一列,這代表著這個GPIO口時兼容3.3V和5V的。如果沒有標注“FT”,就代表著不兼容5V。

STM32的GPIO工作方式

GPIO支持的輸入輸出模式:

GPIO_Mode_AIN 模擬輸入

GPIO_Mode_IN_FLOATING 浮空輸入

GPIO_Mode_IPD 下拉輸入

GPIO_Mode_IPU 上拉輸入

GPIO_Mode_Out_OD 開漏輸出

GPIO_Mode_Out_PP 推挽輸出

GPIO_Mode_AF_OD 復(fù)用開漏輸出

GPIO_Mode_AF_PP 復(fù)用推挽輸出

每個I/O口可以自由編程,但I/O口寄存器必須按32位字被訪問。

下面將具體介紹GPIO的這八種工作方式:

浮空輸入模式

c3299a54-00bc-11ed-ba43-dac502259ad0.jpg

浮空輸入模式下,I/O端口的電平信號直接進入輸入數(shù)據(jù)寄存器。也就是說,I/O的電平狀態(tài)是不確定的,完全由外部輸入決定;如果在該引腳懸空(在無信號輸入)的情況下,讀取該端口的電平是不確定的。

上拉輸入模式

c3313a0c-00bc-11ed-ba43-dac502259ad0.jpg

上拉輸入模式下,I/O端口的電平信號直接進入輸入數(shù)據(jù)寄存器。但是在I/O端口懸空(在無信號輸入)的情況下,輸入端的電平可以保持在高電平;并且在I/O端口輸入為低電平的時候,輸入端的電平也還是低電平。

下拉輸入模式

c3423d02-00bc-11ed-ba43-dac502259ad0.jpg

下拉輸入模式下,I/O端口的電平信號直接進入輸入數(shù)據(jù)寄存器。但是在I/O端口懸空(在無信號輸入)的情況下,輸入端的電平可以保持在低電平;并且在I/O端口輸入為高電平的時候,輸入端的電平也還是高電平。

模擬輸入模式

c355c37c-00bc-11ed-ba43-dac502259ad0.jpg

模擬輸入模式下,I/O端口的模擬信號(電壓信號,而非電平信號)直接模擬輸入到片上外設(shè)模塊,比如ADC模塊等等。

開漏輸出模式

c361ee7c-00bc-11ed-ba43-dac502259ad0.jpg

開漏輸出模式下,通過設(shè)置位設(shè)置/清除寄存器或者輸出數(shù)據(jù)寄存器的值,途經(jīng)N-MOS管,最終輸出到I/O端口。這里要注意N-MOS管,當設(shè)置輸出的值為高電平的時候,N-MOS管處于關(guān)閉狀態(tài),此時I/O端口的電平就不會由輸出的高低電平?jīng)Q定,而是由I/O端口外部的上拉或者下拉決定;當設(shè)置輸出的值為低電平的時候,N-MOS管處于開啟狀態(tài),此時I/O端口的電平就是低電平。同時,I/O端口的電平也可以通過輸入電路進行讀取;注意,I/O端口的電平不一定是輸出的電平。

開漏復(fù)用輸出模式

c36db860-00bc-11ed-ba43-dac502259ad0.jpg

開漏復(fù)用輸出模式,與開漏輸出模式很是類似。只是輸出的高低電平的來源,不是讓CPU直接寫輸出數(shù)據(jù)寄存器,取而代之利用片上外設(shè)模塊的復(fù)用功能輸出來決定的。

推挽輸出模式

c37b1366-00bc-11ed-ba43-dac502259ad0.jpg

推挽輸出模式下,通過設(shè)置位設(shè)置/清除寄存器或者輸出數(shù)據(jù)寄存器的值,途經(jīng)P-MOS管和N-MOS管,最終輸出到I/O端口。這里要注意P-MOS管和N-MOS管,當設(shè)置輸出的值為高電平的時候,P-MOS管處于開啟狀態(tài),N-MOS管處于關(guān)閉狀態(tài),此時I/O端口的電平就由P-MOS管決定:高電平;當設(shè)置輸出的值為低電平的時候,P-MOS管處于關(guān)閉狀態(tài),N-MOS管處于開啟狀態(tài),此時I/O端口的電平就由N-MOS管決定:低電平。同時,I/O端口的電平也可以通過輸入電路進行讀取;注意,此時I/O端口的電平一定是輸出的電平。

推挽復(fù)用輸出模式

c3837c2c-00bc-11ed-ba43-dac502259ad0.png

推挽復(fù)用輸出模式,與推挽輸出模式很是類似。只是輸出的高低電平的來源,不是讓CPU直接寫輸出數(shù)據(jù)寄存器,取而代之利用片上外設(shè)模塊的復(fù)用功能輸出來決定的。

總結(jié)與分析

什么是推挽結(jié)構(gòu)和推挽電路?

推挽結(jié)構(gòu)一般是指兩個參數(shù)相同的三極管或MOS管分別受兩互補信號的控制,總是在一個三極管或MOS管導(dǎo)通的時候另一個截止。高低電平由輸出電平?jīng)Q定。

推挽電路是兩個參數(shù)相同的三極管或MOSFET,以推挽方式存在于電路中,各負責正負半周的波形放大任務(wù)。電路工作時,兩只對稱的功率開關(guān)管每次只有一個導(dǎo)通,所以導(dǎo)通損耗小、效率高。輸出既可以向負載灌電流,也可以從負載抽取電流。推拉式輸出級既提高電路的負載能力,又提高開關(guān)速度。

開漏輸出和推挽輸出的區(qū)別?

開漏輸出:只可以輸出強低電平,高電平得靠外部電阻拉高。輸出端相當于三極管的集電極。適合于做電流型的驅(qū)動,其吸收電流的能力相對強(一般20ma以內(nèi));推挽輸出:可以輸出強高、低電平,連接數(shù)字器件。

關(guān)于推挽輸出和開漏輸出,最后用一幅最簡單的圖形來概括:

c3936ba0-00bc-11ed-ba43-dac502259ad0.jpg

該圖中左邊的便是推挽輸出模式,其中比較器輸出高電平時下面的PNP三極管截止,而上面NPN三極管導(dǎo)通,輸出電平VS+;當比較器輸出低電平時則恰恰相反,PNP三極管導(dǎo)通,輸出和地相連,為低電平。右邊的則可以理解為開漏輸出形式,需要接上拉。

在STM32中選用怎樣選擇I/O模式?

浮空輸入_IN_FLOATING ——浮空輸入,可以做KEY識別,RX1

帶上拉輸入_IPU——IO內(nèi)部上拉電阻輸入

帶下拉輸入_IPD—— IO內(nèi)部下拉電阻輸入

模擬輸入_AIN ——應(yīng)用ADC模擬輸入,或者低功耗下省電

開漏輸出_OUT_OD ——IO輸出0接GND,IO輸出1,懸空,需要外接上拉電阻,才能實現(xiàn)輸出高電平。當輸出為1時,IO口的狀態(tài)由上拉電阻拉高電平,但由于是開漏輸出模式,這樣IO口也就可以由外部電路改變?yōu)榈碗娖交虿蛔儭?梢宰xIO輸入電平變化,實現(xiàn)C51的IO雙向功能

推挽輸出_OUT_PP ——IO輸出0-接GND, IO輸出1 -接VCC,讀輸入值是未知的

復(fù)用功能的推挽輸出_AF_PP ——片內(nèi)外設(shè)功能(I2C的SCL、SDA)

復(fù)用功能的開漏輸出_AF_OD——片內(nèi)外設(shè)功能(TX1、MOSI、MISO.SCK.SS)

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • STM32
    +關(guān)注

    關(guān)注

    2257

    文章

    10826

    瀏覽量

    352428
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1172

    瀏覽量

    51510

原文標題:STM32的GPIO電路原理

文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    STM32 GPIO工作模式

    在之前圍繞STM32GPIO的基本結(jié)構(gòu)進行了介紹,圖1為STM32的5V容忍的GPIO口內(nèi)部基本結(jié)構(gòu)
    發(fā)表于 04-14 10:40 ?1710次閱讀
    <b class='flag-5'>STM32</b> <b class='flag-5'>GPIO</b>的<b class='flag-5'>工作</b>模式

    STM32 GPIO結(jié)構(gòu)圖講解 STM32中上拉電阻或下拉電阻的作用

    STM32中的GPIO為例,如上圖是GPIO結(jié)構(gòu)圖。另外關(guān)于GPIO工作原理,請移步此文:
    發(fā)表于 08-06 16:55 ?2892次閱讀
    <b class='flag-5'>STM32</b> <b class='flag-5'>GPIO</b><b class='flag-5'>結(jié)構(gòu)</b>圖講解 <b class='flag-5'>STM32</b>中上拉電阻或下拉電阻的作用

    STM32GPIO工作方式

    輸出下面將具體介紹GPIO的這八種工作方式:浮空輸入模式浮空輸入模式下,I/O端口的電平信號直接進入輸入數(shù)據(jù)寄存器。也就是說,I/O的電平狀態(tài)是不確定的,完全由外部輸入決定;如果在該引腳懸空(在無信號
    發(fā)表于 11-26 15:43

    測量系統(tǒng)結(jié)構(gòu)工作方式是什么?

    測量系統(tǒng)結(jié)構(gòu)工作方式是什么?如何選用圖像傳感器?
    發(fā)表于 06-02 06:06

    小編科普STM32GPIO工作方式有哪幾種

    GPIO工作原理是什么?GPIO的基本結(jié)構(gòu)是由哪些部分組成的?STM32GPIO
    發(fā)表于 08-06 09:13

    STM32芯片的GPIO有哪幾工作方式

    STM32F103ZET6芯片有多少引腳?STM32芯片的引腳有哪些特殊功能呢?STM32芯片的GPIO有哪幾工作方式呢?
    發(fā)表于 11-17 06:54

    GPIO基本結(jié)構(gòu)工作方式介紹

    GPIO的8種工作方式一、GPIO基本結(jié)構(gòu)工作方式1、戰(zhàn)艦/精英板2、Min板3、基本結(jié)構(gòu)4、
    發(fā)表于 01-11 07:02

    GPIO工作方式與基本結(jié)構(gòu)

    STM32引腳說明STM32F103ZET6 (GPIOA,GPIOB—GPIOG)-一共有7組IO口- 每組IO口有16個IO- 一共16X7=112個IOGPIO基本結(jié)構(gòu)GPIO
    發(fā)表于 01-25 08:07

    基于STM32F103ZET6開發(fā)板的GPIO有哪幾種工作方式

    基于STM32F103ZET6開發(fā)板的GPIO是由哪些部分構(gòu)成的?基于STM32F103ZET6開發(fā)板的GPIO有哪幾種工作方式?
    發(fā)表于 02-21 06:16

    STM32GPIO有哪幾種工作方式設(shè)置呢

    GPIO:每個連接到I/O總線上的設(shè)備都有自己的I/O地址集,即所謂的I/O端口,類似51單片機的P0~P3.而STM32 的每個 IO 端口都有 7 個寄存器來控制其工作方式的。端口位基本結(jié)
    發(fā)表于 02-28 07:17

    鼠標的工作方式

    鼠標的工作方式 工作方式是指鼠標采用什么工作原理或方式進行工作。常見的鼠標工作方式有滾輪式和光
    發(fā)表于 12-28 11:38 ?819次閱讀

    STM32的八種GPIO工作方式詳解

    GPIO是通用輸入/輸出端口的簡稱,是STM32可控制的引腳。
    的頭像 發(fā)表于 12-30 16:44 ?8927次閱讀
    <b class='flag-5'>STM32</b>的八種<b class='flag-5'>GPIO</b><b class='flag-5'>工作方式</b>詳解

    AD級聯(lián)的工作方式配置和AD雙排序的工作方式配置詳細說明

    本文檔的主要內(nèi)容詳細介紹的是AD級聯(lián)的工作方式配置和AD雙排序的工作方式配置詳細說明
    發(fā)表于 12-23 08:00 ?2次下載
    AD級聯(lián)的<b class='flag-5'>工作方式</b>配置和AD雙排序的<b class='flag-5'>工作方式</b>配置詳細說明

    STM32 GPIO基本結(jié)構(gòu)工作模式及其寄存器配置

    STM32引腳說明1.以STM32F103ZET6為例144引腳,共有七組GPIO,GPIOA——GPIOG,一組有16個IO口,一共112個IO口PA0——PA15GPIO基本
    發(fā)表于 01-13 16:33 ?0次下載
    <b class='flag-5'>STM32</b> <b class='flag-5'>GPIO</b>基本<b class='flag-5'>結(jié)構(gòu)</b>和<b class='flag-5'>工作</b>模式及其寄存器配置

    STM32使用GPIO配置的5種方式

    STM32使用GPIO配置的5種方式 STM32是常見的一種微控制器,其GPIO模塊可以實現(xiàn)對外部設(shè)備的控制和數(shù)據(jù)傳輸,包括數(shù)字I/O口、模
    的頭像 發(fā)表于 10-26 17:42 ?1223次閱讀