www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > > 嵌入式悅翔園
[導(dǎo)讀]GPIO全稱General Purpose Input Output即通用輸入/輸出,其實GPIO的本質(zhì)就是芯片的一個引腳,通常在ARM中所有的I/O都是通用的。不過由于每個開發(fā)板上都會設(shè)計不同的外圍電路,這就造成GPIO的功能可能有所不同,大部分GPIO都是有復(fù)用功能的,比如有些GPIO可能是串口的TX或RX,也可能是I2C的SCL或SDA線。

一、前言

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

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

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

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

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

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

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

我們首先分析上面的結(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管負責(zé)灌電流,N管負責(zé)拉電流,使其負載能力和開關(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通信等需要 線與功能的總線電路中

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

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

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

3.1 浮空輸入

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

3.2 上拉輸入模式

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

3.3 下拉輸入模式

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

3.4 模擬輸入模式

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

3.5 開漏輸出模式

見上面二中的詳細介紹;

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

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

3.7 推挽輸出模式

見上面二中的詳細介紹;

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

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

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

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

五、STM32中GPIO的配置

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

void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct); /*第一個參數(shù)是用來指定 GPIO,取值范圍為 GPIOA~GPIOG。
 *第二個參數(shù)為初始化參數(shù)結(jié)構(gòu)體指針,結(jié)構(gòu)體類型為 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);//根據(jù)設(shè)定參數(shù)配置 GPIO 

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

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, //復(fù)用開漏輸出 GPIO_Mode_AF_PP = 0x18 //復(fù)用推挽 }GPIOMode_TypeDef;

六、總結(jié)

本文主要介紹了GPIO的定義和GPIO不同模式間的區(qū)別與實現(xiàn)方式,觀看完本文相信你對于GPIO會有一個更深的理解,我們?nèi)绻亲鲕浖目梢圆挥锰P(guān)注于GPIO是如何實現(xiàn)的,但是我們需要知道每個模式下GPIO的特點和應(yīng)用場合,只有這樣我們在實際應(yīng)用中才能更好的配置出最合適的那個。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

上海2025年9月5日 /美通社/ -- 由上海市經(jīng)濟和信息化委員會、上海市發(fā)展和改革委員會、上海市商務(wù)委員會、上海市教育委員會、上海市科學(xué)技術(shù)委員會指導(dǎo),東浩蘭生(集團)有限公司主辦,東浩蘭生會展集團上海工業(yè)商務(wù)展覽有...

關(guān)鍵字: 電子 BSP 芯片 自動駕駛

9月1日消息,繼小鵬、零跑后,現(xiàn)在小米汽車也宣布了8月的交付量。

關(guān)鍵字: 小米汽車 芯片

當?shù)貢r間 8 月 22 日,美國芯片制造商英特爾公司宣布與美國聯(lián)邦政府達成協(xié)議,后者將向英特爾普通股投資 89 億美元,以每股 20.47 美元的價格收購 4.333 億股英特爾普通股,相當于該公司 9.9% 的股份。

關(guān)鍵字: 英特爾 半導(dǎo)體 芯片

在當今數(shù)字化時代,人工智能(AI)和高性能計算(HPC)的迅猛發(fā)展對 GPU 芯片的性能提出了極高要求。隨著 GPU 計算密度和功耗的不斷攀升,散熱問題成為了制約其性能發(fā)揮的關(guān)鍵因素。傳統(tǒng)的風(fēng)冷方案已難以滿足日益增長的散...

關(guān)鍵字: 人工智能 高性能計算 芯片

8月20日消息,博主數(shù)碼閑聊站暗示,9月底大概率只有小米16系列會亮相,其它驍龍8 Elite 2旗艦、天璣9500旗艦新品都將排到10月份,新機大亂斗會在國慶假期之后開始。

關(guān)鍵字: 小米雷軍 芯片

8月21日消息,據(jù)媒體報道,英偉達宣布將自研基于3nm工藝的HBM內(nèi)存Base Die,預(yù)計于2027年下半年進入小規(guī)模試產(chǎn)階段,此舉旨在彌補其在HBM領(lǐng)域的技術(shù)與生態(tài)短板。

關(guān)鍵字: 英偉達 黃仁勛 芯片 顯卡

繼尋求收購英特爾10%的股份之后,近日又有消息稱,特朗普政府正在考慮通過《芯片法案》資金置換股權(quán)的方式,強行收購美光、三星、臺積電三大芯片巨頭的股份。若此舉落地,美國政府將從“政策扶持者”蛻變?yōu)椤爸苯庸蓶|”,徹底重塑全球...

關(guān)鍵字: 芯片 半導(dǎo)體

在集成電路設(shè)計流程中,網(wǎng)表作為連接邏輯設(shè)計與物理實現(xiàn)的關(guān)鍵橋梁,其分模塊面積統(tǒng)計對于芯片性能優(yōu)化、成本控制和資源分配具有重要意義。本文將詳細介紹如何利用 Python 實現(xiàn)網(wǎng)表分模塊統(tǒng)計面積的功能,從網(wǎng)表數(shù)據(jù)解析到面積計...

關(guān)鍵字: 網(wǎng)表 芯片 分模塊

8月19日消息,封禁4個多月的H20為何突然又被允許對華銷售,這其實是美國設(shè)計好的。

關(guān)鍵字: 英偉達 黃仁勛 芯片 顯卡

8月17日消息,美國對全球揮舞關(guān)稅大棒,已經(jīng)開始影響各個行業(yè)的發(fā)展,最新的就是半導(dǎo)體產(chǎn)業(yè),總統(tǒng)更是放話要把關(guān)稅加到300%。

關(guān)鍵字: 芯片 英偉達
關(guān)閉