如果您有任何建議,請隨時打開問題或公關。如果您發現它有用,那麼您可能想訪問以下鏈接之一:
我一直將此隨機的書呆子頁面用作可安全使用的ESP32引腳的參考。
但是我還沒有看到ESP32 -S3的類似產品 - 所以我想我應該做一個!
這些信息的大部分來自ESP32-S3-wroom數據表,其中包含來自ESP32-S3數據表的其他信息。
您可以在此處下載此圖像的高分辨率PDF版本。
以上圖像是帶有標記的銷釘的WROOM模塊。粗體表示每個PIN的默認行為。我已經介紹了一些更深奧的別針名稱,但是您可以在數據表中找到完整列表。
ESP32-S3具有更大的靈活性,因此大多數銷釘都可以用於任何外圍。但是,仍然有一些引腳具有有趣的行為。
除非您別無選擇,否則避免使用。
引腳名稱 | 細節 |
---|---|
GPIO0 | 在啟動期間保持此低點以輸入固件下載模式。 |
GPIO3 | 結合函料控制JTAG引腳的默認行為。除非您與Efuses混在一起,否則安全使用 |
GPIO45 | VDD_SPI-最好離開此斷開連接 |
GPIO46 | ROM消息打印 - 最好也離開此斷開連接。引起固件下載的問題(請參閱下面的啟動模式控製表) |
ESP啟動後,您可以將這些引腳用作輸入或輸出。但是請注意上拉/下電阻器(見下文)。
如果要將它們用作輸入,請確保與引導過程中的默認配置不衝突。
例如,將按鈕連接到GPIO0並在代碼中使用該按鈕是安全的。但是,如果您在啟動過程中按下按鈕,它將輸入固件下載模式。
如果要將它們用作輸出,請注意默認的拉上下電阻器。
引導模式 | GPIO0 | GPIO46 |
---|---|---|
SPI引導(默認) | 1 | 任何值 |
下載引導 | 0 | 0 |
無效的組合 | 0 | 1 |
綁帶銷 | 默認配置 | 位價值 |
---|---|---|
GPIO0 | 上拉 | 1 |
GPIO3 | 漂浮的 | - |
GPIO45 | 下拉 | 0 |
GPIO46 | 下拉 | 0 |
這些可以在ESP32-S3上使用任何GPIO引腳。
GPIO19,GPIO20-這些都用於USB連接。
對於包括八倍PSRAM(具有8MB PSRAM的任何模塊)的模塊,您不得使用GPIO35,GPIO36或GPIO37。
GPIO39,GPIO40,GPIO41,GPIO42
這些引腳的行為是由efuss與gpio3結合使用的。默認情況下,如果您尚未燃燒任何fuses,這些引腳是安全使用的。 JTAG將通過USB提供。
如果您想將這些引腳用於JTAG,則必須燃燒一些函數,並在啟動時控制GPIO3。有關完整的詳細信息,請參見數據表第2.6.4節。
GPIO43,GPIO44
這些默認為UART0,直到您的代碼使用它們為止。
ADC頻道都在固定引腳上,如果您使用的是WiFi,則不能使用ADC Unit 2
ADC 1單元的引腳是:
GPIO編號 | ADC頻道 |
---|---|
GPIO1 | ADC1_CH0 |
GPIO2 | ADC1_CH1 |
GPIO3 | ADC1_CH2 |
GPIO4 | ADC1_CH3 |
GPIO5 | ADC1_CH4 |
GPIO6 | ADC1_CH5 |
GPIO7 | ADC1_CH6 |
GPIO8 | ADC1_CH7 |
GPIO9 | ADC1_CH8 |
ESP32 -S3上沒有DAC-您可以使用PWM或I2S PDM模擬模擬輸出。
在電源時,以下引腳有故障。
GPIO1,GPIO2,GPIO3,GPIO4,GPIO5,GPIO6,GPIO7,GPIO7,GPIO8,GPIO9,GPIO9,GPIO10,GPIO10,GPIO11,GPIO11,GPIO12,GPIO13,GPIO14,GPIO14,GPIO14,GPIO15,GPIO15,GPIO16,GPIO16,GPIO17: GPIO17:GPIO17:GPIO17:GPIO17:GPIO17:GPIO17:GPIO17:GPIO17:GPIO17:GPIO17:GPIO17:
GPIO18:
GPIO19,GPIO20:
請參閱此處的表2-2
如果您在運行“您的”軟件時會在某些引腳上看到電源的故障,但是在運行一個簡單的Hello World時不會,這可能是一個常見的錯誤:
gpio_reset_pin ( RELAY1_SC );
gpio_set_direction ( RELAY1_SC , GPIO_MODE_OUTPUT );
可以在此處找到此語法:blink_example_main.c
而是使用此語法:
//zero-initialize the config structure.
gpio_config_t io_conf = {};
//disable interrupt
io_conf . intr_type = GPIO_INTR_DISABLE ;
//set as output mode
io_conf . mode = GPIO_MODE_OUTPUT ;
//bit mask of the pins that you want to set,e.g.GPIO18/19
io_conf . pin_bit_mask = ( 1ULL << RELAY1_SC );
//disable pull-down mode
io_conf . pull_down_en = 0 ;
//disable pull-up mode
io_conf . pull_up_en = 0 ;
//configure GPIO with the given settings
gpio_config ( & io_conf );
可以在此處找到此語法:gpio_example_main.c
在某些情況下,PIN默認情況下連接到 +3.3V或 +1.8V功率域。示例是GPIO20(D+)或GPIO48。
您可以在Bootloader的早期階段關閉它們:
請參閱此處
使用以下代碼:
void bootloader_before_init ( void ) {
/* Keep in my mind that a lot of functions cannot be called from here
* as system initialization has not been performed yet, including
* BSS, SPI flash, or memory protection. */
ESP_LOGI ( "HOOK" , "This hook is called BEFORE bootloader initialization" );
gpio_hal_iomux_func_sel ( GPIO_PIN_MUX_REG [ GPIO_NUM_20 ], PIN_FUNC_GPIO );
esp_rom_gpio_pad_select_gpio ( GPIO_NUM_48 );
gpio_ll_output_enable ( & GPIO , GPIO_NUM_48 );
gpio_ll_set_level ( & GPIO , GPIO_NUM_48 , 0 );
}
馬克·諾維爾(Mark Nowell)提供了一個非常方便的電子表格,其中包含ESP32-S3模塊的列表及其引腳。
引腳名稱 | 引腳號 | 類型 | 描述 |
---|---|---|---|
gnd | 1,40 | p | gnd |
epad | 41 | p | gnd |
3v3 | 2 | p | 電源 |
en | 3 | 我 | 高:開啟,啟用芯片。低:關閉,芯片能力關閉。注意:請勿將EN PIN浮動。 |
GPIO0 | 27 | i/o/t | RTC_GPIO0, GPIO0 |
GPIO1 | 39 | i/o/t | rtc_gpio1, gpio1 ,touch1,adc1_ch0 |
GPIO2 | 38 | i/o/t | rtc_gpio2, gpio2 ,touch2,adc1_ch1 |
GPIO3 | 15 | i/o/t | rtc_gpio3, gpio3 ,touch3,adc1_ch2 |
GPIO4 | 4 | i/o/t | rtc_gpio4, gpio4 ,touch4,adc1_ch3 |
GPIO5 | 5 | i/o/t | rtc_gpio5, gpio5 ,touch5,adc1_ch4 |
GPIO6 | 6 | i/o/t | rtc_gpio6, gpio6 ,touch6,adc1_ch5 |
GPIO7 | 7 | i/o/t | rtc_gpio7, gpio7 ,touch7,adc1_ch6 |
GPIO8 | 12 | i/o/t | rtc_gpio8, gpio8 ,touch8,adc1_ch7,subpics1 |
GPIO9 | 17 | i/o/t | RTC_GPIO9, GPIO9 ,Touch9,ADC1_CH8,FSPIHD,subpihd |
GPIO10 | 18 | i/o/t | RTC_GPIO10, GPIO10 ,Touch10,ADC1_CH9,FSPICS0,FSPIIO4,subpics0 |
GPIO11 | 19 | i/o/t | rtc_gpio11, gpio11 ,touch11,adc2_ch0,fspid,fspiio5,subpid |
GPIO12 | 20 | i/o/t | rtc_gpio12, gpio12 ,touch12,adc2_ch1,fspiclk,fspiio6,subpiclk |
GPIO13 | 21 | i/o/t | rtc_gpio13, gpio13 ,touch13,adc2_ch2,fspiq,fspiio7,subpiq |
GPIO14 | 22 | i/o/t | RTC_GPIO14, GPIO14 ,Touch14,ADC2_CH3,FSPIWP,FSPIDQS,subpiwp |
GPIO15 | 8 | i/o/t | RTC_GPIO15, GPIO15 ,U0RTS,ADC2_CH4,XTAL_32K_P |
GPIO16 | 9 | i/o/t | RTC_GPIO16, GPIO16 ,U0CTS,ADC2_CH5,XTAL_32K_N |
GPIO17 | 10 | i/o/t | RTC_GPIO17, GPIO17 ,U1TXD,ADC2_CH6 |
GPIO18 | 11 | i/o/t | rtc_gpio18, gpio18 ,u1rxd,adc2_ch7,clk_out3 |
USB_D- | 13 | i/o/t | RTC_GPIO19,GPIO19,U1RTS,ADC2_CH8,CLK_OUT2, USB_D- |
USB_D+ | 14 | i/o/t | RTC_GPIO20,GPIO20,U1CTS,ADC2_CH9,CLK_OUT1, USB_D+ |
GPIO21 | 23 | i/o/t | RTC_GPIO21, GPIO21 |
SPICS1 | i/o/t | SPICS1, GPIO26 | |
GPIO33 | i/o/t | GPIO33 | |
GPIO34 | i/o/t | GPIO33 | |
GPIO35 | 28 | i/o/t | SPIIO6, GPIO35 ,FSPID,subpid |
GPIO36 | 29 | i/o/t | SPIIO7, GPIO36 ,FSPICLK,subpiclk |
GPIO37 | 30 | i/o/t | Spidqs, GPIO37 ,FSPIQ,subpiq |
GPIO38 | 31 | i/o/t | GPIO38 ,FSPIWP,subpiWP |
mtck | 32 | i/o/t | mtck ,gpio39,clk_out3,subpics1 |
mtdo | 33 | i/o/t | mtdo ,gpio40,clk_out2 |
mtdi | 34 | i/o/t | mtdi ,gpio41,clk_out1 |
mtms | 35 | i/o/t | MTMS ,GPIO42 |
U0TXD | 37 | i/o/t | U0TXD ,gpio43,clk_out1 |
U0RXD | 36 | i/o/t | u0rxd ,gpio44,clk_out2 |
GPIO45 | 26 | i/o/t | GPIO45 |
GPIO46 | 16 | i/o/t | GPIO46 |
GPIO47 | 24 | i/o/t | spiclk_p_diff, gpio47 ,subpiclk_p_diff |
GPIO48 | 25 | i/o/t | spiclk_n_diff, gpio48 ,subpiclk_n_diff |
對於喜歡視頻內容的人 - 您可以在此處觀看視頻版本: