在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

GPIO內部結構及輸入輸出模式

Q4MP_gh_c472c21 ? 來源:嵌入式悅翔園 ? 作者:JamesBin ? 2022-10-08 14:37 ? 次閱讀

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

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

一、GPIO內部結構

b9b989ac-46c1-11ed-96c9-dac502259ad0.png

我們在使用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位寄存器但僅用低16位
GPIOx_ODR(x=A..E)端口輸出數據寄存器32位寄存器但僅用低16位
GPIOx_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

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

1、浮空輸入

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

b9cf7ea6-46c1-11ed-96c9-dac502259ad0.png

2、上拉輸入模式

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

ba2616a8-46c1-11ed-96c9-dac502259ad0.png

3、下拉輸入模式

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

ba7cd09c-46c1-11ed-96c9-dac502259ad0.png

4、模擬輸入模式

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

bad0b72a-46c1-11ed-96c9-dac502259ad0.png

5、開漏輸出模式

見上面二中的詳細介紹。

6、開漏復用輸出模式

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

7、推挽輸出模式

見上面二中的詳細介紹。

8、推挽復用輸出模式

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

bae7b4de-46c1-11ed-96c9-dac502259ad0.png

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

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

bb598258-46c1-11ed-96c9-dac502259ad0.png

四、STM32中GPIO的配置

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

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

初始化 GPIO 的常用格式是:

GPIO_InitTypeDefGPIO_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 口速度設置有三個可選值:

typedefenum

{

GPIO_Speed_10MHz,

GPIO_Speed_2MHz,

GPIO_Speed_50MHz

}GPIOSpeed_TypeDef;

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

typedefenum

{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的特點和應用場合。只有這樣,我們在實際應用中才能更好的配置出最合適的那個。

審核編輯:湯梓紅

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

    關注

    31

    文章

    5425

    瀏覽量

    123559
  • STM32
    +關注

    關注

    2290

    文章

    11018

    瀏覽量

    362730
  • GPIO
    +關注

    關注

    16

    文章

    1276

    瀏覽量

    53642

原文標題:一文弄懂GPIO不同模式之間的區別與實現原理

文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    SN65DPHY440SS 4組數據輸入輸出內部結構是否一樣?

    SN65DPHY440SS 4組數據輸入輸出內部結構是否一樣?差分對P和N能否交換位置? 差分對順序能否能夠調整?如圖
    發表于 12-13 06:00

    Pbuf是什么?Pbuf的內部結構是怎樣的

    Pbuf是什么?Pbuf的內部結構是怎樣的?UDP處理的輸入輸出的流程是怎樣的?
    發表于 11-03 07:37

    GPIO內部結構通常是什么樣

    ”經常弄不清什么是開漏什么是推挽、IO輸入輸出電路原理。本文的目地是讓大家清楚GPIO的幾種配置,GPIO內部結構通常是什么樣,上拉、下拉電阻的作用,拉電流、灌電流是什么有助于遇到問題
    發表于 01-25 06:25

    STM32的八種輸入輸出模式相關資料分享

    輸出(GPIO_Mode_Out_OD)-開漏復用功能(GPIO_Mode_AF_OD)-推挽式輸出(GPIO_Mode_Out_PP)-推
    發表于 01-25 07:26

    6.2 通用輸入輸出GPIO(神舟王207)

    此文檔是關于神舟王開發板之輸入輸出GPIO的介紹和講解;
    發表于 05-25 10:01 ?2次下載

    使用GPIO輸入輸出各種模式的詳細資料講解

    能將處理器的GPIO(General Purpose Input and Output)內部結構和各種模式徹底弄清楚的人并不多,最近在百度上搜索了大量關于這部分的資料,對于其中很多問題的說法并不統一
    發表于 08-19 17:31 ?1次下載
    使用<b class='flag-5'>GPIO</b><b class='flag-5'>輸入輸出</b>各種<b class='flag-5'>模式</b>的詳細資料講解

    MCU通用輸入輸出端口(GPIO)輸出模式

    對于常規MCU,通用輸入輸出GPIO)是其最基本、最常用的功能,用于實現最基本的數字量輸入輸出。 信號一般為:以3.3VDC為高電平的LTTL電平以5.0VDC為高電平的TTL電
    發表于 10-28 19:06 ?16次下載
    MCU通用<b class='flag-5'>輸入輸出</b>端口(<b class='flag-5'>GPIO</b>)<b class='flag-5'>輸出</b><b class='flag-5'>模式</b>

    二.GPIO輸入輸出及延遲函數

    一. GPIO八種模式,四種輸入,四種輸出1.GPIO輸入初始化void
    發表于 11-24 20:06 ?1次下載
    二.<b class='flag-5'>GPIO</b><b class='flag-5'>輸入輸出</b>及延遲函數

    04、STM8通用輸入輸出口(GPIO)

    04、STM8通用輸入輸出口(GPIO)文章目錄04、STM8通用輸入輸出口(GPIO)1、概述2、GPIO主要功能3、I/O 的配置和使用
    發表于 11-26 15:21 ?9次下載
    04、STM8通用<b class='flag-5'>輸入輸出</b>口(<b class='flag-5'>GPIO</b>)

    STM32的8種GPIO輸入輸出模式

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

    (轉)STM32的八種輸入輸出模式詳解

    輸出(GPIO_Mode_Out_OD)-開漏復用功能(GPIO_Mode_AF_OD)-推挽式輸出(GPIO_Mode_Out_PP)-推
    發表于 11-30 21:06 ?17次下載
    (轉)STM32的八種<b class='flag-5'>輸入輸出</b><b class='flag-5'>模式</b>詳解

    GPIO通用輸入輸出

    GPIO通用輸入輸出一、GPIO的功能概述用途:GPIO是通用輸入輸出(General Purpose I/O)的簡稱,主要用于工業現場需要
    發表于 12-20 18:58 ?6次下載
    <b class='flag-5'>GPIO</b>通用<b class='flag-5'>輸入輸出</b>

    GPIO內部結構和工作模式

    1 簡介? GPIO:通用輸入輸出端口? (1) 輸出功能:控制引腳輸出高、低電平,實現開關控制? GPIO引腳接入LED,控
    發表于 01-13 16:02 ?4次下載
    <b class='flag-5'>GPIO</b><b class='flag-5'>內部結構</b>和工作<b class='flag-5'>模式</b>

    通用輸入輸出GPIO是什么

    GPIO代表通用輸入/輸出。它是集成電路上的一種引腳,沒有特定功能。雖然大多數引腳都有專用用途,例如向特定組件發送信號,但 GPIO 引腳的功能是可定制的,并且可以由軟件控制。 引腳
    發表于 03-23 14:04 ?1644次閱讀
    通用<b class='flag-5'>輸入輸出</b><b class='flag-5'>GPIO</b>是什么

    GPIO內部電路的原理

    原理 前言 GPIO內部結構概覽 GPIO內部結構詳解 保護電路 輸出電路 推挽輸出 開漏
    的頭像 發表于 11-20 09:24 ?1104次閱讀
    <b class='flag-5'>GPIO</b><b class='flag-5'>內部</b>電路的原理
    主站蜘蛛池模板: sss欧美一区二区三区 | 性欧美视频 | 青草青草视频2免费观看 | 婷婷六月丁 | 六月激情婷婷 | 噜噜嘿| 成人免费黄色网 | 国产三级在线观看视频 | 中国一级做a爰片久久毛片 中韩日欧美电影免费看 | 免看一级a毛片一片成人不卡 | 免费在线h视频 | 成在线人永久免费播放视频 | 久久99热国产这有精品 | 天天做天天做天天综合网 | 日本超黄视频 | 香港三级在线视频 | 福利片网站 | 在线观看一区二区三区四区 | 免费人成在线观看网站 | 一级特黄aaa大片大全 | 国产色司机在线视频免费观看 | 三级在线免费观看 | 国产ar高清视频+视频 | 一区二区三区高清视频在线观看 | 色噜噜狠狠成人影院 | 欧美色图一区 | 岛国毛片| 亚洲国产一区二区三区a毛片 | 国产精品乱码高清在线观看 | 久久午夜国产片 | 久久精品国产四虎 | 午夜国产精品久久影院 | 色就操 | 真实子伦视频不卡 | αv天堂| 欧美日韩一区二区三区毛片 | 婷婷激情综合五月天 | 国产精品三级a三级三级午夜 | 欧美黄色片一级 | 国产精品免费一级在线观看 | 日韩成人毛片高清视频免费看 |