提案がある場合は、問題やPRを自由に開いてください。そして、あなたがそれを役立つと思ったなら、あなたはこれらのリンクのいずれかにアクセスしたいかもしれません:
ESP32ピンが安全に使用できるリファレンスとして、このランダムオタクページを常に使用しています。
しかし、私はESP32 -S3に似たものを見たことがないので、それを作るべきだと思いました!
この情報の大部分は、ESP32-S3データシートからの追加情報を使用して、ESP32-S3-wroomデータシートから取得されています。
この画像の高解像度PDFバージョンをこちらからダウンロードできます。
上記の画像は、ラベルが付いたピンを備えたwroomモジュールです。太字は、各ピンのデフォルトの動作を示します。より難解なピン名のいくつかをいくつか紹介しましたが、データシートに完全なリストを見つけることができます。
ESP32-S3にははるかに柔軟性があるため、ほとんどのピンは周辺に使用できます。しかし、面白い行動を持ついくつかのピンがまだあります。
選択肢がない限り、これらを避けてください。
ピン名 | 詳細 |
---|---|
GPIO0 | ブート中にこの低い保持して、ファームウェアのダウンロードモードを入力します。 |
GPIO3 | EFUSEと組み合わせて、JTAGピンのデフォルト動作を制御します。あなたがefusesをいじっていない限り、安全に使用できます |
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チャネルはすべて固定ピン上にあり、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 |
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
ピンがデフォルトでA +3.3Vまたは +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 | p | GND |
epad | 41 | p | GND |
3V3 | 2 | p | 電源 |
en | 3 | 私 | 高:オン、チップを有効にします。低:オフ、チップはオフになります。注: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 、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 |
ビデオコンテンツを好む人のために - ここでビデオバージョンを見ることができます: