لا تتردد في فتح مشكلة أو علاقات عامة إذا كان لديك أي اقتراحات. وإذا وجدت أنه مفيد ، فقد ترغب في زيارة أحد هذه الروابط:
لقد استخدمت دائمًا صفحة المهووسين العشوائيين هذه كمرجع تكون دبابيس ESP32 آمنة للاستخدام.
لكنني لم أر واحدة مماثلة لـ ESP32 -S3 - لذلك اعتقدت أنني يجب أن أصنع واحدة!
غالبية هذه المعلومات مأخوذة من ورقة بيانات ESP32-S3-WORK مع معلومات إضافية من ورقة بيانات ESP32-S3.
يمكنك تنزيل إصدار PDF عالي الدقة من هذه الصورة هنا.
الصورة أعلاه عبارة عن وحدة مصنوعة من دبابيس مع دبابيس. 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.
بالنسبة للوحدات النمطية التي تتضمن PSRAM Octal (أي وحدة تحتوي على 8 ميجابايت 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 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 |
لا يوجد 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 هنا
إذا رأيت مواطن الخلل في بعض المسامير عند تشغيل برنامج "الخاص بك" ، ولكن ليس عند تشغيل عالم Hello Simple ، فقد يكون هذا خطأً شائعًا:
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 و pinouts.
اسم الدبوس | رقم PIN | يكتب | وصف |
---|---|---|---|
GND | 140 | ص | GND |
epad | 41 | ص | GND |
3v3 | 2 | ص | مزود الطاقة |
en | 3 | أنا | عالية: على ، تمكين الشريحة. منخفض: OFF ، القوى الشريحة قبالة. ملاحظة: لا تترك الدبوس العائم. |
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 ، SUBCTINGLK |
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 ، subpid |
GPIO36 | 29 | i/o/t | spiio7 ، gpio36 ، fspiclk ، subcticlk |
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 ، subciclk_p_diff |
GPIO48 | 25 | i/o/t | spiclk_n_diff ، gpio48 ، subciclk_n_diff |
للأشخاص الذين يفضلون محتوى الفيديو - يمكنك مشاهدة إصدار فيديو هنا: