Не стесняйтесь открывать проблему или PR, если у вас есть какие -либо предложения. И если вы нашли это полезным, то вы можете посетить одну из этих ссылок:
Я всегда использовал эту страницу случайных ботаников в качестве ссылки, для которой контакты ESP32 безопасны в использовании.
Но я не видел подобного для ESP32 -S3 - поэтому я подумал, что должен сделать его!
Большая часть этой информации взята из таблицы данных ESP32-S3-Sroom с дополнительной информацией из таблицы DataShing ESP32-S3.
Вы можете скачать версию PDF с высоким разрешением этого изображения здесь.
Приведенное выше изображение представляет собой модуль шрифта с маркированными булавками. Жирный жирный собой указывает на поведение по умолчанию каждого вывода. Я получил некоторые из более эзотерических имен пин, но вы можете найти полный список в таблице данных.
С ESP32-S3 гораздо больше гибкости, поэтому большинство контактов можно использовать для любого периферийного устройства. Однако есть еще несколько булавок, которые имеют забавное поведение.
Избегайте этого, если у вас нет выбора.
Название вывода | Подробности |
---|---|
GPIO0 | Удерживайте это минимум во время загрузки, чтобы ввести режим загрузки прошивки. |
GPIO3 | В сочетании с эфусами контролирует поведение по умолчанию штифтов JTAG. Безопасно использовать, если вы не связываетесь с эфусами |
GPIO45 | VDD_SPI - Лучше всего оставить это отключенное |
GPIO46 | Печать сообщений ПЗУ - Лучше всего оставить это отключенным. Вызывает проблемы с загрузкой прошивки (см. Таблицу управления режимами загрузки ниже) |
Вы можете использовать эти контакты в качестве входов или выходов после загрузки ESP. Но будьте в курсе резисторов по тяге вверх/вниз (см. Ниже).
Если вы хотите использовать их в качестве входных данных, убедитесь, что вы не конфликтуете с конфигурациями по умолчанию во время загрузки.
Например, безопасно иметь кнопку, подключенную к GPIO0, и использовать эту кнопку в вашем коде. Но если вы удерживаете кнопку вниз во время загрузки, она введет режим загрузки прошивки.
Если вы хотите использовать их в качестве выходов, имейте в виду по умолчанию подтягивание или вытягивание резисторов.
Режим загрузки | GPIO0 | GPIO46 |
---|---|---|
SPI Boot (по умолчанию) | 1 | Любое значение |
Скачать загрузку | 0 | 0 |
Неверная комбинация | 0 | 1 |
Устремленный штифт | Конфигурация по умолчанию | Битовое значение |
---|---|---|
GPIO0 | Остановить | 1 |
GPIO3 | Плавающий | - |
GPIO45 | Выпадает | 0 |
GPIO46 | Выпадает | 0 |
Они могут использовать любые булавки GPIO на ESP32-S3.
GPIO19, GPIO20 - Они оба используются для USB -соединения.
Для модулей, которые включают восьмиугольный PSRAM (любой модуль, который имеет 8 МБ PSRAM), вы не должны использовать GPIO35, GPIO36 или GPIO37.
GPIO39, GPIO40, GPIO41, GPIO42
Поведение этих контактов определяется эфусами в сочетании с GPIO3. По умолчанию, если вы еще не сжигали никаких эфусов, эти булавки безопасны для использования. JTAG будет доступен по USB.
Если вы хотите использовать эти булавки для JTAG, вы должны сжечь некоторые эфусы и контролировать GPIO3 при запуске. См. Раздел DataShipe DataShip 2.6.4 для получения полной информации.
GPIO43, GPIO44
Это по умолчанию в UART0, пока они не будут использоваться вашим кодом.
Каналы ADC все на фиксированных булавках, и если вы используете Wi -Fi, вы не можете использовать ADC Unit 2
Булавки для ADC Unit 1:
Номер GPIO | АЦП -канал |
---|---|
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 нет ЦАП - вы можете смоделировать аналоговый выход, используя PWM или I2S PDM.
Следующие булавки имеют глюки во время мощности.
GPIO1, GPIO2, GPIO3, GPIO4, GPIO5, GPIO6, GPIO7, GPIO8, GPIO9, GPIO10, GPIO11, GPIO12, GPIO13, GPIO14, GPIO15, GPIO16, GPIO17:
GPIO18:
GPIO19, GPIO20:
Смотрите Таблицу 2-2 здесь
Если вы видите сбои с питанием на некоторых булавках при запуске «вашего» программного обеспечения, но не при запуске простого мира Hello, то это может быть распространенной ошибкой:
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.33 В или +1,8 В. Примерами являются GPIO20 (D+) или GPIO48.
Вы можете выключить их на очень ранней стадии в загрузке:
Смотрите здесь
Например, следующий код:
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 );
}
Здесь есть действительно удобная электронная таблица, предоставленная Марком Новеллом, со списками модулей ESP32-S3 и их разгонями.
Название вывода | PIN -код | Тип | Описание |
---|---|---|---|
Гнездо | 140 | П | Гнездо |
Эвад | 41 | П | Гнездо |
3V3 | 2 | П | Источник питания |
Поступка | 3 | я | Высокий: включает чип. Низкий: Выключен, чип выключает. Примечание: не оставляйте пин -кольцо плавающим. |
GPIO0 | 27 | Ввод/т/т | RTC_GPIO0, GPIO0 |
GPIO1 | 39 | Ввод/т/т | RTC_GPIO1, GPIO1 , Touch1, ADC1_CH0 |
GPIO2 | 38 | Ввод/т/т | Rtc_gpio2, gpio2 , touch2, adc1_ch1 |
GPIO3 | 15 | Ввод/т/т | Rtc_gpio3, gpio3 , touch3, adc1_ch2 |
GPIO4 | 4 | Ввод/т/т | RTC_GPIO4, GPIO4 , Touch4, ADC1_CH3 |
GPIO5 | 5 | Ввод/т/т | Rtc_gpio5, gpio5 , touch5, adc1_ch4 |
GPIO6 | 6 | Ввод/т/т | Rtc_gpio6, gpio6 , touch6, adc1_ch5 |
GPIO7 | 7 | Ввод/т/т | Rtc_gpio7, gpio7 , touch7, adc1_ch6 |
GPIO8 | 12 | Ввод/т/т | Rtc_gpio8, gpio8 , touch8, adc1_ch7, subspics1 |
GPIO9 | 17 | Ввод/т/т | Rtc_gpio9, gpio9 , touch9, adc1_ch8, fspihd, subspihd |
GPIO10 | 18 | Ввод/т/т | RTC_GPIO10, GPIO10 , Touch10, ADC1_CH9, FSPICS0, FSPIIO4, Subspics0 |
GPIO11 | 19 | Ввод/т/т | RTC_GPIO11, GPIO11 , Touch11, ADC2_CH0, FSPID, FSPIIO5, Subspid |
GPIO12 | 20 | Ввод/т/т | Rtc_gpio12, gpio12 , touch12, adc2_ch1, fspiclk, fspiio6, subspiclk |
GPIO13 | 21 | Ввод/т/т | Rtc_gpio13, gpio13 , touch13, adc2_ch2, fspiq, fspiio7, subspiq |
GPIO14 | 22 | Ввод/т/т | RTC_GPIO14, GPIO14 , Touch14, ADC2_CH3, FSPIWP, FSPIDQS, subspiWP |
GPIO15 | 8 | Ввод/т/т | RTC_GPIO15, GPIO15 , U0RTS, ADC2_CH4, XTAL_32K_P |
GPIO16 | 9 | Ввод/т/т | RTC_GPIO16, GPIO16 , U0CTS, ADC2_CH5, XTAL_32K_N |
GPIO17 | 10 | Ввод/т/т | RTC_GPIO17, GPIO17 , U1TXD, ADC2_CH6 |
GPIO18 | 11 | Ввод/т/т | RTC_GPIO18, GPIO18 , U1RXD, ADC2_CH7, CLK_OUT3 |
Usb_d- | 13 | Ввод/т/т | RTC_GPIO19, GPIO19, U1RTS, ADC2_CH8, CLK_OUT2, USB_D- |
Usb_d+ | 14 | Ввод/т/т | RTC_GPIO20, GPIO20, U1CTS, ADC2_CH9, CLK_OUT1, USB_D+ |
GPIO21 | 23 | Ввод/т/т | RTC_GPIO21, GPIO21 |
Sppics1 | Ввод/т/т | Sppics1, GPIO26 | |
GPIO33 | Ввод/т/т | GPIO33 | |
GPIO34 | Ввод/т/т | GPIO33 | |
GPIO35 | 28 | Ввод/т/т | Spiio6, gpio35 , fspid, subspid |
GPIO36 | 29 | Ввод/т/т | Spiio7, gpio36 , fspiclk, subspiclk |
GPIO37 | 30 | Ввод/т/т | SPIDQS, GPIO37 , FSPIQ, Subspiq |
GPIO38 | 31 | I/O/T. | Gpio38 , fspiwp, subspiwp |
Mtck | 32 | Ввод/т/т | MTCK , GPIO39, CLK_OUT3, Subspics1 |
Mtdo | 33 | Ввод/т/т | Mtdo , gpio40, clk_out2 |
Mtdi | 34 | Ввод/т/т | Mtdi , gpio41, clk_out1 |
MTMS | 35 | Ввод/т/т | MTMS , GPIO42 |
U0TXD | 37 | Ввод/т/т | U0TXD , GPIO43, CLK_OUT1 |
U0rxd | 36 | Ввод/т/т | U0rxd , gpio44, clk_out2 |
GPIO45 | 26 | Ввод/т/т | GPIO45 |
GPIO46 | 16 | Ввод/т/т | GPIO46 |
GPIO47 | 24 | Ввод/т/т | Spiclk_p_diff, gpio47 , subspiclk_p_diff |
GPIO48 | 25 | Ввод/т/т | Spiclk_n_diff, gpio48 , subspiclk_n_diff |
Для людей, которые предпочитают видеоконтент - вы можете посмотреть видео -версию здесь: