ESP32引腳參考


ES​P32芯片配有48個具有多種功能的引腳。並非所有的引腳都暴露在所有的ESP32開發板中,有些引腳不能使用。

 

 

關於如何使用ESP32 GPIO有很多問題。你應該用什么pin?在項目中應該避免使用哪些pin?本文旨在成為一個為ESP32的GPIO提供一個簡單易懂的參考指南。

下圖顯示了ESP-WROOM-32引腳。如果使用ESP32裸芯片構建自定義板,可以將其用作參考:

 

 

注意:並非所有的GPIO都可以在所有的開發板中訪問,但是每個特定的GPIO都以相同的方式工作,而不管您使用的是什么開發板。

ESP32外圍設備

ESP32外圍設備包括:

18個模數轉換器(ADC)通道

3個SPI接口

3個UART接口

2個I2C接口

16個脈沖寬度調制輸出通道

2個數模轉換器(DAC)

2個I2S接口

10個電容傳感GPIO

ADC(模數轉換器)和DAC(數模轉換器)功能分配給特定的靜態引腳。但是,您可以決定哪些管腳是UART、I2C、SPI、PWM等,您只需要在代碼中分配它們。這是可能的,因為ESP32芯片的多路復用功能。

盡管您可以在軟件上定義管腳屬性,但默認情況下會分配管腳,如下圖所示(這是帶有36個管腳的ESP32 DEVKIT V1 DOIT板的示例-管腳位置可能會根據制造商而更改)。

 

此外,還有具有特定功能的管腳,使它們適合或不適合特定項目。下表顯示了哪些管腳最適合用作輸入和輸出,哪些管腳需要小心。

綠色突出顯示的管腳可以使用。黃色突出顯示的可以使用,但您需要注意,因為它們可能在啟動時有意外行為。不建議將紅色突出顯示的管腳用作輸入或輸出。

僅輸入的管腳

GPIO34到39是GPIs–僅輸入的管腳。這些引腳沒有內部上拉或下拉電阻。它們不能用作輸出,因此只能將這些管腳用作輸入:

GPIO 34

GPIO 35

GPIO 36

GPIO 39

集成在ESP-WROOM-32上的SPI閃存

GPIO 6到GPIO 11在一些ESP32開發板中是公開的。但是,這些引腳連接到ESP-WROOM-32芯片上的集成SPI閃存,不建議用於其他用途。所以,不要在項目中使用這些管腳:

GPIO 6(SCK/CLK)

GPIO 7(SDO/SD0)

GPIO 8(SDI/SD1)

GPIO 9(SHD/SD2)

GPIO 10(SWP/SD3)

GPIO 11(CSC/CMD)

電容式觸摸GPIO

ESP32有10個內部電容式觸摸傳感器。它們能感應到任何帶電物質的變化,比如人類皮膚。因此,他們可以檢測到當用手指觸摸gpio時引起的變化。這些引腳可以很容易地集成到電容墊,並取代機械按鈕。電容式觸針也可以用來喚醒ESP32的深度睡眠。

這些內部觸摸傳感器連接到這些GPIO:

T0 (GPIO 4)

T1 (GPIO 0)

T2 (GPIO 2)

T3 (GPIO 15)

T4 (GPIO 13)

T5 (GPIO 12)

T6 (GPIO 14)

T7 (GPIO 27)

T8 (GPIO 33)

T9 (GPIO 32)

模數轉換器(ADC)

ESP32有18 x 12位ADC輸入通道(而ESP8266只有1 x 10位ADC)。這些是可用作ADC和相應通道的GPIO:

ADC1_CH0 (GPIO 36)

ADC1_CH1 (GPIO 37)

ADC1_CH2 (GPIO 38)

ADC1_CH3 (GPIO 39)

ADC1_CH4 (GPIO 32)

ADC1_CH5 (GPIO 33)

ADC1_CH6 (GPIO 34)

ADC1_CH7 (GPIO 35)

ADC2_CH0 (GPIO 4)

ADC2_CH1 (GPIO 0)

ADC2_CH2 (GPIO 2)

ADC2_CH3 (GPIO 15)

ADC2_CH4 (GPIO 13)

ADC2_CH5 (GPIO 12)

ADC2_CH6 (GPIO 14)

ADC2_CH7 (GPIO 27)

ADC2_CH8 (GPIO 25)

ADC2_CH9 (GPIO 26)

注意:使用Wi-Fi時不能使用ADC2管腳。因此,如果您使用Wi-Fi,並且無法從ADC2 GPIO獲取值,則可以考慮改用ADC1 GPIO,這應該可以解決您的問題。

ADC輸入通道具有12位分辨率。這意味着您可以獲得0到4095之間的模擬讀數,其中0對應於0V,4095對應於3.3V。您還可以在代碼上設置通道的分辨率以及ADC范圍。

ESP32 ADC引腳沒有線性行為。您可能無法區分0和0.1V,或3.2和3.3V。在使用ADC引腳時,您需要記住這一點。您將得到類似於下圖所示的行為。

 

 

數模轉換器(DAC)

ESP32上有2 x 8位DAC通道,用於將數字信號轉換為模擬電壓信號輸出。這些是DAC通道:

DAC1 (GPIO25)

DAC2 (GPIO26)

RTC GPIOs

ESP32支持RTC GPIO。當ESP32處於深度睡眠狀態時,可以使用路由到RTC低功耗子系統的GPIO。這些RTC gpio可用於在超低功耗(ULP)協處理器運行時將ESP32從深度睡眠中喚醒。以下GPIO可以用作外部喚醒源。

RTC_GPIO0 (GPIO36)

RTC_GPIO3 (GPIO39)

RTC_GPIO4 (GPIO34)

RTC_GPIO5 (GPIO35)

RTC_GPIO6 (GPIO25)

RTC_GPIO7 (GPIO26)

RTC_GPIO8 (GPIO33)

RTC_GPIO9 (GPIO32)

RTC_GPIO10 (GPIO4)

RTC_GPIO11 (GPIO0)

RTC_GPIO12 (GPIO2)

RTC_GPIO13 (GPIO15)

RTC_GPIO14 (GPIO13)

RTC_GPIO15 (GPIO12)

RTC_GPIO16 (GPIO14)

RTC_GPIO17 (GPIO27)

脈沖寬度調制

ESP32 LED PWM控制器有16個獨立通道,可以配置為生成具有不同特性的PWM信號。所有可以作為輸出的管腳都可以用作PWM管腳(GPIOs 34到39不能產生PWM)。

要設置脈沖寬度調制信號,需要在代碼中定義這些參數:

信號頻率;

占空比;

脈寬調制通道;

要輸出信號的GPIO。

I2C

ESP32有兩個I2C通道,任何管腳都可以設置為SDA或SCL。將ESP32與Arduino IDE一起使用時,默認I2C引腳為:

GPIO 21(SDA)

GPIO 22(SCL)

如果要使用其他管腳,在使用導線庫時,只需調用:

Wire.begin(SDA, SCL);

SPI

默認情況下,SPI的pin映射為:

 

 

中斷

所有GPIO都可以配置為中斷。

Strapping pins

ESP32芯片具有以下Strapping pins:

GPIO 0

GPIO 2

GPIO 4

GPIO 5(啟動期間必須為高)

GPIO 12(啟動期間必須低)

GPIO 15(啟動期間必須為高)

這些用於將ESP32置於引導加載程序或燒錄模式。在大多數內置USB/Serial的開發板上,您不需要擔心這些管腳的狀態。電路板使引腳處於正確的燒錄或啟動模式。有關ESP32引導模式選擇的更多信息,請參見此處。

但是,如果你有外設連接到這些引腳,你可能會有困難,試圖上傳新的代碼,用新固件燒錄ESP32或重置板。如果您有一些外設連接到Strapping pins,並且您在上載代碼或燒錄ESP32時遇到問題,可能是因為這些外設阻止ESP32進入正確的模式。請閱讀引導模式選擇文檔以指導您朝正確的方向前進。復位、燒錄或啟動后,這些引腳按預期工作。

Pins HIGH at Boot

一些GPIO在啟動或重置時將其狀態更改為高或輸出PWM信號。這意味着,如果輸出連接到這些gpio,則在ESP32重置或引導時可能會得到意外的結果。

GPIO 1

GPIO 3

GPIO 5

GPIO 6 to GPIO 11 (connected to the ESP32 integrated SPI flash memory – not recommended to use).

GPIO 14

GPIO 15

啟用(EN)

啟用(EN)是3.3V調節器的啟用引腳。它被拉起來了,所以接地使3.3V調節器失效。例如,這意味着您可以使用連接到按鈕的該管腳來重新啟動ESP32。

GPIO電流消耗

根據ESP32數據表中的“推薦操作條件”部分,每個GPIO的絕對最大電流為40毫安。

ESP32內置霍爾效應傳感器

ESP32還具有內置霍爾效應傳感器,可檢測周圍磁場的變化。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM