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

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

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

STM32的八種GPIO工作方式詳解

傳感器技術(shù) ? 來源:工程師曾玲 ? 2018-12-30 16:44 ? 次閱讀

STM32的GPIO介紹

STM32引腳說明

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的大部分引腳除了當(dāng)GPIO使用之外,還可以復(fù)用位外設(shè)功能引腳(比如串口),這部分在【STM32】STM32端口復(fù)用和重映射(AFIO輔助功能時鐘) 中有詳細(xì)的介紹。

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

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

STM32的八種GPIO工作方式詳解

這邊的電路圖稍微提一下:

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

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

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

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

STM32的GPIO工作方式

GPIO支持4種輸入模式(浮空輸入、上拉輸入、下拉輸入、模擬輸入)和4種輸出模式(開漏輸出、開漏復(fù)用輸出、推挽輸出、推挽復(fù)用輸出)。同時,GPIO還支持三種最大翻轉(zhuǎn)速度(2MHz、10MHz、50MHz)。

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

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ù)用推挽輸出

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

浮空輸入模式

STM32的八種GPIO工作方式詳解

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

上拉輸入模式

STM32的八種GPIO工作方式詳解

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

下拉輸入模式

STM32的八種GPIO工作方式詳解

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

模擬輸入模式

STM32的八種GPIO工作方式詳解

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

開漏輸出模式

STM32的八種GPIO工作方式詳解

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

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

STM32的八種GPIO工作方式詳解

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

推挽輸出模式

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

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

STM32的八種GPIO工作方式詳解

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

總結(jié)與分析

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

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

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

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

開漏輸出:只可以輸出強(qiáng)低電平,高電平得靠外部電阻拉高。輸出端相當(dāng)于三極管的集電極。適合于做電流型的驅(qū)動,其吸收電流的能力相對強(qiáng)(一般20ma以內(nèi));

推挽輸出:可以輸出強(qiáng)高、低電平,連接數(shù)字器件。

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

STM32的八種GPIO工作方式詳解

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

3、在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)輸出高電平。當(dāng)輸出為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)注

    2270

    文章

    10900

    瀏覽量

    355981
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1204

    瀏覽量

    52091

原文標(biāo)題:STM32的GPIO工作原理(附電路圖詳細(xì)分析)

文章出處:【微信號:WW_CGQJS,微信公眾號:傳感器技術(shù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    單片機(jī)中的定時計數(shù)器的四工作方式詳解

    /定時器。定時/計數(shù)器的四工作方式講解方式0為13位計數(shù)器,由TL(1/0)的低5位和TH(0/1)的8位組成,,此時TL(1/0)的高3位未用。M1、M0:定時/計數(shù)器一共有四
    發(fā)表于 04-30 06:30

    STM32GPIO工作方式

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

    小編科普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

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

    :與51單片機(jī)不同的是,對stm32GPIO來說,使用前需要設(shè)置其工作方式。一共有8工作方式:1、 輸入浮空2、 輸入上拉3、 輸入下拉
    發(fā)表于 02-28 07:17

    ST MCU_GPIO工作模式詳解

    補(bǔ)充:N、P型的區(qū)別,就是一個為正電壓啟動(NMOS),一個為負(fù)電壓啟動(PMOS)GPIO工作模式詳解浮空輸入_IN_FLOATIN
    發(fā)表于 10-28 20:51 ?13次下載
    ST MCU_<b class='flag-5'>GPIO</b>的<b class='flag-5'>八</b><b class='flag-5'>種</b><b class='flag-5'>工作</b>模式<b class='flag-5'>詳解</b>。

    STM32CubeMX-GPIO工作模式

    STM32IO口的工作模式:1)、GPIO_Mode_IN_FLOATING:浮空輸入2)、GPIO
    發(fā)表于 11-25 13:36 ?10次下載
    <b class='flag-5'>STM32CubeMX-GPIO</b>的<b class='flag-5'>八</b><b class='flag-5'>種</b><b class='flag-5'>工作</b>模式

    STM32STM32F4 GPIO模式及工作原理詳解

    STM32STM32F4 GPIO模式及工作原理詳解
    發(fā)表于 11-26 17:06 ?11次下載
    【<b class='flag-5'>STM32</b>】<b class='flag-5'>STM32</b>F4 <b class='flag-5'>GPIO</b><b class='flag-5'>八</b><b class='flag-5'>種</b>模式及<b class='flag-5'>工作</b>原理<b class='flag-5'>詳解</b>

    STM32的8GPIO輸入輸出模式

    STM32的8GPIO輸入輸出模式參考文章“STM32的8GPIO輸入輸出模式深入
    發(fā)表于 11-26 17:06 ?16次下載
    <b class='flag-5'>STM32</b>的8<b class='flag-5'>種</b><b class='flag-5'>GPIO</b>輸入輸出模式

    STM32STM32F4 GPIO模式及工作原理詳解

    STM32STM32F4 GPIO模式及工作原理詳解
    發(fā)表于 12-04 14:51 ?9次下載
    【<b class='flag-5'>STM32</b>】<b class='flag-5'>STM32</b>F4 <b class='flag-5'>GPIO</b><b class='flag-5'>八</b><b class='flag-5'>種</b>模式及<b class='flag-5'>工作</b>原理<b class='flag-5'>詳解</b>

    HAL庫的GPIO工作模式

    眾所周知,STM32GPIO工作模式有,但是打開HAL庫發(fā)現(xiàn),有12中可以供自己設(shè)置。先不要懵,下面解釋一下這12
    發(fā)表于 12-05 13:06 ?8次下載
    HAL庫的<b class='flag-5'>GPIO</b><b class='flag-5'>八</b><b class='flag-5'>種</b><b class='flag-5'>工作</b>模式

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

    GPIO是通用輸入/輸出端口的簡稱,是STM32可控制的引腳。GPIO的引腳與外部硬件設(shè)備連接,可實現(xiàn)與外部通訊、控制外部硬件或者采集外部硬件數(shù)據(jù)的功能。
    的頭像 發(fā)表于 07-11 10:08 ?1744次閱讀

    STM32使用GPIO配置的5方式

    STM32使用GPIO配置的5方式 STM32是常見的一微控制器,其
    的頭像 發(fā)表于 10-26 17:42 ?1469次閱讀