色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

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

3天內不再提示

GPIO是什么?

汽車電子技術 ? 來源:嵌入式悅翔園 ? 作者:JamesBin ? 2023-02-17 10:55 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、前言

GPIO全稱General Purpose Input Output 即通用輸入/輸出,其實GPIO的本質就是芯片的一個引腳,通常在ARM中所有的I/O都是通用的。不過由于每個開發板上都會設計不同的外圍電路,這就造成GPIO的功能可能有所不同,大部分GPIO都是有復用功能的,比如有些GPIO可能是串口的TXRX,也可能是I2CSCLSDA線。

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

二、GPIO內部結構

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

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

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

GPIOx_CRL(x = A..E)端口配置低寄存器 32位寄存器
GPIOx_CRH(x = A..E)端口配置高寄存器 32位寄存器
GPIOx_IDR(x = A..E)端口輸入數據寄存器 32位寄存器但僅用低16GPIOx_ODR(x = A..E)端口輸出數據寄存器 32位寄存器但僅用低16GPIOx_BRR(x = A..E)端口位清除寄存器 16位寄存器
GPIOx_BSRR(x = A..E)端口位設置/清除寄存器 16位寄存器
GPIOx_LCKR(x = A..E)端口配置鎖定寄存器 32位寄存器

我們首先分析上面的結構電路:

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

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

當系統配置為推挽輸出模式時:

  • 若向該結構中輸入高電平,經過反向后,上方的P-MOS導通,下方的N-MOS關閉,對外輸出高電平;
  • 若向該結構中輸入低電平時,經過反向后,下方的N-MOS管導通,上方的P-MOS關閉,對外輸出低電平。
  • 當引腳高低電平切換時,兩個MOS管輪流導通,P管負責灌電流N管負責拉電流,使其負載能力和開關速度都比普通的方式有很大的提高。 推挽輸出的低電平為0V,高電平為3.3V

當系統配置為開漏輸出模式時:

  • 上方的P-MOS管完全不工作;
  • 如果我們控制輸出為0,低電平,則P-MOS管關閉,N-MOS管導通,使輸出接地;
  • 若控制輸出為1(它無法直接輸出高電平)時,則P-MOS管和N-MOS管都關閉,所以 開漏輸出模式下引腳既不輸出高電平,也不輸出低電平,為高阻態

推挽輸出模式一般應用在輸出電平為0和3.3V而且需要 高速切換開關狀態的場合開漏輸出模式一般應用在I2C、SMBUS通信等需要 線與功能的總線電路中

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

3、輸出數據寄存器 :前面我們知道雙了MOS管結構電路的輸入信號,是由GPIO輸出數據寄存器GPIOx_ODR提供的,因此我們可以通過修改輸出數據寄存器的值,就可以修改GPIO引腳的輸出電平。而置位/復位寄存器GPIOx_BSRR可以通過修改輸出數據寄存器的值,從而影響電路的輸出。

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

三、輸入輸出模式

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

  • 上拉輸入: GPIO_Mode_IPU
  • 下拉輸入: GPIO_Mode_IPD
  • 浮空輸入: GPIO_Mode_IN_FLOATING
  • 模擬輸入: GPIO_Mode_AIN
  • 開漏輸出: GPIO_Mode_Out_OD
  • 推挽輸出: GPIO_Mode_Out_PP
  • 開漏復用: GPIO_Mode_AF_OD
  • 推完復用: GPIO_Mode_AF_PP

這里詳細講一下幾個常用的模式:

3.1 浮空輸入

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

3.2 上拉輸入模式

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

3.3 下拉輸入模式

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

3.4 模擬輸入模式

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

3.5 開漏輸出模式

見上面二中的詳細介紹;

3.6 開漏復用輸出模式

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

3.7 推挽輸出模式

見上面二中的詳細介紹;

3.8 推挽復用輸出模式

推挽復用輸出模式,與推挽輸出模式很是類似。只是輸出的高低電平的來源,不是讓CPU直接寫輸出數據寄存器,而是利用片上外設模塊的復用功能輸出來決定的,常見采用推挽輸出模式的一般為片內外設功能IICSCLSDL圖片

四、開漏輸出和推挽輸出的區別

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

五、STM32中GPIO的配置

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

void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
/*第一個參數是用來指定 GPIO,取值范圍為 GPIOA~GPIOG。
 *第二個參數為初始化參數結構體指針,結構體類型為 GPIO_InitTypeDef
 */

初始化 GPIO 的常用格式是:

GPIO_InitTypeDef GPIO_InitStructure;

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED0-- PB.5 端口配置

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽輸出

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//速度 50MHz

GPIO_Init(GPIOB, GPIO_InitStructure);//根據設定參數配置 GPIO

IO 口速度設置有三個可選值:

typedef enum

{

GPIO_Speed_10MHz,

GPIO_Speed_2MHz,

GPIO_Speed_50MHz

}GPIOSpeed_TypeDef;

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

typedef enum

{ GPIO_Mode_AIN = 0x0, //模擬輸入

GPIO_Mode_IN_FLOATING = 0x04, //浮空輸入

GPIO_Mode_IPD = 0x28, //下拉輸入

GPIO_Mode_IPU = 0x48, //上拉輸入

GPIO_Mode_Out_OD = 0x14, //開漏輸出

GPIO_Mode_Out_PP = 0x10, //通用推挽輸出

GPIO_Mode_AF_OD = 0x1C, //復用開漏輸出

GPIO_Mode_AF_PP = 0x18 //復用推挽

}GPIOMode_TypeDef;

六、總結

本文主要介紹了GPIO的定義和GPIO不同模式間的區別與實現方式,觀看完本文相信你對于GPIO會有一個更深的理解,我們如果是做軟件的可以不用太關注于GPIO是如何實現的,但是我們需要知道每個模式下GPIO的特點和應用場合,只有這樣我們在實際應用中才能更好的配置出最合適的那個。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 芯片
    +關注

    關注

    459

    文章

    52352

    瀏覽量

    438512
  • ARM
    ARM
    +關注

    關注

    134

    文章

    9337

    瀏覽量

    376072
  • GPIO
    +關注

    關注

    16

    文章

    1279

    瀏覽量

    53798
收藏 8人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

  • jf_801717521
  • 546111asd1

評論

相關推薦
熱點推薦

gpio_什么是gpio

本內容介紹了gpio_什么是gpioGPIO,英文全稱為General-Purpose IO ports,也就是通用IO口。
發表于 12-19 16:31 ?2.6w次閱讀

被zynq的GPIO唬住,告訴你zynq的3種GPIO

我們先看有哪三種GPIO:MIO、EMIO、AXI_GPIO。其中MIO和EMIO是直接掛在PS上的GPIO。而AXI_GPIO是通過AXI總線掛在PS上的
發表于 07-07 08:23 ?5539次閱讀

GPIO是什么?GPIO應用的詳細介紹

字面意思看,GPIO=General Purpose Input Output,通用輸入輸出。有時候簡稱為“IO 口”。通用,就是說它是萬金油,干什么都行。輸入輸出,就是說既能當輸入口使用,又能當
發表于 12-16 22:54 ?24次下載
<b class='flag-5'>GPIO</b>是什么?<b class='flag-5'>GPIO</b>應用的詳細介紹

GPIO配置

有關推挽輸出、開漏輸出、復用開漏輸出、復用推挽輸出以及上拉輸入、下拉輸入、浮空輸入、模擬輸入的區別最近在看數據手冊的時候,發現在Cortex-M3里,對于GPIO的配置種類有8種之多:(1
發表于 12-01 10:36 ?13次下載
<b class='flag-5'>GPIO</b>配置

esp8266學習筆記③:GPIO模塊

GPIO引腳映射IO INDEXEXP8266 PIN IO0[*]GPIO161GPIO52GPIO43GPIO04GPIO25GPIO146GPIO127GPIO138GPIO159GPIO310GPIO111GPIO912GPIO10備注[*] D
發表于 12-14 18:48 ?9次下載
esp8266學習筆記③:<b class='flag-5'>GPIO</b>模塊

sunplus gpio使用

GPIO函數介紹GPIO_F_SET(a,d)//GPIO口使能設置,d=1 enable. D=0 disableGPIO_M_SET(a,d)// 設置IO口支持的指令d=0 IOP/d=1
發表于 12-20 19:08 ?5次下載
sunplus <b class='flag-5'>gpio</b>使用

STM32-GPIO詳解

STM32-GPIO配置介紹typedef struct { uint32_t GPIO_Pin; GPIOMode_TypeDef GPIO
發表于 12-24 19:12 ?15次下載
STM32-<b class='flag-5'>GPIO</b>詳解

HAL庫-GPIO介紹

一.GPIO 使用1.輸入輸出模式(8種)GPIO_Mode_AIN #模擬輸入GPIO_Mode_IN_FLOATING #浮空輸入GPIO
發表于 12-28 19:32 ?2次下載
HAL庫-<b class='flag-5'>GPIO</b>介紹

STM32中GPIO_Mode--GPIO配置

本篇由轉載而來,有侵權請聯系作者,謝謝。原博客地址:https://blog.csdn.net/snow416/article/details/6540646一、GPIO配置(1
發表于 12-28 19:33 ?13次下載
STM32中<b class='flag-5'>GPIO_Mode--GPIO</b>配置

使用GPIO Zero讓GPIO變得更容易

為兒童和年輕人開發的用于GPIO控制的簡單Python庫,如果您有過為Raspberry Pi的GPIO 引腳編寫代碼的經驗,那么估計您已經使用過Python以及GPIO Zero模塊了,因為這是最簡單的入門方式。
的頭像 發表于 03-01 10:51 ?2465次閱讀
使用<b class='flag-5'>GPIO</b> Zero讓<b class='flag-5'>GPIO</b>變得更容易

通過RPi.GPIO Python庫使用Raspberry Pi GPIO引腳

在2016年推出GPIO Zero之前,新用戶通常使用另一個Python模塊(RPi.GPIO)來使用GPIO引腳。
的頭像 發表于 02-25 17:36 ?3460次閱讀
通過RPi.<b class='flag-5'>GPIO</b> Python庫使用Raspberry Pi <b class='flag-5'>GPIO</b>引腳

gpio子系統API詳解

gpio 子系統 API gpio 子系統中操作一個 GPIO 需要如下幾步: 1、of_find_compatible_node2、of_get_named_gpio3、
的頭像 發表于 09-27 17:17 ?1111次閱讀
<b class='flag-5'>gpio</b>子系統API詳解

AM6254-gpio接口-gpio復用及M核引腳的使用

AM6254-gpio接口-gpio復用及M核引腳的使用
發表于 10-09 09:14 ?2次下載

什么是GPIOGPIO組成原理

GPIO全拼叫General Purpose Input Output(通用輸入輸出)簡稱IO口也叫總線擴展器,GPIO口是由引腳,功能寄存器組成,不同的架構中的GPIO封裝不同,所使用的引腳數與寄存器數不同,具體可以參考芯片手
發表于 04-28 12:30 ?9774次閱讀
什么是<b class='flag-5'>GPIO</b>?<b class='flag-5'>GPIO</b>組成原理

GPIO使用教程 GPIO接口應用

GPIO(General-Purpose Input/Output,通用輸入/輸出)接口是電子設備中的一個重要組成部分,主要用于控制和讀取設備的數字信號。它通過簡單的高(1)或低(0)電平來與系統
的頭像 發表于 01-31 10:10 ?3182次閱讀
主站蜘蛛池模板: 99免费精品| 美国特级成人毛片 | 国色精品VA在线观看免费视频 | 尹人综合网 | 自拍黄色片| 24小时日本在线观看片免费 | 米奇影视999 | 亚洲高清无在码在线电影 | av天堂电影网在线观看 | 久久是热这里只有精品 | 国产精品JIZZ在线观看A片 | 973午夜伦伦电影论片 | 亚洲精品无码葡京AV天堂 | 511麻豆视传媒精品AV | 奇米狠狠干 | 午夜福到在线2019 | 欧美日韩亚洲一区视频二区 | 最近日本MV字幕免费观看视频 | 久久永久免费视频 | 激情丛林电影完整在线 | 亚洲精品国产乱码AV在线观看 | caoporn 在线视频 | BT7086福利二区最新 | 亚洲精品成人AV在线观看爽翻 | 无码爽死成人777在线观看网站 | 草草久久久亚洲AV成人片 | 美女洗澡脱得一二干净 | 红尘影院在线观看 | 日本午夜精品一区二区三区电影 | 亚洲AV久久无码高潮喷水 | 超碰公开在线caopon | 国产精品久久一区二区三区蜜桃 | 久久精品国产99欧美精品亚洲 | 久久婷婷色一区二区三区 | 一区二区三区无码被窝影院 | 日本污ww视频网站 | 成人国产三级在线播放 | 色情www日本欧美 | 欧美精品做人一级爱免费 | 蜜芽亚洲欧美一区二区电影 | 久久精品动漫99精品动漫 |

電子發燒友

中國電子工程師最喜歡的網站

  • 2931785位工程師會員交流學習
  • 獲取您個性化的科技前沿技術信息
  • 參加活動獲取豐厚的禮品