제안이 있으면 문제 나 PR을 자유롭게 열어주십시오. 도움이된다면이 링크 중 하나를 방문하고 싶을 수도 있습니다.
나는 항상이 임의의 멍청한 페이지를 ESP32 핀을 안전하게 사용하는 참조로 사용했습니다.
그러나 나는 ESP32 -S3에서 비슷한 것을 보지 못했습니다. 그래서 나는 하나를 만들어야한다고 생각했습니다!
이 정보의 대부분은 ESP32-S3 데이터 시트의 추가 정보와 함께 ESP32-S3-Wroom 데이터 시트에서 가져온 것입니다.
이 이미지의 고해상도 PDF 버전을 여기에서 다운로드 할 수 있습니다.
위의 이미지는 핀이 표시된 Wroom 모듈입니다. BOLD는 각 핀의 기본 동작을 나타냅니다. 더 난해한 핀 이름 중 일부를 수행했지만 데이터 시트에서 전체 목록을 찾을 수 있습니다.
ESP32-S3에는 훨씬 더 유연성이 있으므로 대부분의 핀은 모든 주변 장치에 사용할 수 있습니다. 그러나 여전히 재미있는 행동을 가진 핀이 여전히 있습니다.
선택의 여지가 없다면 피하십시오.
핀 이름 | 세부 |
---|---|
GPIO0 | 펌웨어 다운로드 모드를 입력하려면 부팅 중에이 낮게 유지하십시오. |
GPIO3 | EFUS와 함께 JTAG 핀의 기본 동작을 제어합니다. efus를 엉망으로 만들지 않는 한 사용하기에 안전합니다 |
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 연결에 사용됩니다.
Octal PSRAM (8MB PSRAM이있는 모든 모듈)이 포함 된 모듈의 경우 GPIO35, GPIO36 또는 GPIO37을 사용해서는 안됩니다 .
GPIO39, GPIO40, GPIO41, GPIO42
이들 핀의 거동은 GPIO3과 함께 EFUS에 의해 결정된다. 기본적으로, 아직 efus를 태우지 않은 경우,이 핀은 안전합니다. JTAG는 USB에서 사용할 수 있습니다.
JTAG 에이 핀을 사용하려면 일부 efus를 태우고 시작시 GPIO3을 제어해야합니다. 자세한 내용은 데이터 시트 섹션 2.6.4를 참조하십시오.
GPIO43, GPIO44
이 기본값은 코드에서 사용될 때까지 UART0으로 기본값입니다.
ADC 채널은 모두 고정 핀에 있으며 Wi -Fi를 사용하는 경우 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, GPIO8, GPIO9, GPIO10, GPIO11, GPIO12, GPIO13, GPIO14, GPIO15, GPIO16, 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
핀이 기본적으로 +3.3V 또는 A +1.8V 전원 도메인에 연결된 경우가 있습니다. 예는 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 );
}
Mark Nowell은 ESP32-S3 모듈 목록과 핀아웃 목록과 함께 제공되는 정말 편리한 스프레드 시트가 있습니다.
핀 이름 | 핀 번호 | 유형 | 설명 |
---|---|---|---|
Gnd | 1,40 | 피 | Gnd |
EPAD | 41 | 피 | Gnd |
3v3 | 2 | 피 | 전원 공급 장치 |
en | 3 | 나 | High : ON, 칩을 활성화합니다. LOW : OFF, 칩은 꺼져 있습니다. 참고 : EN 핀을 떠나지 마십시오. |
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 , 터치5, 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 |
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 , subspiclk_p_diff |
GPIO48 | 25 | I/O/T | spiclk_n_diff, gpio48 , subspiclk_n_diff |
비디오 컨텐츠를 선호하는 사람들의 경우 여기에서 비디오 버전을 볼 수 있습니다.