饥渴少妇色诱公_国产精品亚洲αv天堂2024_日本欧美不卡一二三_亚洲特黄欧美一级另类成人不卡观看_色视频成人在线观看_大粗鸡巴久久_视频一区 亚洲综合_AV日韩中文字幕_91在线免费公开视频_很黄很黄的裸交全过程小说

歡迎光臨廣州品鑫機(jī)電科技有限公司!

新聞資訊
News

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

發(fā)布時(shí)間:2024-10-29作者:admin點(diǎn)擊:95

 

1.png


  首先介紹一下接口類型

  接口就是芯片之間的連接方式。單片機(jī)通過(guò)GPIO與各種模塊相連接,傳輸數(shù)據(jù)、信號(hào)。接口類型可分為以下幾種:

  1、普通GPIO接口

  通常只有一個(gè)引腳,只負(fù)責(zé)輸出、輸入高低電平。

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

  2、協(xié)議類GPIO接口

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

  這種情況一般是用來(lái)傳輸比較復(fù)雜的數(shù)據(jù),比如與各種傳感器、LCD等連接。

  常見(jiàn)的協(xié)議有IIC、SPI、CAN、FSMC等。

  3、內(nèi)存接口

  比如與Nor Flash、SDRAM、DDR、網(wǎng)卡DM9000等連接。

  這類接口有地址總線、數(shù)據(jù)總線、讀數(shù)據(jù)、寫數(shù)據(jù)和片選信號(hào)。

  4、模擬接口

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

  模擬接口GPIO輸入輸出是不確定的。簡(jiǎn)單理解就是輸入輸出的是模擬信號(hào),是可以連續(xù)變化的,能輸出0-Vmax之間的任意值。

  2. GPIO簡(jiǎn)介

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

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

  GPIO的復(fù)用:

  STM32F4 有很多的內(nèi)置外設(shè),這些外設(shè)的外部引腳都是與 GPIO 共用的。也就是說(shuō),一個(gè)引腳可以有很多作用,但是默認(rèn)為IO口,如果想使用一個(gè) GPIO內(nèi)置外設(shè)的功能引腳,就需要GPIO的復(fù)用,那么當(dāng)這個(gè) GPIO 作為內(nèi)置外設(shè)使用的時(shí)候,就叫做復(fù)用。 比如說(shuō)串口 就是GPIO復(fù)用為串口

  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 開(kāi)漏輸出(帶上拉或者下拉)

  (6)GPIO_Mode_AF_OD 復(fù)用開(kāi)漏輸出(帶上拉或者下拉)

  (7)GPIO_Mode_Out_PP 推挽輸出(帶上拉或者下拉)

  (8)GPIO_Mode_AF_PP 復(fù)用推挽輸出(帶上拉或者下拉)

  3、4種最大輸出速度

  (1)2MHZ (低速)

  (2)25MHZ (中速)

  (3)50MHZ (快速)

  (4)100MHZ (高速)

  關(guān)于他們的定義,都在 stm32f4xx_gpio.h 中,都為結(jié)構(gòu)體形式的定義

  4.GPIO框圖剖析

  

2.png


  我們所用到的每一個(gè)GPIO其內(nèi)部結(jié)構(gòu)都是這樣,分別對(duì)應(yīng)著GPIO的八種模式 這里我們簡(jiǎn)單的介紹下:

  保護(hù)二極管:IO引腳上下兩邊兩個(gè)二極管用于防止引腳外部過(guò)高、過(guò)低的電壓輸入,當(dāng)引腳電壓高于VDD_FT時(shí),上方的二極管導(dǎo)通,當(dāng)引腳電壓低于VSS時(shí),下方的二極管導(dǎo)通,防止不正常電壓引入芯片導(dǎo)致芯片燒毀

  上拉、下拉電阻:控制引腳默認(rèn)狀態(tài)的電壓,開(kāi)啟上拉的時(shí)候引腳默認(rèn)電壓為高電平,開(kāi)啟下拉的時(shí)候引腳默認(rèn)電壓為低電平

  TTL施密特觸發(fā)器:基本原理是當(dāng)輸入電壓高于正向閾值電壓,輸出為高;當(dāng)輸入電壓低于負(fù)向閾值電壓,輸出為低;IO口信號(hào)經(jīng)過(guò)觸發(fā)器后,模擬信號(hào)轉(zhuǎn)化為0和1的數(shù)字信號(hào) 也就是高低電平 并且是TTL電平協(xié)議 這也是為什么STM32是TTL電平協(xié)議的原因

  P-MOS管和N-MOS管:信號(hào)由P-MOS管和N-MOS管,依據(jù)兩個(gè)MOS管的工作方式,使得GPIO具有“推挽輸出”和“開(kāi)漏輸出”的模式 P-MOS管高電平導(dǎo)通,低電平關(guān)閉,下方的N-MOS低電平導(dǎo)通,高電平關(guān)閉

  注:VDD_FT 代表IO口,兼容3.3V和5V,如果沒(méi)有標(biāo)注“FT”,就代表著不兼容5V

  在芯片數(shù)據(jù)手冊(cè)的引腳定義中,會(huì)看到有“I/O電平”一列 有FT即為支持5V

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

  浮空輸入模式

  

3.png


  浮空輸入模式下,I/O端口的電平信號(hào)直接進(jìn)入輸入數(shù)據(jù)寄存器。MCU直接讀取I/O口電平,I/O的電平狀態(tài)是不確定的,完全由外部輸入決定;如果在該引腳懸空(在無(wú)信號(hào)輸入)的情況下,讀取該端口的電平是不確定的。(接用電壓表測(cè)量其引腳電壓為1點(diǎn)幾伏,這是個(gè)不確定值) 以用來(lái)做KEY識(shí)別

  上拉輸入模式

  

4.png


  IO內(nèi)部接上拉電阻,此時(shí)如果IO口外部沒(méi)有信號(hào)輸入或者引腳懸空,IO口默認(rèn)為高電平 如果I/O口輸入低電平,那么引腳就為低電平,MCU讀取到的就是低電平

  STM32的內(nèi)部上拉是"弱上拉",即通過(guò)此上拉輸出的電流是很弱的,如要求大電流還是需要外部上拉。

  下拉輸入模式

  IO內(nèi)部接下拉電阻,此時(shí)如果IO口外部沒(méi)有信號(hào)輸入或者引腳懸空,IO口默認(rèn)為低電平 如果I/O口輸入高電平,那么引腳就為高電平,MCU讀取到的就是高電平

  模擬輸入模式

  

5.png


  當(dāng)GPIO引腳用于ADC采集電壓的輸入通道時(shí),用作"模擬輸入"功能,此時(shí)信號(hào)不經(jīng)過(guò)施密特觸發(fā)器,直接進(jìn)入ADC模塊,并且輸入數(shù)據(jù)寄存器為空 ,CPU不能在輸入數(shù)據(jù)寄存器上讀到引腳狀態(tài)

  當(dāng)GPIO用于模擬功能時(shí),引腳的上、下拉電阻是不起作用的,這個(gè)時(shí)候即使配置了上拉或下拉模式,也不會(huì)影響到模擬信號(hào)的輸入輸出。

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

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

  

6.png


  (P-MOS管高電平導(dǎo)通,低電平關(guān)閉,下方的N-MOS低電平導(dǎo)通,高電平關(guān)閉)

  在開(kāi)漏輸出模式時(shí),只有N-MOS管工作,如果我們控制輸出為0,低電平,則P-MOS管關(guān)閉,N-MOS管導(dǎo)通,使輸出低電平,I/O端口的電平就是低電平,若控制輸出為1時(shí),高電平,則P-MOS管和N-MOS管都關(guān)閉,輸出指令就不會(huì)起到作用,此時(shí)I/O端口的電平就不會(huì)由輸出的高電平?jīng)Q定,而是由I/O端口外部的上拉或者下拉決定 如果沒(méi)有上拉或者下拉 IO口就處于懸空狀態(tài)

  并且此時(shí)施密特觸發(fā)器是打開(kāi)的,即輸入可用,通過(guò)輸入數(shù)據(jù)寄存器GPIOx_IDR可讀取I/O的實(shí)際狀態(tài)。,I/O口的電平不一定是輸出的電平

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

  

7.png


  (P-MOS管高電平導(dǎo)通,低電平關(guān)閉,下方的N-MOS低電平導(dǎo)通,高電平關(guān)閉)

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

  此時(shí)施密特觸發(fā)器是打開(kāi)的,即輸入可用,通過(guò)輸入數(shù)據(jù)寄存器GPIOx_IDR可讀取I/O的實(shí)際狀態(tài)。I/O口的電平一定是輸出的電平

  復(fù)用開(kāi)漏輸出(帶上拉或者下拉)

  

8.png


  GPIO復(fù)用為其他外設(shè),輸出數(shù)據(jù)寄存器GPIOx_ODR無(wú)效; 輸出的高低電平的來(lái)源于其它外設(shè),施密特觸發(fā)器打開(kāi),輸入可用,通過(guò)輸入數(shù)據(jù)寄存器可獲取I/O實(shí)際狀態(tài) 除了輸出信號(hào)的來(lái)源改變 其他與開(kāi)漏輸出功能相同

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

  

9.png


  GPIO復(fù)用為其他外設(shè)(如 I2C),輸出數(shù)據(jù)寄存器GPIOx_ODR無(wú)效; 輸出的高低電平的來(lái)源于其它外設(shè),施密特觸發(fā)器打開(kāi),輸入可用,通過(guò)輸入數(shù)據(jù)寄存器可獲取I/O實(shí)際狀態(tài) 除了輸出信號(hào)的來(lái)源改變 其他與開(kāi)漏輸出功能相同

  開(kāi)漏輸出和推挽輸出的區(qū)別:

  推挽輸出:

  可以輸出強(qiáng)高低電平,連接數(shù)字器件

  推挽結(jié)構(gòu)一般是指兩個(gè)三極管分別受兩互補(bǔ)信號(hào)的控制,總是在一個(gè)三極管導(dǎo)通的時(shí)候另一個(gè)截止.

  開(kāi)漏輸出:

  可以輸出強(qiáng)低電平,高電平得靠外部電阻拉高。輸出端相當(dāng)于三極管的集電極. 需要外接上拉電阻,才能實(shí)現(xiàn)輸出高電平 合于做電流型的驅(qū)動(dòng),其吸收電流的能力相對(duì)強(qiáng)(一般20ma以內(nèi));

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

  

10.png


  補(bǔ)充介紹三極管NPN PNP

  三極管也是只有在某些條件下才會(huì)導(dǎo)通。常用做開(kāi)關(guān)電路。

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

  對(duì)于三極管,只需記住通過(guò)基極b和發(fā)射機(jī)e的導(dǎo)通控制集電極c和發(fā)射機(jī)e的導(dǎo)通。

  NPN:

  

11.png


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

  通常Vb-Ve > 0.7v就認(rèn)為be之間導(dǎo)通,根據(jù)材質(zhì)這個(gè)電壓可能會(huì)變化。

  Vcon = 1,be導(dǎo)通,ce導(dǎo)通,V2 =0為低電平。

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

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

  PNP:

  PNP型三極管與NPN的類似。

  

12.png


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

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

  Vcon = 0,eb導(dǎo)通,ec導(dǎo)通,V2 = V為高電平。

  常見(jiàn)基本電路知識(shí)

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

  開(kāi)漏輸出電路:IN端輸出低電平時(shí),三極管導(dǎo)通,使輸出接地,IN端輸出高電平時(shí),三極管截止,所以引腳既不輸出高電平,也不輸出低電平,為高阻態(tài)。為正常使用時(shí)必須接上拉電阻,

  在STM32中選用IO模式:

  上拉輸入、下拉輸入可以用來(lái)檢測(cè)外部信號(hào);例如,按鍵等;

  模擬輸入 ——應(yīng)用ADC模擬輸入,或者低功耗下省電

  開(kāi)漏輸出一般應(yīng)用在I2C、SMBUS通訊等需要"線與"功能的總線電路中。

  推挽輸出模式一般應(yīng)用在輸出電平為0和3.3伏而且需要高速切換開(kāi)關(guān)狀態(tài)的場(chǎng)合。在STM32的應(yīng)用中,除了必須用開(kāi)漏模式的場(chǎng)合,我們都習(xí)慣使用推挽輸出模式。

  復(fù)用功能的推挽輸出_AF_PP ——片內(nèi)外設(shè)功能(I2C的SCL,SDA)

  復(fù)用功能的開(kāi)漏輸出_AF_OD——片內(nèi)外設(shè)功能(TX1,MOSI,MISO.SCK.SS)

  F4系列與F1系列區(qū)別:

  本質(zhì)上的區(qū)別是F4系列采用了Cortex-M4內(nèi)核 而F1系列采用Cortex-M3內(nèi)核

  F1系列(M3)IO口基本結(jié)構(gòu):

  

13.png


  F4系列(M4)IO口基本結(jié)構(gòu):

  

14.png


  F4系列設(shè)計(jì)的更加高級(jí)與人性化,他將外部上下拉電阻轉(zhuǎn)移到了輸出/輸入驅(qū)動(dòng)器外部,使得輸出模式下也可以實(shí)現(xiàn)內(nèi)部上拉與下拉,方便了用戶的使用,增加了靈活性

  GPIO的初始化(F4)

  這里我們以初始化LED為例

  1.定義一個(gè) GPIO_InitTypeDef 類型的結(jié)構(gòu)體

  GPIO_InitTypeDef GPIO_InitStructure; /*定義一個(gè) GPIO_InitTypeDef 類型的結(jié)構(gòu)體*/

  一共有5個(gè)參數(shù)

  

15.png


  2開(kāi)啟 LED 相關(guān)的 GPIO 外設(shè)時(shí)鐘(時(shí)鐘必要)

  RCC_AHB1PeriphClockCmd ( RCC_AHB1Periph_GPIOB, ENABLE); /*開(kāi)啟 AHB1時(shí)鐘*/

  Q:為什么要設(shè)置時(shí)鐘?

  任何外設(shè)都需要時(shí)鐘,51單片機(jī),stm32,430等等,因?yàn)榧拇嫫魇怯蒁觸發(fā)器組成的,往觸發(fā)器里面寫東西,前提條件是有時(shí)鐘輸入。stm32是低功耗,他將所有的門都默認(rèn)設(shè)置為disable(不使能),在你需要用哪個(gè)門的時(shí)候,開(kāi)哪個(gè)門就可以,也就是說(shuō)用到什么外設(shè),只要打開(kāi)對(duì)應(yīng)外設(shè)的時(shí)鐘就可以, 其他的沒(méi)用到的可以還是disable(不使能),這樣耗能就會(huì)減少。

  Q:為什么 STM32 要有多個(gè)時(shí)鐘源呢?

  因?yàn)槭?先 STM32 本身非常復(fù)雜,外設(shè)非常的多,但是并不是所有外設(shè)都需要系統(tǒng)時(shí)鐘這么高的頻率, 比如看門狗以及 RTC 只需要幾十 k 的時(shí)鐘即可。同一個(gè)電路,時(shí)鐘越快功耗越大,同時(shí)抗電磁 干擾能力也會(huì)越弱,所以對(duì)于較為復(fù)雜的 MCU 一般都是采取多時(shí)鐘源的方法來(lái)解決這些問(wèn)題。

  而相對(duì)應(yīng)的外設(shè)功能所使用的時(shí)鐘 在stm32f4xx.h 中即可查看到

  RCC_AHB1

  

16.png


  RCC_APB1

  

17.png


  3選擇要控制的 GPIO 引腳

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

  可選引腳為0-15 一組IO口有16個(gè)引腳

  

18.png


  4設(shè)置所選引腳的模式

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; /*設(shè)定為輸出模式*/

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

  

19.png


  5 設(shè)定所選引腳的輸出類型

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

  輸出模式有兩種:推挽輸出和開(kāi)漏輸出

  

20.png


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

  6 設(shè)定所選管腳的速度

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

  

21.png


  7 設(shè)定所選管腳的上拉與下拉

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

  可設(shè)置為:上拉,下拉,與浮空

  

22.png


  8初始化GPIO

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

  GPIO_Init() 是官方配置的初始化函數(shù) 第一個(gè)參數(shù)是GPIOX 第二個(gè)參數(shù)是結(jié)構(gòu)體所對(duì)應(yīng)GPIO各種參數(shù)的配置

  GPIO的初始化(F1)

  F4的初始化相較于F1系列有了很大的改變,在配置F1系列時(shí),結(jié)構(gòu)體只有三個(gè)參數(shù)

  GPIO_InitTypeDef 類型的結(jié)構(gòu)體

  

23.png


  所選管腳的速度

  

24.png


  所選管腳的8種模式

  

25.png


  區(qū)別:

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


地址:廣州天河區(qū)創(chuàng)境匯盈科智谷24號(hào)樓301房

全國(guó)24小時(shí)服務(wù)熱線18126855130

聯(lián)
咨詢熱線:
18126855130
在線客服:

客服QQ:2885125697

官方微信站:
公司官網(wǎng): http://google-reseller.cn