อย่าลังเลที่จะเปิดปัญหาหรือประชาสัมพันธ์หากคุณมีคำแนะนำใด ๆ และถ้าคุณพบว่ามีประโยชน์คุณอาจต้องการเยี่ยมชมหนึ่งในลิงค์เหล่านี้:
ฉันมักจะใช้หน้า Nerds แบบสุ่มนี้เป็นข้อมูลอ้างอิงที่พิน ESP32 นั้นปลอดภัยในการใช้งาน
แต่ฉันไม่ได้เห็นสิ่งที่คล้ายกันสำหรับ ESP32 -S3 - ดังนั้นฉันคิดว่าฉันควรจะทำ!
ข้อมูลส่วนใหญ่นี้นำมาจากแผ่นข้อมูล ESP32-S3-Wroom พร้อมข้อมูลเพิ่มเติมจากแผ่นข้อมูล ESP32-S3
คุณสามารถดาวน์โหลดภาพ PDF ความละเอียดสูงได้ที่นี่
ภาพด้านบนเป็นโมดูล wroom ที่มีพินที่มีป้ายกำกับ BOLD หมายถึงพฤติกรรมเริ่มต้นของแต่ละพิน ฉันได้ชื่อพินที่ลึกลับมากขึ้น แต่คุณสามารถค้นหารายการทั้งหมดในแผ่นข้อมูลได้
มีความยืดหยุ่นมากขึ้นกับ ESP32-S3 ดังนั้นพินส่วนใหญ่สามารถใช้สำหรับอุปกรณ์ต่อพ่วงใด ๆ อย่างไรก็ตามยังมีหมุดบางตัวที่มีพฤติกรรมตลก
หลีกเลี่ยงสิ่งเหล่านี้เว้นแต่คุณจะไม่มีทางเลือก
ชื่อพิน | รายละเอียด |
---|---|
GPIO0 | ถือต่ำนี้ในระหว่างการบูตเพื่อเข้าสู่โหมดดาวน์โหลดเฟิร์มแวร์ |
GPIO3 | เมื่อรวมกับ efuses ควบคุมพฤติกรรมเริ่มต้นของหมุด JTAG ปลอดภัยที่จะใช้เว้นแต่คุณจะยุ่งกับ efuses |
gpio45 | VDD_SPI - ปล่อยให้ดีที่สุดทิ้งการเชื่อมต่อนี้ |
gpio46 | การพิมพ์ข้อความ ROM - ดีที่สุดที่จะทิ้งการเชื่อมต่อนี้ไว้เช่นกัน ทำให้เกิดปัญหาเกี่ยวกับการดาวน์โหลดเฟิร์มแวร์ (ดูตารางควบคุมโหมดบูตด้านล่าง) |
คุณสามารถใช้พินเหล่านี้เป็นอินพุตหรือเอาต์พุตเมื่อ ESP บูตแล้ว แต่ระวังตัวต้านทานแบบดึงขึ้น/ลง (ดูด้านล่าง)
หากคุณต้องการใช้เป็นอินพุตให้แน่ใจว่าคุณไม่ขัดแย้งกับการกำหนดค่าเริ่มต้นระหว่างการบูต
เช่นปลอดภัยที่จะเชื่อมต่อปุ่มกับ GPIO0 และใช้ปุ่มนั้นในรหัสของคุณ แต่ถ้าคุณกดปุ่มค้างไว้ในระหว่างการบูตมันจะเข้าสู่โหมดดาวน์โหลดเฟิร์มแวร์
หากคุณต้องการใช้เป็นเอาต์พุตให้ระวังการดึงค่าเริ่มต้นหรือดึงตัวต้านทานลง
โหมดบูต | GPIO0 | gpio46 |
---|---|---|
SPI boot (ค่าเริ่มต้น) | 1 | ค่าใด ๆ |
ดาวน์โหลดบูต | 0 | 0 |
การรวมกันไม่ถูกต้อง | 0 | 1 |
หมุดรัด | การกำหนดค่าเริ่มต้น | ค่าบิต |
---|---|---|
GPIO0 | การดึงขึ้น | 1 |
GPIO3 | ที่ลอยอยู่ | - |
gpio45 | การดึงลง | 0 |
gpio46 | การดึงลง | 0 |
สิ่งเหล่านี้สามารถใช้พิน GPIO ใด ๆ ใน ESP32-S3
GPIO19, GPIO20 - สิ่งเหล่านี้ใช้สำหรับการเชื่อมต่อ USB
สำหรับโมดูลที่มี Octal PSRAM (โมดูลใด ๆ ที่มี 8MB PSRAM) คุณ ต้องไม่ ใช้ GPIO35, GPIO36 หรือ GPIO37
GPIO39, GPIO40, GPIO41, GPIO42
พฤติกรรมของหมุดเหล่านี้ถูกกำหนดโดย efuses ร่วมกับ GPIO3 โดยค่าเริ่มต้นหากคุณยังไม่ได้เผา Efuses ใด ๆ พินเหล่านี้ปลอดภัยที่จะใช้ JTAG จะพร้อมใช้งานผ่าน USB
หากคุณต้องการใช้พินเหล่านี้สำหรับ JTAG คุณต้องเผา Efuses และควบคุม GPIO3 เมื่อเริ่มต้น ดูส่วนแผ่นข้อมูล 2.6.4 สำหรับรายละเอียดทั้งหมด
gpio43, gpio44
ค่าเริ่มต้นเหล่านี้เป็น UART0 จนกว่ารหัสของคุณจะถูกใช้
ช่อง ADC ทั้งหมดอยู่ในพินคงที่และหากคุณใช้ WiFi คุณไม่สามารถใช้ ADC UNIT 2
พินสำหรับ ADC Unit 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 |
ไม่มี DAC ใน 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 ที่นี่
หากคุณเห็นความผิดพลาดของ Power Up บนหมุดบางอย่างเมื่อ Runnning "ของคุณ" แต่ไม่ใช่เมื่อใช้งาน 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 หรือ A +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 และ pinouts ของพวกเขา
ชื่อพิน | หมายเลขพิน | พิมพ์ | คำอธิบาย |
---|---|---|---|
gnd | 1,40 | P | gnd |
ปีที่ผ่านมา | 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, 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 |
สำหรับผู้ที่ชอบเนื้อหาวิดีโอ - คุณสามารถดูวิดีโอเวอร์ชันได้ที่นี่: