摘要:本文更深入的講述了GPIO的相關(guān)知識,并完成了導(dǎo)線連接工作,為下一步的軟件開發(fā)做好了準(zhǔn)備。
通用輸入輸出端口(GPIO:General Purpose Input/Output Port),在前面已經(jīng)有了初步的介紹,本篇將進(jìn)行更詳細(xì)的闡述,希望大家能夠了解GPIO端口是如何工作的。
通用輸入輸出端口的基本功能是:當(dāng)GPIO工作在輸入狀態(tài)時,可以讀取外部設(shè)備電平信號的高低,從而獲得外部設(shè)備的工作狀態(tài),當(dāng)GPIO工作在輸出狀態(tài)時,可以對外輸出高低電平,從而實現(xiàn)對外部設(shè)備的控制。GPIO接口作為一種被廣泛應(yīng)用于嵌入式系統(tǒng)的接口技術(shù)。通常有以下一些特點。
1.可配置性:GPIO可以配置為輸入或輸出模式,以適應(yīng)不同的應(yīng)用需求。
2.可編程性:GPIO可以通過特定的編程語言(如C語言、Python等)進(jìn)行編程,實現(xiàn)對外部設(shè)備的控制和數(shù)據(jù)處理。
3.高可靠性:GPIO具有較低的故障率和較高的抗干擾能力,適用于各種惡劣環(huán)境下的應(yīng)用。
4.易于擴(kuò)展:GPIO可以根據(jù)需要擴(kuò)展更多的輸入輸出通道,滿足不同規(guī)模的系統(tǒng)需求。
總的來說,GPIO具有通用性、數(shù)字信號、多功能、可編程性等特點,在嵌入式系統(tǒng)中發(fā)揮著重要作用。
對于嵌入式系統(tǒng)來說,每個芯片引腳都非常的珍貴,因此大部分的引腳都采用了端口復(fù)用技術(shù),也就是除了上面所列舉的基本的GPIO功能外,還可以用作其他功能,這在前面的引腳功能圖中已經(jīng)看到過了。ESP32的多路復(fù)用器,使設(shè)計人員可以靈活地更改芯片內(nèi)部的GPIO引腳連接并將其路由到任何信號,這樣在硬件設(shè)計、布線上會方便的多。
ESP32為每個GPIO端口提供了多種工作模式,所以在使用GPIO端口之前,必須要對端口進(jìn)行必要的配置。需要配置的參數(shù)包括一下幾個:
- GPIO的工作模式
- 設(shè)置是否需要上拉
- 設(shè)置是否需要下拉
- 設(shè)置GPIO中斷的類型
在這里我們重點的關(guān)注一下GPIO的工作模式,其他幾個參數(shù)暫時不做講解,后邊遇到的時候再詳細(xì)的說明。GPIO的工作模式包括以下幾個:
- GPIO_MODE_INPUT:輸入模式
- GPIO_MODE_OUTPUT:輸出模式
- GPIO_MODE_OUTPUT_OD:開漏輸出模式(如果外部或者內(nèi)部不上拉電阻則無法輸出高電平)
- GPIO_MODE_INPUT_OUTPUT_OD:開漏輸入輸出模式
- GPIO_MODE_INPUT_OUTPUT:輸入輸出模式
我們用得最多的是輸入模式和輸出模式,這兩種模式是對標(biāo)準(zhǔn)的數(shù)字信號進(jìn)行讀取和輸出,輸入用來獲取外部設(shè)備的狀態(tài)信號,輸出則將自己的引腳設(shè)置成指定狀態(tài),是用來“通知”外部設(shè)備。輸入模式可以用來檢測按鍵是否按下,而輸出模式則可以控制LED是否點亮,我們今天控制電動機(jī)是否旋轉(zhuǎn),以及旋轉(zhuǎn)的方向,就是使用了GPIO最基本的輸出模式。
在了解了GPIO的工作原理和工作模式之后,還要再次的強(qiáng)調(diào)那些特殊的引腳,一定要確保安全再用,盡量不要使用:
- Strapping管腳:GPIO0、GPIO2、GPIO5、GPIO12(MTDI)和GPIO15 (MTDO)是Strapping管腳。
- SPI0/1:GPIO6-11和GPIO16-17通常連接到模組內(nèi)集成的SPI flash和PSRAM,因此不能用于其他用途。
- JTAG:GPIO12-15通常用于在線調(diào)試。
- GPI:GPIO34-39只能設(shè)置為輸入模式,不具備軟件使能的上拉或下拉功能。
- TXD & RXD:GPIO1和GPIO3通常用于燒錄和調(diào)試。
接下來我們繼續(xù)完成之前未完成的接線工作,然后再利用程序來控制小車的電動機(jī)運(yùn)動起來。
我們首先要接的線就是從L298N模塊引出的GND線,將其插入到ESP32擴(kuò)展板上的GND排針上。因為在調(diào)試階段,我們的L298N模塊和電機(jī)使用的是鋰電池供電,而ESP32開發(fā)板則直接使用USB供電,只有將這兩種供電的地連接起來,我們ESP32的GPIO口輸出的信號才有回路,才能夠起到控制的作用。所以,這根導(dǎo)線千萬不要忘記接,否則你的電動機(jī)是不會運(yùn)動起來的。
然后,將IN1~IN8依次插入到ESP32模組可用GPIO對應(yīng)的排針上。接好后的樣子如下圖所示。
我具體的連接方法如下表所示:
輪子 |
L298N(OUT) |
L298N端口(IN) |
ESP32引腳 |
左前輪 |
OUT3 |
IN3 |
P26 |
OUT4 |
IN4 |
P27 |
|
左后輪 |
OUT1 |
IN1 |
P32 |
OUT2 |
IN2 |
P33 |
|
右前輪 |
OUT5 |
IN5 |
P25 |
OUT6 |
IN6 |
P23 |
|
右后輪 |
OUT7 |
IN7 |
P22 |
OUT8 |
IN8 |
P21文章來源:http://www.zghlxwxcb.cn/news/detail-767617.html |
后邊的開發(fā)都是依據(jù)這個表的配置來進(jìn)行的。配置不一致的請在開發(fā)中做適當(dāng)?shù)恼{(diào)整。文章來源地址http://www.zghlxwxcb.cn/news/detail-767617.html
到了這里,關(guān)于一起玩兒物聯(lián)網(wǎng)人工智能小車(ESP32)——13. 用ESP32的GPIO控制智能小車運(yùn)動起來(一)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!