精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

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

GPIO不同模式之間的區(qū)別與實現(xiàn)方式

硬件筆記本 ? 來源:硬件筆記本 ? 作者:硬件筆記本 ? 2022-10-28 09:45 ? 次閱讀

GPIO全稱General Purpose Input Output,即通用輸入/輸出。其實GPIO的本質(zhì)就是芯片的一個引腳。由于每個開發(fā)板上都會設(shè)計不同的外圍電路,這就造成了GPIO的功能可能有所不同。大部分GPIO都是有復(fù)用功能的,比如有些GPIO可能是串口的TX或RX,也可能是I2C的SCL或SDA線。

所以,我們不僅要知道GPIO能夠輸出高低電平,還要理解為什么有些GPIO可以復(fù)用某些功能,而其他的不可以。

一、GPIO內(nèi)部結(jié)構(gòu)

c6862748-5653-11ed-a3b6-dac502259ad0.png

我們在使用GPIO的時候,可能不會去想為什么通過寫代碼或者操作寄存器就可以控制一個引腳的高低電平。

今天就讓我們一起來看看,為什么通過操作寄存器(其實寫代碼的過程就是在操作寄存器)就能控制引腳輸入或者輸出。

我們想要想控制一個GPIO口的需要操作7個寄存器,分別是CRL,CRH,IDR,ODR,BRR,BSRR,LCKR我們對GPIO的操作本質(zhì)上就是在對這些寄存器進行讀寫操作,以下是這些寄存器的名稱:

c6c35b9a-5653-11ed-a3b6-dac502259ad0.png

首先,我們分析一下上面的結(jié)構(gòu)電路。

1、保護二極管

保護二極管從它的名字就不難想到他是用來對系統(tǒng)進行保護的,通過兩個二極管的導(dǎo)通可以防止引腳外部輸入電壓過低或過高。當電壓過高時,上方的保護二極管導(dǎo)通。當電壓過低時,下方的二極管導(dǎo)通,防止不正常電壓導(dǎo)入到芯片內(nèi)部造成芯片燒毀。

2、P·MOS管和N·MOS管

GPIO經(jīng)過兩個二極管的保護后向上流入輸入模式,向下流入輸出模式,而輸出模式的控制是由一個由P·MOS管和N·MOS管組成的單元電路,該電路主要是控制輸出的模式,由該結(jié)構(gòu)狗策劃給你的單元電路具有推挽輸出和開漏輸出兩種模式。

當系統(tǒng)配置為推挽輸出模式時:

若向該結(jié)構(gòu)中輸入高電平,經(jīng)過反向后,上方的P-MOS導(dǎo)通,下方的N-MOS關(guān)閉,對外輸出高電平;

若向該結(jié)構(gòu)中輸入低電平時,經(jīng)過反向后,下方的N-MOS管導(dǎo)通,上方的P-MOS關(guān)閉,對外輸出低電平。

當引腳高低電平切換時,兩個MOS管輪流導(dǎo)通,P管負責灌電流,N管負責拉電流,使其負載能力和開關(guān)速度都比普通的方式有很大的提高。**推挽輸出的低電平為0V,高電平為3.3V**。

當系統(tǒng)配置為開漏輸出模式時:

上方的P-MOS管完全不工作;

如果我們控制輸出為0,低電平,則P-MOS管關(guān)閉,N-MOS管導(dǎo)通,使輸出接地;

若控制輸出為1(它無法直接輸出高電平)時,則P-MOS管和N-MOS管都關(guān)閉,所以開漏輸出模式下引腳既不輸出高電平,也不輸出低電平,為高阻態(tài)。

推挽輸出模式一般應(yīng)用在輸出電平為0和3.3V而且需要高速切換開關(guān)狀態(tài)的場合。開漏輸出模式一般應(yīng)用在I2C、SMBUS通信等需要線與功能的總線電路中。

單片機中除了必須用開漏模式的場合,一般習慣使用推挽輸出模式。

3、輸出數(shù)據(jù)寄存器

前面我們知道雙了MOS管結(jié)構(gòu)電路的輸入信號,是由GPIO輸出數(shù)據(jù)寄存器GPIOx_ODR提供的,因此我們可以通過修改輸出數(shù)據(jù)寄存器的值,就可以修改GPIO引腳的輸出電平。而置位/復(fù)位寄存器GPIOx_BSRR可以通過修改輸出數(shù)據(jù)寄存器的值,從而影響電路的輸出。

4、復(fù)用功能輸出

復(fù)用功能輸出中的復(fù)用是指STM32的其他片上外設(shè)對GPIO引腳進行控制,此時GPIO引腳用作該外設(shè)功能的一部分,算是第二用途。從其他外設(shè)引出來的復(fù)用功能輸出信號與GPIO本身的數(shù)據(jù)寄存器都連接到雙MOS管結(jié)構(gòu)的輸入中。

二、輸入輸出模式

GPIO共有8中輸入輸出模式,分別是:上拉輸入、下拉輸入、浮空輸入、模擬輸入、開漏輸出、推挽輸出、開漏復(fù)用輸出、推挽復(fù)用輸出,下面我們詳細介紹以下上面的八種輸入輸出模式。

上拉輸入:GPIO_Mode_IPU

下拉輸入:GPIO_Mode_IPD

浮空輸入:GPIO_Mode_IN_FLOATING

模擬輸入:GPIO_Mode_AIN

開漏輸出:GPIO_Mode_Out_OD

推挽輸出:GPIO_Mode_Out_PP

開漏復(fù)用:GPIO_Mode_AF_OD

推完復(fù)用:GPIO_Mode_AF_PP

下面,詳細講一下幾個常用的模式。

1、浮空輸入

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

c6d89014-5653-11ed-a3b6-dac502259ad0.png

2、上拉輸入模式

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

c7021a60-5653-11ed-a3b6-dac502259ad0.png

3、下拉輸入模式

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

c763efec-5653-11ed-a3b6-dac502259ad0.png

4、模擬輸入模式

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

c7853e4a-5653-11ed-a3b6-dac502259ad0.png

5、開漏輸出模式

見上面二中的詳細介紹。

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

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

7、推挽輸出模式

見上面二中的詳細介紹。

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

推挽復(fù)用輸出模式,與推挽輸出模式很是類似。只是輸出的高低電平的來源,不是讓CPU直接寫輸出數(shù)據(jù)寄存器,而是利用片上外設(shè)模塊的復(fù)用功能輸出來決定的,常見采用推挽輸出模式的一般為片內(nèi)外設(shè)功能IIC的SCL、SDL。

c7ae8a3e-5653-11ed-a3b6-dac502259ad0.png

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

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

c7c06010-5653-11ed-a3b6-dac502259ad0.jpg

四、STM32中GPIO的配置

在固件庫開發(fā)中,操作寄存器CRH和CRL來配置IO口的模式和速度是通過GPIO初始化函數(shù)完成:

c7d5130c-5653-11ed-a3b6-dac502259ad0.png

初始化 GPIO 的常用格式是:

c845df6a-5653-11ed-a3b6-dac502259ad0.png

IO口速度設(shè)置有三個可選值:

c85d0abe-5653-11ed-a3b6-dac502259ad0.png

模式則有8個可選定義如下:

c86e31d6-5653-11ed-a3b6-dac502259ad0.png

五、總結(jié)

今天主要介紹了GPIO的定義,以及GPIO不同模式之間的區(qū)別與實現(xiàn)方式。相信看完本文,你會對GPIO有一個更深的理解。

如果是做軟件的小伙伴,可以不用太關(guān)注于GPIO是如何實現(xiàn)的,但是需要知道每個模式下GPIO的特點和應(yīng)用場合。只有這樣,我們在實際應(yīng)用中才能更好的配置出最合適的那個。

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

    關(guān)注

    453

    文章

    50387

    瀏覽量

    421786
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1196

    瀏覽量

    51914
  • 低電平
    +關(guān)注

    關(guān)注

    1

    文章

    113

    瀏覽量

    13251

原文標題:單片機入門有多簡單?帶你了解GPIO內(nèi)部電路及幾種常用模式

文章出處:【微信號:gh_a6560e9c41d7,微信公眾號:硬件筆記本】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    GPIO不同模式間的區(qū)別實現(xiàn)方式

    GPIO全稱General Purpose Input Output 即通用輸入/輸出,其實GPIO的本質(zhì)就是芯片的一個引腳,通常在ARM中所有的I/O都是通用的。
    的頭像 發(fā)表于 10-09 15:09 ?1527次閱讀

    GPIO端口各種模式區(qū)別

    GPIO端口各種模式區(qū)別(1)GPIO_Mode_AIN 模擬輸入(2)GPIO_Mode_IN_FLOATING 浮空輸入(3)
    發(fā)表于 07-28 08:59

    GPIO模式GPIO配置代碼實現(xiàn)

    選擇三、GPIO配置代碼實現(xiàn)四、總工程實現(xiàn)一、GPIO模式STM32的 GPIO
    發(fā)表于 08-24 07:20

    _pin和_gpio_port之間區(qū)別是什么?

    在 cubeMX 中,Il 給 PI1 一個用戶名“l(fā)ed1_rouge”。當我去 Keil microvision 時,intellisense 給了我兩個名字:led1_rouge_pinled1rouge_gpio_port它們之間有什么
    發(fā)表于 01-12 07:21

    zynq中三種實現(xiàn)GPIO方式

    MIO和EMIO方式是使用PS部分的GPIO模塊來實現(xiàn)GPIO功能的,支持54個MIO(可輸出三態(tài))、64個輸入和128個輸出(64個輸出和64個輸出使能)EMIO而IP
    的頭像 發(fā)表于 08-07 10:16 ?3012次閱讀
    zynq中三種<b class='flag-5'>實現(xiàn)</b><b class='flag-5'>GPIO</b>的<b class='flag-5'>方式</b>

    STM32的8種GPIO輸入輸出模式

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

    HAL庫的GPIO八種工作模式

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

    GPIO工作模式和寄存器

    GPIO工作模式1、浮空輸入模式 GPIO_Mode_IN_FLOATING引腳狀態(tài)不確定,引腳懸空時,電平狀態(tài)是不確定的值,可以做KEY識別,串口的RX12、模擬輸入
    發(fā)表于 12-08 17:21 ?7次下載
    <b class='flag-5'>GPIO</b>工作<b class='flag-5'>模式</b>和寄存器

    介紹GPIO的定義和GPIO不同模式間的區(qū)別實現(xiàn)方式

    GPIO全稱General Purpose Input Output 即通用輸入/輸出,其實GPIO的本質(zhì)就是芯片的一個引腳,通常在ARM中所有的I/O都是通用的。
    的頭像 發(fā)表于 08-25 18:25 ?2.1w次閱讀
    介紹<b class='flag-5'>GPIO</b>的定義和<b class='flag-5'>GPIO</b>不同<b class='flag-5'>模式</b>間的<b class='flag-5'>區(qū)別</b>與<b class='flag-5'>實現(xiàn)</b><b class='flag-5'>方式</b>

    應(yīng)用筆記|如何配置 S2-LP 的直接 GPIO 模式

    GPIO 口,然后再將獲取到的 GPIO 數(shù)據(jù)發(fā)送出去。當前 ST Spirit 系列支持以下三種數(shù)據(jù)模式:? 1. 正常模式 2. 直接 FIFO
    的頭像 發(fā)表于 05-26 07:15 ?627次閱讀
    應(yīng)用筆記|如何配置 S2-LP 的直接 <b class='flag-5'>GPIO</b> <b class='flag-5'>模式</b>

    不同GPIO類庫的區(qū)別

    重點來講解一下什么是類庫,如何使用,以及不同的GPIO類庫的區(qū)別
    的頭像 發(fā)表于 07-02 15:03 ?956次閱讀
    不同<b class='flag-5'>GPIO</b>類庫的<b class='flag-5'>區(qū)別</b>

    GPIO的八種工作模式

    GPIO是通用輸入/輸出端口的簡稱,GPIO的引腳與外部設(shè)備連接,可實現(xiàn)與外部通訊、控制外部硬件或者采集外部硬件數(shù)據(jù)的功能。GPIO的8種輸入模式
    的頭像 發(fā)表于 07-02 16:38 ?9880次閱讀
    <b class='flag-5'>GPIO</b>的八種工作<b class='flag-5'>模式</b>

    GPIO可配置為幾種模式 請簡述GPIO的工作模式

    GPIO可配置為三種模式:Output模式、Input模式和Analog模式
    發(fā)表于 07-24 11:27 ?6264次閱讀
    <b class='flag-5'>GPIO</b>可配置為幾種<b class='flag-5'>模式</b> 請簡述<b class='flag-5'>GPIO</b>的工作<b class='flag-5'>模式</b>

    STM32使用GPIO配置的5種方式

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

    STM32 GPIO八種模式及工作原理詳解

    一. 前言 ??GPIO全稱General Purpose Input Output,是微控制數(shù)字輸入/輸出的基本模塊,可以實現(xiàn)微控制器與外部環(huán)境的數(shù)字進行交換。借助GPIO微控制器可以實現(xiàn)
    的頭像 發(fā)表于 07-22 09:32 ?5606次閱讀
    STM32 <b class='flag-5'>GPIO</b>八種<b class='flag-5'>模式</b>及工作原理詳解