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

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

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

3天內不再提示

GPIO的八種模式及工作原理(電路原理和三極管)

張飛電子實戰營 ? 來源:張飛電子實戰營 ? 2024-12-16 16:25 ? 次閱讀

f100b12e-b61d-11ef-93f3-92fbcf53809c.png

首先介紹一下接口類型

接口就是芯片之間的連接方式。單片機通過GPIO與各種模塊相連接,傳輸數據、信號。接口類型可分為以下幾種:

1、普通GPIO接口

通常只有一個引腳,只負責輸出、輸入高低電平。

比如輸出高低電平控制LED、蜂鳴器;作為按鍵輸入引腳判斷按鍵是否被按下。

2、協議類GPIO接口

一條或多條數據線根據某種協議傳輸數據,引腳仍是輸出輸入高低電平,但是輸出輸入是根據協議決定的,比如IIC協議,只有在時鐘線低電平的時候,數據線才能進行高低電平轉換,時鐘線為高電平的時候,數據線必須保持電平不變(起始信號、結束信號除外)。

這種情況一般是用來傳輸比較復雜的數據,比如與各種傳感器、LCD等連接。

常見的協議有IIC、SPI、CAN、FSMC等。

3、內存接口

比如與Nor Flash、SDRAMDDR、網卡DM9000等連接。

這類接口有地址總線、數據總線、讀數據、寫數據和片選信號。

4、模擬接口

之前三種接口GPIO的輸入輸出的都是高低電平,電平信號不是0就是1。

模擬接口GPIO輸入輸出是不確定的。簡單理解就是輸入輸出的是模擬信號,是可以連續變化的,能輸出0-Vmax之間的任意值。

2. GPIO簡介

GPIO,即通用I/O(輸入/輸出)端口,是STM32可控制的引腳。STM32芯片的GPIO引腳與外部設備連接起來,可實現與外部通訊、控制外部硬件或者采集外部硬件數據的功能。

STM32F407有7組IO。分別為GPIOA~GPIOG,每組IO有16個IO口,共有112個IO口通常稱為 PAx、PBx、PCx、PDx、PEx、PFx、PGx,其中x為0-15。并且F4系列是基于Cortex-M4內核

GPIO的復用:

STM32F4 有很多的內置外設,這些外設的外部引腳都是與 GPIO 共用的。也就是說,一個引腳可以有很多作用,但是默認為IO口,如果想使用一個 GPIO內置外設的功能引腳,就需要GPIO的復用,那么當這個 GPIO 作為內置外設使用的時候,就叫做復用。 比如說串口 就是GPIO復用為串口

3. GPIO的工作模式

1、4種輸入模式

(1)GPIO_Mode_IN_FLOATING 浮空輸入
(2)GPIO_Mode_IPU 上拉輸入
(3)GPIO_Mode_IPD 下拉輸入
(4)GPIO_Mode_AIN 模擬輸入

2、4種輸出模式

(5)GPIO_Mode_Out_OD 開漏輸出(帶上拉或者下拉)
(6)GPIO_Mode_AF_OD 復用開漏輸出(帶上拉或者下拉)
(7)GPIO_Mode_Out_PP 推挽輸出(帶上拉或者下拉)
(8)GPIO_Mode_AF_PP 復用推挽輸出(帶上拉或者下拉)

3、4種最大輸出速度

(1)2MHZ (低速)
(2)25MHZ (中速)
(3)50MHZ (快速)
(4)100MHZ (高速)

關于他們的定義,都在 stm32f4xx_gpio.h 中,都為結構體形式的定義

4.GPIO框圖剖析

f127101c-b61d-11ef-93f3-92fbcf53809c.png

我們所用到的每一個GPIO其內部結構都是這樣,分別對應著GPIO的八種模式 這里我們簡單的介紹下:

保護二極管:IO引腳上下兩邊兩個二極管用于防止引腳外部過高、過低的電壓輸入,當引腳電壓高于VDD_FT時,上方的二極管導通,當引腳電壓低于VSS時,下方的二極管導通,防止不正常電壓引入芯片導致芯片燒毀

上拉、下拉電阻:控制引腳默認狀態的電壓,開啟上拉的時候引腳默認電壓為高電平,開啟下拉的時候引腳默認電壓為低電平

TTL施密特觸發器:基本原理是當輸入電壓高于正向閾值電壓,輸出為高;當輸入電壓低于負向閾值電壓,輸出為低;IO口信號經過觸發器后,模擬信號轉化為0和1的數字信號 也就是高低電平 并且是TTL電平協議 這也是為什么STM32是TTL電平協議的原因

P-MOS管和N-MOS管:信號由P-MOS管和N-MOS管,依據兩個MOS管的工作方式,使得GPIO具有“推挽輸出”和“開漏輸出”的模式 P-MOS管高電平導通,低電平關閉,下方的N-MOS低電平導通,高電平關閉

注:VDD_FT 代表IO口,兼容3.3V和5V,如果沒有標注“FT”,就代表著不兼容5V

在芯片數據手冊的引腳定義中,會看到有“I/O電平”一列 有FT即為支持5V

5.GPIO的八種工作模式剖析:

浮空輸入模式

f14320cc-b61d-11ef-93f3-92fbcf53809c.png


浮空輸入模式下,I/O端口的電平信號直接進入輸入數據寄存器MCU直接讀取I/O口電平,I/O的電平狀態是不確定的,完全由外部輸入決定;如果在該引腳懸空(在無信號輸入)的情況下,讀取該端口的電平是不確定的。(接用電壓表測量其引腳電壓為1點幾伏,這是個不確定值) 以用來做KEY識別

上拉輸入模式

f1627ae4-b61d-11ef-93f3-92fbcf53809c.png

IO內部接上拉電阻,此時如果IO口外部沒有信號輸入或者引腳懸空,IO口默認為高電平如果I/O口輸入低電平,那么引腳就為低電平,MCU讀取到的就是低電平

STM32的內部上拉是"弱上拉",即通過此上拉輸出的電流是很弱的,如要求大電流還是需要外部上拉。

下拉輸入模式

IO內部接下拉電阻,此時如果IO口外部沒有信號輸入或者引腳懸空,IO口默認為低電平 如果I/O口輸入高電平,那么引腳就為高電平,MCU讀取到的就是高電平

模擬輸入模式

f1830f3e-b61d-11ef-93f3-92fbcf53809c.png

當GPIO引腳用于ADC采集電壓的輸入通道時,用作"模擬輸入"功能,此時信號不經過施密特觸發器,直接進入ADC模塊,并且輸入數據寄存器為空 ,CPU不能在輸入數據寄存器上讀到引腳狀態

當GPIO用于模擬功能時,引腳的上、下拉電阻是不起作用的,這個時候即使配置了上拉或下拉模式,也不會影響到模擬信號的輸入輸出。

除了 ADC 和 DAC 要將 IO 配置為模擬通道之外其他外設功能一律 要配置為復用功能模式,

開漏輸出模式(帶上拉或者下拉)

f19e163a-b61d-11ef-93f3-92fbcf53809c.png

(P-MOS管高電平導通,低電平關閉,下方的N-MOS低電平導通,高電平關閉)

在開漏輸出模式時,只有N-MOS管工作,如果我們控制輸出為0,低電平,則P-MOS管關閉,N-MOS管導通,使輸出低電平,I/O端口的電平就是低電平,若控制輸出為1時,高電平,則P-MOS管和N-MOS管都關閉,輸出指令就不會起到作用,此時I/O端口的電平就不會由輸出的高電平決定,而是由I/O端口外部的上拉或者下拉決定 如果沒有上拉或者下拉 IO口就處于懸空狀態

并且此時施密特觸發器是打開的,即輸入可用,通過輸入數據寄存器GPIOx_IDR可讀取I/O的實際狀態。,I/O口的電平不一定是輸出的電平

推挽輸出模式(帶上拉或者下拉)

f1b468fe-b61d-11ef-93f3-92fbcf53809c.png

(P-MOS管高電平導通,低電平關閉,下方的N-MOS低電平導通,高電平關閉)

在推挽輸出模式時,N-MOS管和P-MOS管都工作,如果我們控制輸出為0,低電平,則P-MOS管關閉,N-MOS管導通,使輸出低電平,I/O端口的電平就是低電平,若控制輸出為1 高電平,則P-MOS管導通N-MOS管關閉,使輸出高電平,I/O端口的電平就是高電平, 外部上拉和下拉的作用是控制在沒有輸出時IO口電平

此時施密特觸發器是打開的,即輸入可用,通過輸入數據寄存器GPIOx_IDR可讀取I/O的實際狀態。I/O口的電平一定是輸出的電平

復用開漏輸出(帶上拉或者下拉)

f1d6b684-b61d-11ef-93f3-92fbcf53809c.png

GPIO復用為其他外設,輸出數據寄存器GPIOx_ODR無效;輸出的高低電平的來源于其它外設,施密特觸發器打開,輸入可用,通過輸入數據寄存器可獲取I/O實際狀態 除了輸出信號的來源改變 其他與開漏輸出功能相同

復用推挽輸出(帶上拉或者下拉)

f206f6aa-b61d-11ef-93f3-92fbcf53809c.png

GPIO復用為其他外設(如 I2C),輸出數據寄存器GPIOx_ODR無效;輸出的高低電平的來源于其它外設,施密特觸發器打開,輸入可用,通過輸入數據寄存器可獲取I/O實際狀態 除了輸出信號的來源改變 其他與開漏輸出功能相同

開漏輸出和推挽輸出的區別:

推挽輸出:

可以輸出強高低電平,連接數字器件

推挽結構一般是指兩個三極管分別受兩互補信號的控制,總是在一個三極管導通的時候另一個截止.

開漏輸出:

可以輸出強低電平,高電平得靠外部電阻拉高。輸出端相當于三極管的集電極. 需要外接上拉電阻,才能實現輸出高電平 合于做電流型的驅動,其吸收電流的能力相對強(一般20ma以內);

在使用任何一種開漏模式時,都需要接上拉電阻,否則只能輸出低電平

f21ac540-b61d-11ef-93f3-92fbcf53809c.png

補充介紹三極管NPN PNP

三極管也是只有在某些條件下才會導通。常用做開關電路

三極管分為PNP和NPN兩種,但是原理是類似的。

對于三極管,只需記住通過基極b和發射機e的導通控制集電極c和發射機e的導通。

NPN:

f23756b0-b61d-11ef-93f3-92fbcf53809c.png

根據圖中箭頭判斷電流流向。若基極電壓Vb大于發射極電壓Ve,則be之間導通,從而導致ce之間導通。那么V2就與低相連,V2=0。

通常Vb-Ve > 0.7v就認為be之間導通,根據材質這個電壓可能會變化。

Vcon = 1,be導通,ce導通,V2 =0為低電平。

Vcon = 0,be截止,ce截止,V2 = V為高電平。

可以看到,V2電壓與Vcon電壓相反,所以一個三極管可以做反向電路。

PNP:

PNP型三極管與NPN的類似。

f256ef7a-b61d-11ef-93f3-92fbcf53809c.png

根據圖中箭頭判斷電流流向。若發射極電壓Ve大于基極電壓Vb,則eb之間導通,從而導致ec之間導通。那么V2就與V相連,V2=V,為高電平。

Vcon = 1,eb截止,ec截止,V2 =0為低電平。

Vcon = 0,eb導通,ec導通,V2 = V為高電平。

常見基本電路知識

推挽輸出電路:其中IN端輸出高電平時下面的PNP三極管截止,而上面NPN三極管導通,輸出電平VS+;當IN端輸出低電平時則恰恰相反,PNP三極管導通,輸出和地相連,為低電平

開漏輸出電路:IN端輸出低電平時,三極管導通,使輸出接地,IN端輸出高電平時,三極管截止,所以引腳既不輸出高電平,也不輸出低電平,為高阻態。為正常使用時必須接上拉電阻,

在STM32中選用IO模式:

上拉輸入、下拉輸入可以用來檢測外部信號;例如,按鍵等;
模擬輸入——應用ADC模擬輸入,或者低功耗下省電
開漏輸出一般應用在I2C、SMBUS通訊等需要"線與"功能的總線電路中。
推挽輸出模式一般應用在輸出電平為0和3.3伏而且需要高速切換開關狀態的場合。在STM32的應用中,除了必須用開漏模式的場合,我們都習慣使用推挽輸出模式。
復用功能的推挽輸出_AF_PP ——片內外設功能(I2C的SCL,SDA)
復用功能的開漏輸出_AF_OD——片內外設功能(TX1,MOSI,MISO.SCK.SS)

F4系列與F1系列區別:

本質上的區別是F4系列采用了Cortex-M4內核而F1系列采用Cortex-M3內核

F1系列(M3)IO口基本結構:

f276d1b4-b61d-11ef-93f3-92fbcf53809c.png

F4系列(M4)IO口基本結構:

f28b673c-b61d-11ef-93f3-92fbcf53809c.png

F4系列設計的更加高級與人性化,他將外部上下拉電阻轉移到了輸出/輸入驅動器外部,使得輸出模式下也可以實現內部上拉與下拉,方便了用戶的使用,增加了靈活性

GPIO的初始化(F4)

這里我們以初始化LED為例

1.定義一個 GPIO_InitTypeDef 類型的結構體

GPIO_InitTypeDef GPIO_InitStructure; /*定義一個 GPIO_InitTypeDef 類型的結構體*/

一共有5個參數

f2acaa28-b61d-11ef-93f3-92fbcf53809c.png

2開啟 LED 相關的 GPIO 外設時鐘(時鐘必要)

RCC_AHB1PeriphClockCmd ( RCC_AHB1Periph_GPIOB, ENABLE); /*開啟 AHB1時鐘*/

Q:為什么要設置時鐘?

任何外設都需要時鐘,51單片機,stm32,430等等,因為寄存器是由D觸發器組成的,往觸發器里面寫東西,前提條件是有時鐘輸入。stm32是低功耗,他將所有的門都默認設置為disable(不使能),在你需要用哪個門的時候,開哪個門就可以,也就是說用到什么外設,只要打開對應外設的時鐘就可以, 其他的沒用到的可以還是disable(不使能),這樣耗能就會減少。

Q:為什么 STM32 要有多個時鐘源呢?

因為首 先 STM32 本身非常復雜,外設非常的多,但是并不是所有外設都需要系統時鐘這么高的頻率, 比如看門狗以及 RTC 只需要幾十 k 的時鐘即可。同一個電路,時鐘越快功耗越大,同時抗電磁 干擾能力也會越弱,所以對于較為復雜的 MCU 一般都是采取多時鐘源的方法來解決這些問題。

而相對應的外設功能所使用的時鐘 在stm32f4xx.h 中即可查看到

RCC_AHB1

f2c7c34e-b61d-11ef-93f3-92fbcf53809c.png

RCC_APB1

f2e2f092-b61d-11ef-93f3-92fbcf53809c.png

3選擇要控制的 GPIO 引腳

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; /*選擇Pin9引腳*/

可選引腳為0-15 一組IO口有16個引腳

f30680f2-b61d-11ef-93f3-92fbcf53809c.png

4設置所選引腳的模式

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; /*設定為輸出模式*/

引腳的模式共有四種,分別為輸入,輸出,復用,和模擬模式

f32648b0-b61d-11ef-93f3-92fbcf53809c.png

5 設定所選引腳的輸出類型

GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; /*設置引腳的輸出類型為推挽輸出*/

輸出模式有兩種:推挽輸出和開漏輸出

f349ec20-b61d-11ef-93f3-92fbcf53809c.png

只有輸出模式才需要配置,輸入模式下不需要配置

6 設定所選管腳的速度

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//設定速度為100MHz 高速模式

f38e25b6-b61d-11ef-93f3-92fbcf53809c.png

7 設定所選管腳的上拉與下拉

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; /*設置引腳為上拉模式*/

可設置為:上拉,下拉,與浮空

f3bb0d1a-b61d-11ef-93f3-92fbcf53809c.png

8初始化GPIO

GPIO_Init(GPIOB, &GPIO_InitStructure); //初始化所設置的引腳

GPIO_Init() 是官方配置的初始化函數第一個參數是GPIOX 第二個參數是結構體所對應GPIO各種參數的配置

GPIO的初始化(F1)

F4的初始化相較于F1系列有了很大的改變,在配置F1系列時,結構體只有三個參數

GPIO_InitTypeDef 類型的結構體

f3de6bde-b61d-11ef-93f3-92fbcf53809c.png

所選管腳的速度

f4017b24-b61d-11ef-93f3-92fbcf53809c.png

所選管腳的8種模式

f41c0e8a-b61d-11ef-93f3-92fbcf53809c.png

區別:

F1(M-3)系列管腳速度只有三種模式 并且管腳的模式配置八種模式全部都在一起定義,直接設置即可

總歸還是大同小異,不做過多介紹,看下下方配置即可

void led_init(void)
{GPIO_InitTypeDef GPIO_InitStruct; //定義初始化結構體
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //使能GPIOA時鐘

GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; //配置模式
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0; //配置哪個IO口
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //配置IO口速度,僅輸出有效
GPIO_Init(GPIOA,&GPIO_InitStruct); //初始化GPIOA的參數為以上結構體
}

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

    關注

    33

    文章

    8596

    瀏覽量

    151145
  • GPIO
    +關注

    關注

    16

    文章

    1204

    瀏覽量

    52091

原文標題:GPIO八種模式及工作原理(電路原理和三極管)

文章出處:【微信號:zfdzszy,微信公眾號:張飛電子實戰營】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    三極管工作原理及作用 三極管放大電路原理詳解

      三極管是一端口的半導體器件,包括一個發射、一個基極和一個集電極。它的工作原理基于半導體材料的特性和PN結的電性質。
    發表于 02-25 15:42 ?1.9w次閱讀
    <b class='flag-5'>三極管</b>的<b class='flag-5'>工作原理</b>及作用 <b class='flag-5'>三極管</b>放大<b class='flag-5'>電路</b>原理詳解

    三極管工作原理

    三極管工作原理視頻教程,非常詳細,一看就懂,不看后悔。
    發表于 02-28 23:14 ?0次下載
    <b class='flag-5'>三極管</b>的<b class='flag-5'>工作原理</b>

    三極管的基礎知識及工作原理

    三極管的基礎知識及工作原理 半導體三極管也稱為晶體三極管,可以說它是電子電路中最重要的器件。它最主要的功能是電流 放大和開關作用。
    發表于 12-05 09:33 ?2532次閱讀
    <b class='flag-5'>三極管</b>的基礎知識及<b class='flag-5'>工作原理</b>

    三極管工作原理

    三極管工作原理 :三極管是電流放大器件,有
    發表于 07-14 10:29 ?6343次閱讀
    <b class='flag-5'>三極管</b>的<b class='flag-5'>工作原理</b>

    半導體三極管工作原理

    半導體三極管工作原理 PNP 型半導體三極管和NPN 型半導體三極管的基本工作原理完全一樣,下面以NPN 型半導體
    發表于 08-22 15:46 ?5050次閱讀

    三極管工作原理及檢測方法

    三極管工作原理及檢測方法   三極管工作原理
    發表于 11-05 13:47 ?9185次閱讀

    三極管的基礎知識及工作原理

    三極管的基礎知識及工作原理   1 三極管的結構和分類其共同特征就是具有個電極,這就
    發表于 11-05 13:49 ?8068次閱讀

    晶體三極管工作原理

    晶體三極管工作原理   一、三極管的電流放大原理 晶體三極管(以下簡
    發表于 11-05 13:53 ?1.6w次閱讀

    三極管鉗位器工作原理

    三極管鉗位器工作原理 三極管的發射結作為一個二極管,類似圖5.4-94所示電路組成一個三極管
    發表于 05-24 15:07 ?1.6w次閱讀
    <b class='flag-5'>三極管</b>鉗位器<b class='flag-5'>工作原理</b>

    淺析三極管三極管工作原理

    電子發燒友網站提供《淺析三極管三極管工作原理.pdf》資料免費下載
    發表于 04-17 21:37 ?6次下載

    三極管共發射放大電路工作原理

    三極管共發射放大電路工作原理免費下載。
    發表于 05-31 15:21 ?49次下載

    三極管三種工作狀態 三極管電路中的作用

    的放大器件的統稱,我們常說的三極管,可能是幾種器件。 三極管三種工作狀態 1.三極管截止工作
    的頭像 發表于 10-02 16:11 ?3w次閱讀

    三極管工作原理與應用介紹

    三極管,全稱為雙型晶體(Bipolar Junction Transistor,BJT),是一廣泛應用于電子設備中的半導體器件。它由兩個PN結構成,具有放大、開關和穩壓等功能。
    的頭像 發表于 12-30 16:48 ?1929次閱讀
    <b class='flag-5'>三極管</b>的<b class='flag-5'>工作原理</b>與應用介紹

    什么是三極管 三極管工作原理是什么

    三極管是一半導體電子器件,由兩個PN結構成。它有個電極:發射(Emitter)、基極(Base)和集電極(Collector)。三極管
    的頭像 發表于 12-30 17:13 ?2298次閱讀
    什么是<b class='flag-5'>三極管</b>  <b class='flag-5'>三極管</b>的<b class='flag-5'>工作原理</b>是什么

    三極管工作原理解析 三極管選擇與應用指南

    材料制成。相反,在PNP型三極管中,發射和集電極由P型材料制成,基極由N型材料制成。 2. 工作原理 三極管工作原理基于PN結的單向導電
    的頭像 發表于 11-01 15:03 ?677次閱讀
    主站蜘蛛池模板: 亚洲高清国产一线久久| 色五月激情小说| 中文一级黄色片| 亚洲video| 欧美在线观看一区二区三| 中文天堂最新版www| 日韩中文电影| 黄色一级大片视频| 永久在线免费| 九九99久久精品影视| 91大神精品视频| 中文字幕88页| 久久久免费视频观看| 4hc44www四虎永久| 国产综合免费视频| 色女人综合| 四虎看黄| 国产精品一区二区三区四区| 狠狠色视频| 天天舔天天干天天操| 国产黄在线观看免费观看不卡 | 日韩午夜大片| 国产成在线人视频免费视频| 日日夜操| 亚洲一区二区在线播放| 午夜伦伦| 国模掰开| 免费欧美黄色| 天天色成人网| 日韩欧美一卡二区| 天天操免费视频| 91大神精品长腿在线观看网站| 色88888久久久久久影院| 午夜骚片| 一区二区三区免费在线| 四虎最新免费网址| 给个网站可以在线观看你懂的| 欧美性白人极品1819hd| 性欧美在线| 亚洲日本高清| 亚洲免费毛片|