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

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

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

一文全面掌握stm32的GPIO知識

技術(shù)讓夢想更偉大 ? 來源:博客園 ? 作者: Simon223 ? 2022-10-31 14:22 ? 次閱讀

1 初學(xué)者重要提示

本文主要是以stm32H7系列為主。

對于不使用的引腳,推薦設(shè)置為模擬模式,懸空即可。

GPIO的速度等級高的時候,最好使能IO補償單元。

2 GPIO功能簡介

STM32H7的GPIO特性如下:

輸出狀態(tài):開漏/推挽 + 上拉/下拉電阻

通過輸出數(shù)據(jù)寄存器(GPIOx_ODR)或者外設(shè)(GPIO設(shè)置為復(fù)用模式時)輸出數(shù)據(jù)。

GPIO速度等級設(shè)置。

輸入狀態(tài):浮空,上拉/下拉,模擬。

通過輸入數(shù)據(jù)寄存器(GPIOx_IDR)或者外設(shè)(GPIO設(shè)置為復(fù)用模式)輸入數(shù)據(jù)。

通過寄存器GPIOx_BSRR實現(xiàn)對寄存器GPIOx_ODR的位操作。

通過配置寄存器GPIOx_LCKR的鎖機制,實現(xiàn)凍結(jié)IO口配置。

每兩個時鐘周期就可以翻轉(zhuǎn)一次IO。

高度靈活的引腳復(fù)用功能,允許IO引腳既可以做GPIO也可以做功能復(fù)用。

3 GPIO功能模式分析(重要)

STM32H7的GPIO端口可以配置為如下的8種模式:

輸入浮空

輸入上拉

輸入下拉

模擬功能

具有上拉或下拉功能的開漏輸出

具有上拉或下拉功能的推挽輸出

具有上拉或下拉功能的復(fù)用功能推挽

具有上拉或下拉功能的復(fù)用功能開漏

由于上拉和下拉是可選配置,對應(yīng)的HAL庫配置使用下面6種就可以表示:

GPIO_MODE_INPUT 輸入模式

GPIO_MODE_OUTPUT_PP 推挽輸出

GPIO_MODE_OUTPUT_OD 開漏輸出

GPIO_MODE_AF_PP 復(fù)用推挽

GPIO_MODE_AF_OD 復(fù)用開漏

GPIO_MODE_ANALOG 模擬模式

3.1 推挽輸出

443d09f8-56d7-11ed-a3b6-dac502259ad0.png

推挽電路是兩個參數(shù)相同的三極管或 MOSFET,以推挽方式存在于電路中。電路工作時,兩只對稱的開關(guān)管每次只有一個導(dǎo)通,導(dǎo)通損耗小、效率高。輸出既可以向負(fù)載灌電流,也可以從負(fù)載抽取電流。推拉式輸出級提高電路的負(fù)載能力。相對于開漏輸出模式,推挽輸出最大優(yōu)勢是輸出高電平時,上升時間快,電壓驅(qū)動能力強。

3.2 開漏輸出

4478542c-56d7-11ed-a3b6-dac502259ad0.png

開漏端相當(dāng)于 MOS 管的漏極(三極管的集電極),要得到高電平狀態(tài)必須外接上拉電阻才行,因此輸出高電平的驅(qū)動能力完全由外接上拉電阻決定,但是其輸出低電平的驅(qū)動能力很強。開漏形式的電路有以下幾個特點:

輸出高電平時利用外部電路的驅(qū)動能力,減少 IC 內(nèi)部的驅(qū)動。

開漏是用來連接不同電平的器件,匹配電平用的,因為開漏引腳不連接外部的上拉電阻時,只能輸出低電平。如果需要同時具備輸出高電平的功能,則需要接上拉電阻,很好的一個優(yōu)點是通過改變上拉電源的電壓,便可以改變傳輸電平。上拉電阻的阻值決定了邏輯電平轉(zhuǎn)換的速度。阻值越大,速度越低,功耗越小。

開漏輸出提供了靈活的輸出方式,但是也有其弱點,就是帶來上升沿的延時。因為上升沿是通過外接上拉無源電阻對負(fù)載充電,所以當(dāng)電阻選擇小時延時就小,但功耗大;反之延時大功耗小。所以如果對延時有要求,則建議用下降沿輸出。

可以將多個開漏輸出連接到一條線上。通過一只上拉電阻,在不增加任何器件的情況下,形成“與邏輯”關(guān)系,即“線與”。可以簡單的理解為:在所有引腳連在一起時,外接一上拉電阻,如果有一個引腳輸出為邏輯 0,相當(dāng)于接地,與之并聯(lián)的回路“相當(dāng)于被一根導(dǎo)線短路”,所以外電路邏輯電平便為 0,只有都為高電平時,與的結(jié)果才為邏輯 1。

3.3 復(fù)用推挽和開漏

復(fù)用指的是GPIO切換到CPU內(nèi)部設(shè)備(比如SPI,I2C,UART等電路),也就是GPIO不是作為普通IO使用,是由內(nèi)部設(shè)備直接驅(qū)動。推挽和開漏的特征同上。

3.4 四種輸入模式

44ae4dac-56d7-11ed-a3b6-dac502259ad0.png

通過上面的引腳結(jié)構(gòu)圖可以得到如下三種方式

浮空輸入:CPU內(nèi)部的上拉電阻、下拉電阻均斷開的輸入模式。

下拉輸入:CPU內(nèi)部的下拉電阻使能、上拉電阻斷開的輸入模式。

上拉輸入:CPU內(nèi)部的上拉電阻使能、下拉電阻斷開的輸入模式。

而模擬輸入模式是GPIO引腳連接內(nèi)部ADC。

44d1ce94-56d7-11ed-a3b6-dac502259ad0.png

4 GPIO的拉電流負(fù)載和灌電流負(fù)載能力

這里先普及點小知識,什么是拉電流負(fù)載,什么是灌電流負(fù)載。

拉電流負(fù)載:一種負(fù)載電流從驅(qū)動門流向外電路,稱為拉電流負(fù)載。比如使用STM32H7的GPIO直接驅(qū)動LED就是拉電流形式。

44ee1036-56d7-11ed-a3b6-dac502259ad0.png

灌電流負(fù)載:負(fù)載電流從外電路流入驅(qū)動門,稱為灌電流負(fù)載。比如下面這種形式的LED驅(qū)動電路

450de686-56d7-11ed-a3b6-dac502259ad0.png

有了上面這些知識后再來看STM32H7的IO驅(qū)動能力(截圖來自STM32H7參考手冊):

45623880-56d7-11ed-a3b6-dac502259ad0.png

通過上面的截圖可知:STM32H7總的拉電流和灌電流不可超過140mA,單個引腳最大不可超過20mA,這個知識點,大家要知道。

5 IO補償單元,用于高速

IO補償單元用于控制I/O通信壓擺率(tfall/ trise)以此來降低I/O噪聲。當(dāng)前STM32H7的速度等級可以配置為以下四種:

/** @defgroup GPIO_speed_define  GPIO speed define
  * @brief GPIO Output Maximum frequency
  * @{
  */  
#define  GPIO_SPEED_FREQ_LOW         ((uint32_t)0x00000000U)  /*!< Low speed     */
#define  GPIO_SPEED_FREQ_MEDIUM      ((uint32_t)0x00000001U)  /*!< Medium speed  */
#define  GPIO_SPEED_FREQ_HIGH        ((uint32_t)0x00000002U)  /*!< Fast speed    */
#define  GPIO_SPEED_FREQ_VERY_HIGH   ((uint32_t)0x00000003U)  /*!< High speed    */

使用后兩種速度等級的話,最好使能IO補償單元。

6 GPIO兼容CMOS和TTL電平

CMOS和TTL電平兼容問題也是一個比較重要的知識點

45abff4c-56d7-11ed-a3b6-dac502259ad0.png

7 不使用的引腳推薦設(shè)置為模擬模式

主要從功耗和防干擾考慮。

所有用作帶上拉電阻輸入的 I/O都會在引腳外部保持為低時產(chǎn)生電流消耗。此電流消耗的值可通過使用的靜態(tài)特性中給出的上拉 / 下拉電阻值簡單算出。

對于輸出引腳,還必須考慮任何外部下拉電阻或外部負(fù)載以估計電流消耗。

若外部施加了中間電平,則額外的 I/O 電流消耗是因為配置為輸入的 I/O。此電流消耗是由用于區(qū)分輸入值的輸入施密特觸發(fā)器電路導(dǎo)致。除非應(yīng)用需要此特定配置,否則可通過將這些I/O 配置為模擬模式以避免此供電電流消耗。ADC 輸入引腳應(yīng)配置為模擬輸入就是這種情況。

任何浮空的輸入引腳都可能由于外部電磁噪聲,成為中間電平或意外切換。為防止浮空引腳相關(guān)的電流消耗,它們必須配置為模擬模式,或內(nèi)部強制為確定的數(shù)字值。這可通過使用上拉 / 下拉電阻或?qū)⒁_配置為輸出模式做到。

綜上考慮,不使用的引腳設(shè)置為模擬模式,懸空即可。

審核編輯:湯梓紅

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

    關(guān)注

    31

    文章

    5253

    瀏覽量

    119213
  • STM32
    +關(guān)注

    關(guān)注

    2258

    文章

    10828

    瀏覽量

    352520
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1176

    瀏覽量

    51515
  • stm32h7
    +關(guān)注

    關(guān)注

    0

    文章

    36

    瀏覽量

    1753

原文標(biāo)題:一文全面掌握stm32的GPIO知識

文章出處:【微信號:技術(shù)讓夢想更偉大,微信公眾號:技術(shù)讓夢想更偉大】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    STM32-GPIO詳解

    GPIO是通用輸入輸出端口的簡稱,簡單來說就是STM32可控制的引腳,STM32芯片的GPIO引腳與外部設(shè)備連接起來,從而實現(xiàn)與外部通訊、控制以及數(shù)據(jù)采集的功能。
    發(fā)表于 03-29 09:43 ?2889次閱讀

    STM32 GPIO的工作模式

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

    STM32 GPIO寄存器的相關(guān)知識

    在之前的STM32GPIO理論基礎(chǔ)知識中,分別對基本結(jié)構(gòu)和工作模式進(jìn)行了詳細(xì)的介紹。 GPIO基本結(jié)構(gòu)中主要對GPIO內(nèi)部的各個功能電路逐
    發(fā)表于 04-14 10:43 ?2548次閱讀
    <b class='flag-5'>STM32</b> <b class='flag-5'>GPIO</b>寄存器的相關(guān)<b class='flag-5'>知識</b>

    STM32 GPIO的API函數(shù)配置和使用技巧

    本篇開始對STM32GPIO在實際開發(fā)設(shè)計中的使用配置和技巧進(jìn)行探討,可以先去回顧下之前介紹的GPIO的相關(guān)理論基礎(chǔ)知識包括基本結(jié)構(gòu),工作模式和寄存器原理。
    發(fā)表于 04-14 10:46 ?1170次閱讀
    <b class='flag-5'>STM32</b> <b class='flag-5'>GPIO</b>的API函數(shù)配置和使用技巧

    STM32GPIO操作配置和使用方法

    本篇開始對STM32GPIO在實際開發(fā)設(shè)計中的使用配置和技巧進(jìn)行探討,可以先去回顧下之前介紹的GPIO的相關(guān)理論基礎(chǔ)知識包括基本結(jié)構(gòu),工作模式和寄存器原理。
    的頭像 發(fā)表于 07-07 16:50 ?5110次閱讀
    <b class='flag-5'>STM32</b>的<b class='flag-5'>GPIO</b>操作配置和使用方法

    初學(xué)者怎樣提高自己的動手能力和掌握知識全面

    初學(xué)者怎樣提高自己的動手能力和掌握知識全面
    發(fā)表于 08-14 14:56

    概述學(xué)習(xí)stm32需要掌握的前提知識

    文章目錄引言如何查詢資料查看原理圖STM32簡介STM32芯片分類芯片兼容性芯片內(nèi)部資源STM32最小系統(tǒng)ISP燒寫(串口下載程序)沒有鍵下載電路的
    發(fā)表于 08-10 06:18

    STM32GPIO端口知識匯總

    自學(xué)STM32的第步!1. STM32GPIO端口知識要點1. GPIO: General
    發(fā)表于 02-28 08:36

    STM32GPIO使用

    分享本文,介紹STM32GPIO使用。
    的頭像 發(fā)表于 09-03 09:28 ?4319次閱讀

    STM32GPIO的8種工作模式

    基礎(chǔ)知識STM32F103ZET6共有7組IO口,即GPIOA,GPIOB,GPIOC到GPIOG。每組IO口有16個IO,所以共有112個IO。
    發(fā)表于 12-01 09:06 ?12次下載
    <b class='flag-5'>STM32</b>的<b class='flag-5'>GPIO</b>的8種工作模式

    stm32 GPIO使用總結(jié)

    stm32 GPIO使用總結(jié)
    發(fā)表于 12-01 11:21 ?8次下載
    <b class='flag-5'>stm32</b> <b class='flag-5'>GPIO</b>使用總結(jié)

    STM32CubeMX應(yīng)用教程 第GPIO

    STM32CubeMX第GPIO軟件:STM32CubeMX Version 6.2.1??????MDK5 for ARM硬件:戰(zhàn)艦精英V3
    發(fā)表于 12-02 13:51 ?9次下載
    <b class='flag-5'>STM32</b>CubeMX應(yīng)用教程 第<b class='flag-5'>一</b>章 <b class='flag-5'>GPIO</b>

    關(guān)于STM32 GPIO的配置等問題

    關(guān)于STM32 GPIO的配置等問題、GPIO的基本結(jié)構(gòu)圖示二、模式直接上圖:圖表數(shù)據(jù)解析:三、配置等問題問題、
    發(fā)表于 01-13 16:22 ?3次下載
    關(guān)于<b class='flag-5'>STM32</b> <b class='flag-5'>GPIO</b>的配置等問題

    全面掌握stm32GPIO知識

    開漏是用來連接不同電平的器件,匹配電平用的,因為開漏引腳不連接外部的上拉電阻時,只能輸出低電平。如果需要同時具備輸出高電平的功能,則需要接上拉電阻,很好的個優(yōu)點是通過改變上拉電源的電壓,便可以改變傳輸電平。上拉電阻的阻值決定了邏輯電平轉(zhuǎn)換的速度。阻值越大,速度越低,功耗越小。
    的頭像 發(fā)表于 11-02 12:47 ?991次閱讀

    STM32GPIO在實際開發(fā)設(shè)計的使用配置和技巧

    、前言 本篇開始對STM32GPIO在實際開發(fā)設(shè)計中的使用配置和技巧進(jìn)行探討,可以先去回顧下之前介紹的GPIO的相關(guān)理論基礎(chǔ)知識包括基本
    的頭像 發(fā)表于 06-22 10:22 ?711次閱讀
    <b class='flag-5'>STM32</b>的<b class='flag-5'>GPIO</b>在實際開發(fā)設(shè)計的使用配置和技巧