GPIO是什么
GPIO是通用輸入輸出端口的簡(jiǎn)稱,簡(jiǎn)單來(lái)說(shuō)就是STM32可控制的引腳,STM32芯片的GPIO引腳與外部設(shè)備連接起來(lái),從而實(shí)現(xiàn)與外部通訊、控制以及數(shù)據(jù)采集的功能。
STM32芯片的GPIO被分成很多組,每組有16個(gè)引腳,如型號(hào)為STM32F103ZET6型號(hào)的芯片有GPIOA、GPIOB、GPIOC至GPIOG共7組GPIO,芯片一共144個(gè)引腳,其中GPIO就占了一大部分,所有的GPlO引腳都有基本的輸入輸出功能。
最基本的輸出功能是由STM32控制引腳輸出高、低電平,實(shí)現(xiàn)開(kāi)關(guān)控制,如把GPIO引腳接入到LED燈,那就可以控制LED燈的亮滅,引腳接入到繼電器或三極管,那就可以通過(guò)繼電器或三極管控制外部大功率電路的通斷。
最基本的輸入功能是檢測(cè)外部輸入電平,如把GPIO引腳連接到按鍵,通過(guò)電平高低區(qū)分按鍵是否被按下。
點(diǎn)亮PB0 LED:
GPIO功能框圖
每個(gè)GPI/O端口有兩個(gè)32位配置寄存器(GPIOX-CRL,GPIOx-CRH),兩個(gè)32位數(shù)據(jù)寄存器(GPIOxIDR和GPIOX-ODR),一個(gè)32位置位/復(fù)位寄存器(GPIOx-BSRR),一個(gè)16位復(fù)位寄存器(GPIOx-BRR)和一個(gè)32位鎖定寄存器(GPIOX-LCKR).
根據(jù)數(shù)據(jù)手冊(cè)中列出的每個(gè)I/O端口的特定硬件特征,GPIO端口的每個(gè)位可以由軟件分別配置成多種模式:
輸入浮空
輸入上拉
輸入下拉
模擬輸入
開(kāi)漏輸出
推挽式輸出
推挽式復(fù)用功能
開(kāi)漏復(fù)用功能
每個(gè)I/O端口位可以自由編程,然而I/O端口寄存器必須按32位字被訪問(wèn)(不允許半字或字節(jié)訪問(wèn)),GPIOx-BSRR和GPIOxBRR寄存器允許對(duì)任何GPIO寄存器的讀/更改的獨(dú)立訪問(wèn);這樣,在讀和更改訪間之間產(chǎn)生IRQ時(shí)不會(huì)發(fā)生危險(xiǎn)。
圖上除了I/O引腳我們能在芯片外部看到,其余部分都在芯片內(nèi)部
1:保護(hù)模塊:當(dāng)I/O引腳輸入正電壓大于VDD,電流就會(huì)流向VDD不會(huì)流進(jìn)芯片內(nèi)部,從而保護(hù)電路(遠(yuǎn)大于VDD時(shí)二極管會(huì)燒壞,因此不能將引腳直接接電極,要用電機(jī)驅(qū)動(dòng)),反之輸入負(fù)電壓超過(guò)VSS時(shí),電流就會(huì)從VSS往外流。
2:推挽、開(kāi)漏或關(guān)閉:用以下兩個(gè)寄存器配置,每4個(gè)位控制一個(gè)GPIO,配置輸入輸出的各種模式(右上的上拉下拉開(kāi)關(guān)也是用這個(gè)寄存器設(shè)置的:10)。
簡(jiǎn)化電路圖:
當(dāng)INT輸入為1,取反后為0,上方的Ug
當(dāng)INT輸入為0,取反后為1,上方的Ug=Us,VDD3.3V電流流向Ug,VDD與OUT斷開(kāi);下方的Ug>Us,GND與OUT導(dǎo)通,OUT電流流向GND。
可以輸出高低電平,用于連接數(shù)字器件,高電平由VDD決定,低電平由VSS決定。
推挽結(jié)構(gòu)指兩個(gè)三極管受兩路互補(bǔ)的信號(hào)控制,總是在一個(gè)導(dǎo)通的時(shí)候另外一個(gè)截止,優(yōu)點(diǎn)開(kāi)關(guān)效率效率高,電流大,驅(qū)動(dòng)能力強(qiáng)。
輸出高電平時(shí),電流輸出到負(fù)載,叫灌電流,可以理解成推,輸出低電平時(shí),負(fù)載電流流向芯片,叫拉電流,即挽。
開(kāi)漏輸出一般只能輸出低電平,想輸出高電平要另外加上拉電阻,而且此時(shí)NMOS處于截止?fàn)顟B(tài)(當(dāng)INT為1時(shí))
輸出高電平時(shí),VDD如果是3.3V,OUT就輸出3.3V,VDD如果是5V,OUT就輸出5V
只能輸出低電平,不能輸出高電平。
如果要輸出高電平,則需要外接上拉。
開(kāi)漏輸出具有"線與"功能,一個(gè)為低,全部為低,多用于I2C和SMBUS總線。
3:輸出數(shù)據(jù)寄存器:用以下寄存器配置,可以直接設(shè)置ODR,也可以先設(shè)置BSRR,最后ODR會(huì)被更改。
(右上的上拉下拉開(kāi)關(guān)也是用這個(gè)BSRR寄存器設(shè)置的)
4:復(fù)用功能輸出:用外設(shè)輸出時(shí)(例如串口),第3部分就沒(méi)用了。
5:輸入數(shù)據(jù)寄存器:讀出引腳數(shù)據(jù)
6:復(fù)用功能輸入:外設(shè)引腳輸入。
7:模擬輸入:ADC采集,不經(jīng)過(guò)肖特基觸發(fā)器
GPIO輸出初始化順序
1、選定具體的GPIO
點(diǎn)亮B0 LED
2、配置GPIO工作模式(CRL和CRH寄存器)
3、控制GPIO輸出高低電平(ODR,BRR和BSRR)
編輯:hfy
-
led
+關(guān)注
關(guān)注
240文章
22907瀏覽量
650124 -
三極管
+關(guān)注
關(guān)注
142文章
3561瀏覽量
120890 -
繼電器
+關(guān)注
關(guān)注
132文章
5262瀏覽量
147607 -
GPIO
+關(guān)注
關(guān)注
16文章
1175瀏覽量
51515
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論