Jangan ragu untuk membuka masalah atau PR jika Anda memiliki saran. Dan jika Anda merasa terbantu maka Anda mungkin ingin mengunjungi salah satu tautan ini:
Saya selalu menggunakan halaman kutu buku acak ini sebagai referensi yang pin ESP32 aman digunakan.
Tapi saya belum melihat yang serupa untuk ESP32 -S3 - jadi saya pikir saya harus membuatnya!
Mayoritas informasi ini diambil dari lembar data ESP32-S3-Wroom dengan informasi tambahan dari lembar data ESP32-S3.
Anda dapat mengunduh versi PDF resolusi tinggi dari gambar ini di sini.
Gambar di atas adalah modul Wroom dengan pin berlabel. Bold menunjukkan perilaku default dari setiap pin. Saya telah membuat beberapa nama pin esoterik yang lebih esoteris, tetapi Anda dapat menemukan daftar lengkapnya di lembar data.
Ada lebih banyak fleksibilitas dengan ESP32-S3, sehingga sebagian besar pin dapat digunakan untuk setiap periferal. Namun masih ada beberapa pin yang memiliki perilaku lucu.
Hindari ini kecuali Anda tidak punya pilihan.
Nama pin | Detail |
---|---|
Gpio0 | Tahan ini rendah selama boot untuk memasuki mode unduhan firmware. |
Gpio3 | Dalam kombinasi dengan EFUS mengontrol perilaku default pin JTAG. Aman digunakan kecuali Anda mengacaukan efek |
GPIO45 | VDD_SPI - BESS Biarkan ini terputus ini |
GPIO46 | Pesan ROM Pencetakan - Terbaik untuk membuat ini terputus juga. Penyebab masalah dengan firmware unduh (lihat tabel kontrol mode boot di bawah) |
Anda dapat menggunakan pin ini sebagai input atau output setelah ESP boot. Tetapi waspadai resistor pull up/down (lihat di bawah).
Jika Anda ingin menggunakannya sebagai input, pastikan Anda tidak bertentangan dengan konfigurasi default selama boot.
misalnya aman untuk memiliki tombol yang terhubung ke GPIO0 dan menggunakan tombol itu di kode Anda. Tetapi jika Anda menahan tombol selama boot, itu akan memasuki mode unduhan firmware.
Jika Anda ingin menggunakannya sebagai output, maka waspadai penarikan default atau tarik ke bawah resistor.
Mode boot | Gpio0 | GPIO46 |
---|---|---|
SPI Boot (default) | 1 | Nilai apapun |
Unduh boot | 0 | 0 |
Kombinasi tidak valid | 0 | 1 |
Pin pengikat | Konfigurasi default | Nilai bit |
---|---|---|
Gpio0 | Pull-up | 1 |
Gpio3 | Mengapung | - - |
GPIO45 | Tarik ke bawah | 0 |
GPIO46 | Tarik ke bawah | 0 |
Ini dapat menggunakan pin GPIO apa pun di ESP32-S3.
GPIO19, GPIO20 - Keduanya digunakan untuk koneksi USB.
Untuk modul yang mencakup PSRAM octal (modul apa pun yang memiliki 8MB PSRAM) Anda tidak boleh menggunakan GPIO35, GPIO36 atau GPIO37.
GPIO39, GPIO40, GPIO41, GPIO42
Perilaku pin ini ditentukan oleh Efus dalam hubungannya dengan GPIO3. Secara default, jika Anda belum membakar efek apa pun, pin ini aman untuk digunakan. JTAG akan tersedia melalui USB.
Jika Anda ingin menggunakan pin ini untuk JTAG, Anda harus membakar beberapa efus, dan mengontrol GPIO3 saat memulai. Lihat bagian DataSheet 2.6.4 untuk detail lengkap.
GPIO43, GPIO44
Ini default ke UART0 sampai digunakan oleh kode Anda.
Saluran ADC semuanya ada di pin tetap, dan jika Anda menggunakan WiFi, Anda tidak dapat menggunakan ADC Unit 2
Pin untuk ADC Unit 1 adalah:
Nomor GPIO | Saluran 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 |
Tidak ada DAC pada ESP32 -S3 - Anda dapat mensimulasikan output analog menggunakan PWM atau I2S PDM.
Pin berikut memiliki gangguan selama listrik.
GPIO1, GPIO2, GPIO3, GPIO4, GPIO5, GPIO6, GPIO7, GPIO8, GPIO9, GPIO10, GPIO11, GPIO12, GPIO13, GPIO14, GPIO15, GPIO16, GPIO17:
GPIO18:
Gpio19, gpio20:
Lihat Tabel-2-2 di sini
Jika Anda melihat gangguan pada beberapa pin saat menjalankan perangkat lunak "Anda", tetapi tidak saat menjalankan Hello World sederhana, maka ini mungkin kesalahan umum:
gpio_reset_pin ( RELAY1_SC );
gpio_set_direction ( RELAY1_SC , GPIO_MODE_OUTPUT );
Sintaks ini dapat ditemukan misalnya: Blink_example_main.c
Alih -alih gunakan sintaks ini:
//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 );
Sintaks ini dapat ditemukan misalnya di sini: gpio_example_main.c
Ada kasus di mana pin secara default terhubung ke +3.3V atau domain daya +1.8V. Contohnya adalah GPIO20 (D+) atau GPIO48.
Anda dapat mematikannya pada tahap yang sangat awal di bootloader:
Lihat di sini
dengan misalnya kode berikut:
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 );
}
Ada spreadsheet yang sangat berguna di sini yang disediakan oleh Mark Nowell dengan daftar modul ESP32-S3 dan pinout mereka.
Nama pin | Nomor pin | Jenis | Keterangan |
---|---|---|---|
Gnd | 1,40 | P | Gnd |
Epad | 41 | P | Gnd |
3v3 | 2 | P | Catu daya |
En | 3 | SAYA | Tinggi: ON, memungkinkan chip. Rendah: Mati, chip mematikan. Catatan: Jangan biarkan pin en mengapung. |
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, subspics1 |
Gpio9 | 17 | I/o/t | Rtc_gpio9, gpio9 , touch9, adc1_ch8, fspihd, subspihd |
GPIO10 | 18 | I/o/t | RTC_GPIO10, GPIO10 , Touch10, ADC1_CH9, FSPICS0, FSPIIO4, Subspics0 |
Gpio11 | 19 | I/o/t | RTC_GPIO11, GPIO11 , Touch11, ADC2_CH0, FSPID, FSPIIO5, subspid |
GPIO12 | 20 | I/o/t | RTC_GPIO12, GPIO12 , Touch12, ADC2_CH1, FSPICLK, FSPIIO6, SubspICLK |
GPIO13 | 21 | I/o/t | RTC_GPIO13, GPIO13 , Touch13, ADC2_CH2, FSPIQ, FSPIIO7, subspiq |
GPIO14 | 22 | I/o/t | Rtc_gpio14, gpio14 , touch14, adc2_ch3, fspiwp, fspidqs, subspiwp |
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, subspid |
GPIO36 | 29 | I/o/t | SPIIO7, GPIO36 , FSPICLK, SubspICLK |
GPIO37 | 30 | I/o/t | SPIDQS, GPIO37 , FSPIQ, subspiq |
GPIO38 | 31 | I/o/t | GPIO38 , FSPIWP, subspiwp |
Mtck | 32 | I/o/t | MTCK , GPIO39, CLK_OUT3, SUBSPICS1 |
Mtdo | 33 | I/o/t | Mtdo , gpio40, clk_out2 |
Mtdi | 34 | I/o/t | Mtdi , gpio41, clk_out1 |
MTM | 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 , SubsPICLK_P_DIFF |
GPIO48 | 25 | I/o/t | SPICLK_N_DIFF, GPIO48 , SubsPICLK_N_DIFF |
Untuk orang yang lebih suka konten video - Anda dapat menonton versi video di sini: