# ESP32-S3 Device Metadata # # Empty [`device.driver`] tables imply `partial` support status. # # If you modify a driver support status, run `cargo xtask update-chip-support-table` to # update the table in the esp-hal README. [device] name = "esp32s3" arch = "xtensa" cores = 2 trm = "https://www.espressif.com/sites/default/files/documentation/esp32-s3_technical_reference_manual_en.pdf" peripherals = [ # Peripherals available in the PAC: "aes", "apb_ctrl", "apb_saradc", "assist_debug", "dma", "ds", "efuse", "extmem", "gpio", "gpio_sd", "hmac", "i2c0", "i2c1", "i2s0", "i2s1", "interrupt_core0", "interrupt_core1", "io_mux", "lcd_cam", "ledc", "mcpwm0", "mcpwm1", "pcnt", "peri_backup", "rmt", "rng", "rsa", "rtc_cntl", "rtc_i2c", "rtc_io", "sdhost", "sens", "sensitive", "sha", "spi0", "spi1", "spi2", "spi3", "system", "systimer", "timg0", "timg1", "twai0", "uart0", "uart1", "uart2", "uhci0", "uhci1", "usb0", "usb_device", "usb_wrap", "wcl", "xts_aes", ] virtual_peripherals = [ "adc1", "adc2", ] symbols = [ # Additional peripherals defined by us (the developers): "assist_debug_region_monitor", "gdma", "phy", "psram", "psram_dma", "octal_psram", "ulp_riscv_core", "spi_octal", # ROM capabilities "rom_crc_le", "rom_crc_be", "rom_md5_bsd", # Wakeup SOC based on ESP-IDF: "pm_support_ext0_wakeup", "pm_support_ext1_wakeup", "pm_support_touch_sensor_wakeup", "pm_support_wifi_wakeup", "pm_support_bt_wakeup", "uart_support_wakeup_int", "ulp_supported", "riscv_coproc_supported", ] memory = [{ name = "dram", start = 0x3FC8_8000, end = 0x3FD0_0000 }] [device.adc] support_status = "partial" instances = [ { name = "adc1" }, { name = "adc2" }, ] [device.gpio] support_status = "supported" has_bank_1 = true gpio_function = 1 input_signal_max = 189 output_signal_max = 256 constant_0_input = 0x3c constant_1_input = 0x38 pins = [ { pin = 0, kind = ["input", "output", "analog", "rtc"] }, { pin = 1, kind = ["input", "output", "analog", "rtc"] }, { pin = 2, kind = ["input", "output", "analog", "rtc"] }, { pin = 3, kind = ["input", "output", "analog", "rtc"] }, { pin = 4, kind = ["input", "output", "analog", "rtc"] }, { pin = 5, kind = ["input", "output", "analog", "rtc"] }, { pin = 6, kind = ["input", "output", "analog", "rtc"] }, { pin = 7, kind = ["input", "output", "analog", "rtc"] }, { pin = 8, kind = ["input", "output", "analog", "rtc"], alternate_functions = { 3 = "SUBSPICS1" } }, { pin = 9, kind = ["input", "output", "analog", "rtc"], alternate_functions = { 3 = "SUBSPIHD", 4 = "FSPIHD" } }, { pin = 10, kind = ["input", "output", "analog", "rtc"], alternate_functions = { 2 = "FSPIIO4", 3 = "SUBSPICS0", 4 = "FSPICS0" } }, { pin = 11, kind = ["input", "output", "analog", "rtc"], alternate_functions = { 2 = "FSPIIO5", 3 = "SUBSPID", 4 = "FSPID" } }, { pin = 12, kind = ["input", "output", "analog", "rtc"], alternate_functions = { 2 = "FSPIIO6", 3 = "SUBSPICLK", 4 = "FSPICLK" } }, { pin = 13, kind = ["input", "output", "analog", "rtc"], alternate_functions = { 2 = "FSPIIO7", 3 = "SUBSPIQ", 4 = "FSPIQ" } }, { pin = 14, kind = ["input", "output", "analog", "rtc"], alternate_functions = { 2 = "FSPIDQS", 3 = "SUBSPIWP", 4 = "FSPIWP" } }, { pin = 15, kind = ["input", "output", "analog", "rtc"], alternate_functions = { 2 = "U0RTS" } }, { pin = 16, kind = ["input", "output", "analog", "rtc"], alternate_functions = { 2 = "U0CTS" } }, { pin = 17, kind = ["input", "output", "analog", "rtc"], alternate_functions = { 2 = "U1TXD" } }, { pin = 18, kind = ["input", "output", "analog", "rtc"], alternate_functions = { 2 = "U1RXD" } }, { pin = 19, kind = ["input", "output", "analog", "rtc", "usb_dm"], alternate_functions = { 2 = "U1RTS" } }, { pin = 20, kind = ["input", "output", "analog", "rtc", "usb_dp"], alternate_functions = { 2 = "U1CTS" } }, { pin = 21, kind = ["input", "output", "analog", "rtc"] }, { pin = 26, kind = ["input", "output"] }, { pin = 27, kind = ["input", "output"] }, { pin = 28, kind = ["input", "output"] }, { pin = 29, kind = ["input", "output"] }, { pin = 30, kind = ["input", "output"] }, { pin = 31, kind = ["input", "output"] }, { pin = 32, kind = ["input", "output"] }, { pin = 33, kind = ["input", "output"], alternate_functions = { 2 = "FSPIHD", 3 = "SUBSPIHD" } }, { pin = 34, kind = ["input", "output"], alternate_functions = { 2 = "FSPICS0", 3 = "SUBSPICS0" } }, { pin = 35, kind = ["input", "output"], alternate_functions = { 2 = "FSPID", 3 = "SUBSPID" } }, { pin = 36, kind = ["input", "output"], alternate_functions = { 2 = "FSPICLK", 3 = "SUBSPICLK" } }, { pin = 37, kind = ["input", "output"], alternate_functions = { 2 = "FSPIQ", 3 = "SUBSPIQ", 4 = "SPIDQS" } }, { pin = 38, kind = ["input", "output"], alternate_functions = { 2 = "FSPIWP", 3 = "SUBSPIWP" } }, { pin = 39, kind = ["input", "output"], alternate_functions = { 3 = "SUBSPICS1" } }, { pin = 40, kind = ["input", "output"] }, { pin = 41, kind = ["input", "output"] }, { pin = 42, kind = ["input", "output"] }, { pin = 43, kind = ["input", "output"] }, { pin = 44, kind = ["input", "output"] }, { pin = 45, kind = ["input", "output"] }, { pin = 46, kind = ["input", "output"] }, { pin = 47, kind = ["input", "output"] }, { pin = 48, kind = ["input", "output"] }, ] input_signals = [ { name = "SPIQ", id = 0 }, { name = "SPID", id = 1 }, { name = "SPIHD", id = 2 }, { name = "SPIWP", id = 3 }, { name = "SPID4", id = 7 }, { name = "SPID5", id = 8 }, { name = "SPID6", id = 9 }, { name = "SPID7", id = 10 }, { name = "SPIDQS", id = 11 }, { name = "U0RXD", id = 12 }, { name = "U0CTS", id = 13 }, { name = "U0DSR", id = 14 }, { name = "U1RXD", id = 15 }, { name = "U1CTS", id = 16 }, { name = "U1DSR", id = 17 }, { name = "U2RXD", id = 18 }, { name = "U2CTS", id = 19 }, { name = "U2DSR", id = 20 }, { name = "I2S1_MCLK", id = 21 }, { name = "I2S0O_BCK", id = 22 }, { name = "I2S0_MCLK", id = 23 }, { name = "I2S0O_WS", id = 24 }, { name = "I2S0I_SD", id = 25 }, { name = "I2S0I_BCK", id = 26 }, { name = "I2S0I_WS", id = 27 }, { name = "I2S1O_BCK", id = 28 }, { name = "I2S1O_WS", id = 29 }, { name = "I2S1I_SD", id = 30 }, { name = "I2S1I_BCK", id = 31 }, { name = "I2S1I_WS", id = 32 }, { name = "PCNT0_SIG_CH0", id = 33 }, { name = "PCNT0_SIG_CH1", id = 34 }, { name = "PCNT0_CTRL_CH0", id = 35 }, { name = "PCNT0_CTRL_CH1", id = 36 }, { name = "PCNT1_SIG_CH0", id = 37 }, { name = "PCNT1_SIG_CH1", id = 38 }, { name = "PCNT1_CTRL_CH0", id = 39 }, { name = "PCNT1_CTRL_CH1", id = 40 }, { name = "PCNT2_SIG_CH0", id = 41 }, { name = "PCNT2_SIG_CH1", id = 42 }, { name = "PCNT2_CTRL_CH0", id = 43 }, { name = "PCNT2_CTRL_CH1", id = 44 }, { name = "PCNT3_SIG_CH0", id = 45 }, { name = "PCNT3_SIG_CH1", id = 46 }, { name = "PCNT3_CTRL_CH0", id = 47 }, { name = "PCNT3_CTRL_CH1", id = 48 }, { name = "I2S0I_SD1", id = 51 }, { name = "I2S0I_SD2", id = 52 }, { name = "I2S0I_SD3", id = 53 }, { name = "USB_EXTPHY_VP", id = 55 }, { name = "USB_EXTPHY_VM", id = 56 }, { name = "USB_EXTPHY_RCV", id = 57 }, { name = "USB_OTG_IDDIG", id = 58 }, { name = "USB_OTG_AVALID", id = 59 }, { name = "USB_SRP_BVALID", id = 60 }, { name = "USB_OTG_VBUSVALID", id = 61 }, { name = "USB_SRP_SESSEND", id = 62 }, { name = "SPI3_CLK", id = 66 }, { name = "SPI3_Q", id = 67 }, { name = "SPI3_D", id = 68 }, { name = "SPI3_HD", id = 69 }, { name = "SPI3_WP", id = 70 }, { name = "SPI3_CS0", id = 71 }, { name = "RMT_SIG_0", id = 81 }, { name = "RMT_SIG_1", id = 82 }, { name = "RMT_SIG_2", id = 83 }, { name = "RMT_SIG_3", id = 84 }, { name = "I2CEXT0_SCL", id = 89 }, { name = "I2CEXT0_SDA", id = 90 }, { name = "I2CEXT1_SCL", id = 91 }, { name = "I2CEXT1_SDA", id = 92 }, { name = "FSPICLK", id = 101 }, { name = "FSPIQ", id = 102 }, { name = "FSPID", id = 103 }, { name = "FSPIHD", id = 104 }, { name = "FSPIWP", id = 105 }, { name = "FSPIIO4", id = 106 }, { name = "FSPIIO5", id = 107 }, { name = "FSPIIO6", id = 108 }, { name = "FSPIIO7", id = 109 }, { name = "FSPICS0", id = 110 }, { name = "TWAI_RX", id = 116 }, { name = "SUBSPIQ", id = 120 }, { name = "SUBSPID", id = 121 }, { name = "SUBSPIHD", id = 122 }, { name = "SUBSPIWP", id = 123 }, { name = "CAM_DATA_0", id = 133 }, { name = "CAM_DATA_1", id = 134 }, { name = "CAM_DATA_2", id = 135 }, { name = "CAM_DATA_3", id = 136 }, { name = "CAM_DATA_4", id = 137 }, { name = "CAM_DATA_5", id = 138 }, { name = "CAM_DATA_6", id = 139 }, { name = "CAM_DATA_7", id = 140 }, { name = "CAM_DATA_8", id = 141 }, { name = "CAM_DATA_9", id = 142 }, { name = "CAM_DATA_10", id = 143 }, { name = "CAM_DATA_11", id = 144 }, { name = "CAM_DATA_12", id = 145 }, { name = "CAM_DATA_13", id = 146 }, { name = "CAM_DATA_14", id = 147 }, { name = "CAM_DATA_15", id = 148 }, { name = "CAM_PCLK", id = 149 }, { name = "CAM_H_ENABLE", id = 150 }, { name = "CAM_H_SYNC", id = 151 }, { name = "CAM_V_SYNC", id = 152 }, { name = "SUBSPID4", id = 155 }, { name = "SUBSPID5", id = 156 }, { name = "SUBSPID6", id = 157 }, { name = "SUBSPID7", id = 158 }, { name = "SUBSPIDQS", id = 159 }, { name = "PWM0_SYNC0", id = 160 }, { name = "PWM0_SYNC1", id = 161 }, { name = "PWM0_SYNC2", id = 162 }, { name = "PWM0_F0", id = 163 }, { name = "PWM0_F1", id = 164 }, { name = "PWM0_F2", id = 165 }, { name = "PWM0_CAP0", id = 166 }, { name = "PWM0_CAP1", id = 167 }, { name = "PWM0_CAP2", id = 168 }, { name = "PWM1_SYNC0", id = 169 }, { name = "PWM1_SYNC1", id = 170 }, { name = "PWM1_SYNC2", id = 171 }, { name = "PWM1_F0", id = 172 }, { name = "PWM1_F1", id = 173 }, { name = "PWM1_F2", id = 174 }, { name = "PWM1_CAP0", id = 175 }, { name = "PWM1_CAP1", id = 176 }, { name = "PWM1_CAP2", id = 177 }, { name = "SDHOST_CCMD_IN_1", id = 178 }, { name = "SDHOST_CCMD_IN_2", id = 179 }, { name = "SDHOST_CDATA_IN_10", id = 180 }, { name = "SDHOST_CDATA_IN_11", id = 181 }, { name = "SDHOST_CDATA_IN_12", id = 182 }, { name = "SDHOST_CDATA_IN_13", id = 183 }, { name = "SDHOST_CDATA_IN_14", id = 184 }, { name = "SDHOST_CDATA_IN_15", id = 185 }, { name = "SDHOST_CDATA_IN_16", id = 186 }, { name = "SDHOST_CDATA_IN_17", id = 187 }, { name = "SDHOST_DATA_STROBE_1", id = 192 }, { name = "SDHOST_DATA_STROBE_2", id = 193 }, { name = "SDHOST_CARD_DETECT_N_1", id = 194 }, { name = "SDHOST_CARD_DETECT_N_2", id = 195 }, { name = "SDHOST_CARD_WRITE_PRT_1", id = 196 }, { name = "SDHOST_CARD_WRITE_PRT_2", id = 197 }, { name = "SDHOST_CARD_INT_N_1", id = 198 }, { name = "SDHOST_CARD_INT_N_2", id = 199 }, { name = "SDHOST_CDATA_IN_20", id = 213 }, { name = "SDHOST_CDATA_IN_21", id = 214 }, { name = "SDHOST_CDATA_IN_22", id = 215 }, { name = "SDHOST_CDATA_IN_23", id = 216 }, { name = "SDHOST_CDATA_IN_24", id = 217 }, { name = "SDHOST_CDATA_IN_25", id = 218 }, { name = "SDHOST_CDATA_IN_26", id = 219 }, { name = "SDHOST_CDATA_IN_27", id = 220 }, ] output_signals = [ { name = "SPIQ", id = 0 }, { name = "SPID", id = 1 }, { name = "SPIHD", id = 2 }, { name = "SPIWP", id = 3 }, { name = "SPICLK", id = 4 }, { name = "SPICS0", id = 5 }, { name = "SPICS1", id = 6 }, { name = "SPID4", id = 7 }, { name = "SPID5", id = 8 }, { name = "SPID6", id = 9 }, { name = "SPID7", id = 10 }, { name = "SPIDQS", id = 11 }, { name = "U0TXD", id = 12 }, { name = "U0RTS", id = 13 }, { name = "U0DTR", id = 14 }, { name = "U1TXD", id = 15 }, { name = "U1RTS", id = 16 }, { name = "U1DTR", id = 17 }, { name = "U2TXD", id = 18 }, { name = "U2RTS", id = 19 }, { name = "U2DTR", id = 20 }, { name = "I2S1_MCLK", id = 21 }, { name = "I2S0O_BCK", id = 22 }, { name = "I2S0_MCLK", id = 23 }, { name = "I2S0O_WS", id = 24 }, { name = "I2S0O_SD", id = 25 }, { name = "I2S0I_BCK", id = 26 }, { name = "I2S0I_WS", id = 27 }, { name = "I2S1O_BCK", id = 28 }, { name = "I2S1O_WS", id = 29 }, { name = "I2S1O_SD", id = 30 }, { name = "I2S1I_BCK", id = 31 }, { name = "I2S1I_WS", id = 32 }, { name = "USB_EXTPHY_OEN", id = 55 }, { name = "USB_EXTPHY_VPO", id = 57 }, { name = "USB_EXTPHY_VMO", id = 58 }, { name = "SPI3_CLK", id = 66 }, { name = "SPI3_Q", id = 67 }, { name = "SPI3_D", id = 68 }, { name = "SPI3_HD", id = 69 }, { name = "SPI3_WP", id = 70 }, { name = "SPI3_CS0", id = 71 }, { name = "SPI3_CS1", id = 72 }, { name = "LEDC_LS_SIG0", id = 73 }, { name = "LEDC_LS_SIG1", id = 74 }, { name = "LEDC_LS_SIG2", id = 75 }, { name = "LEDC_LS_SIG3", id = 76 }, { name = "LEDC_LS_SIG4", id = 77 }, { name = "LEDC_LS_SIG5", id = 78 }, { name = "LEDC_LS_SIG6", id = 79 }, { name = "LEDC_LS_SIG7", id = 80 }, { name = "RMT_SIG_0", id = 81 }, { name = "RMT_SIG_1", id = 82 }, { name = "RMT_SIG_2", id = 83 }, { name = "RMT_SIG_3", id = 84 }, { name = "I2CEXT0_SCL", id = 89 }, { name = "I2CEXT0_SDA", id = 90 }, { name = "I2CEXT1_SCL", id = 91 }, { name = "I2CEXT1_SDA", id = 92 }, { name = "GPIO_SD0", id = 93 }, { name = "GPIO_SD1", id = 94 }, { name = "GPIO_SD2", id = 95 }, { name = "GPIO_SD3", id = 96 }, { name = "GPIO_SD4", id = 97 }, { name = "GPIO_SD5", id = 98 }, { name = "GPIO_SD6", id = 99 }, { name = "GPIO_SD7", id = 100 }, { name = "FSPICLK", id = 101 }, { name = "FSPIQ", id = 102 }, { name = "FSPID", id = 103 }, { name = "FSPIHD", id = 104 }, { name = "FSPIWP", id = 105 }, { name = "FSPIIO4", id = 106 }, { name = "FSPIIO5", id = 107 }, { name = "FSPIIO6", id = 108 }, { name = "FSPIIO7", id = 109 }, { name = "FSPICS0", id = 110 }, { name = "FSPICS1", id = 111 }, { name = "FSPICS2", id = 112 }, { name = "FSPICS3", id = 113 }, { name = "FSPICS4", id = 114 }, { name = "FSPICS5", id = 115 }, { name = "TWAI_TX", id = 116 }, { name = "SUBSPICLK", id = 119 }, { name = "SUBSPIQ", id = 120 }, { name = "SUBSPID", id = 121 }, { name = "SUBSPIHD", id = 122 }, { name = "SUBSPIWP", id = 123 }, { name = "SUBSPICS0", id = 124 }, { name = "SUBSPICS1", id = 125 }, { name = "FSPIDQS", id = 126 }, { name = "SPI3_CS2", id = 127 }, { name = "I2S0O_SD1", id = 128 }, { name = "LCD_CS", id = 132 }, { name = "LCD_DATA_0", id = 133 }, { name = "LCD_DATA_1", id = 134 }, { name = "LCD_DATA_2", id = 135 }, { name = "LCD_DATA_3", id = 136 }, { name = "LCD_DATA_4", id = 137 }, { name = "LCD_DATA_5", id = 138 }, { name = "LCD_DATA_6", id = 139 }, { name = "LCD_DATA_7", id = 140 }, { name = "LCD_DATA_8", id = 141 }, { name = "LCD_DATA_9", id = 142 }, { name = "LCD_DATA_10", id = 143 }, { name = "LCD_DATA_11", id = 144 }, { name = "LCD_DATA_12", id = 145 }, { name = "LCD_DATA_13", id = 146 }, { name = "LCD_DATA_14", id = 147 }, { name = "LCD_DATA_15", id = 148 }, { name = "CAM_CLK", id = 149 }, { name = "LCD_H_ENABLE", id = 150 }, { name = "LCD_H_SYNC", id = 151 }, { name = "LCD_V_SYNC", id = 152 }, { name = "LCD_DC", id = 153 }, { name = "LCD_PCLK", id = 154 }, { name = "SUBSPID4", id = 155 }, { name = "SUBSPID5", id = 156 }, { name = "SUBSPID6", id = 157 }, { name = "SUBSPID7", id = 158 }, { name = "SUBSPIDQS", id = 159 }, { name = "PWM0_0A", id = 160 }, { name = "PWM0_0B", id = 161 }, { name = "PWM0_1A", id = 162 }, { name = "PWM0_1B", id = 163 }, { name = "PWM0_2A", id = 164 }, { name = "PWM0_2B", id = 165 }, { name = "PWM1_0A", id = 166 }, { name = "PWM1_0B", id = 167 }, { name = "PWM1_1A", id = 168 }, { name = "PWM1_1B", id = 169 }, { name = "PWM1_2A", id = 170 }, { name = "PWM1_2B", id = 171 }, { name = "SDHOST_CCLK_OUT_1", id = 172 }, { name = "SDHOST_CCLK_OUT_2", id = 173 }, { name = "SDHOST_RST_N_1", id = 174 }, { name = "SDHOST_RST_N_2", id = 175 }, { name = "SDHOST_CCMD_OD_PULLUP_EN_N", id = 176 }, { name = "SDIO_TOHOST_INT", id = 177 }, { name = "SDHOST_CCMD_OUT_1", id = 178 }, { name = "SDHOST_CCMD_OUT_2", id = 179 }, { name = "SDHOST_CDATA_OUT_10", id = 180 }, { name = "SDHOST_CDATA_OUT_11", id = 181 }, { name = "SDHOST_CDATA_OUT_12", id = 182 }, { name = "SDHOST_CDATA_OUT_13", id = 183 }, { name = "SDHOST_CDATA_OUT_14", id = 184 }, { name = "SDHOST_CDATA_OUT_15", id = 185 }, { name = "SDHOST_CDATA_OUT_16", id = 186 }, { name = "SDHOST_CDATA_OUT_17", id = 187 }, { name = "SDHOST_CDATA_OUT_20", id = 213 }, { name = "SDHOST_CDATA_OUT_21", id = 214 }, { name = "SDHOST_CDATA_OUT_22", id = 215 }, { name = "SDHOST_CDATA_OUT_23", id = 216 }, { name = "SDHOST_CDATA_OUT_24", id = 217 }, { name = "SDHOST_CDATA_OUT_25", id = 218 }, { name = "SDHOST_CDATA_OUT_26", id = 219 }, { name = "SDHOST_CDATA_OUT_27", id = 220 }, { name = "GPIO", id = 256 }, ] [device.i2c_master] support_status = "supported" instances = [{ name = "i2c0" }, { name = "i2c1" }] has_fsm_timeouts = true has_hw_bus_clear = true ll_intr_mask = 0x3ffff fifo_size = 32 has_bus_timeout_enable = true max_bus_timeout = 0x1F can_estimate_nack_reason = true has_conf_update = true has_arbitration_en = true has_tx_fifo_watermark = true bus_timeout_is_exponential = true [device.interrupts] support_status = "partial" status_registers = 4 [device.rmt] support_status = "partial" ram_start = 0x60016800 channel_ram_size = 48 [device.spi_master] support_status = "supported" instances = [{ name = "spi2" }, { name = "spi3" }] [device.timergroup] timg_has_timer1 = true instances = [{ name = "timg0" }, { name = "timg1" }] [device.uart] support_status = "supported" [device.touch] support_status = "not_supported" [device.ds] support_status = "not_supported" # Other drivers which are partially supported but have no other configuration: ## Crypto [device.aes] [device.rsa] [device.hmac] [device.sha] [device.rng] ## Interfaces [device.i2s] [device.camera] [device.rgb_display] [device.ledc] [device.mcpwm] [device.pcnt] [device.sd_host] [device.spi_slave] [device.twai] [device.usb_otg] [device.usb_serial_jtag] ## Miscellaneous [device.assist_debug] [device.dma] [device.io_mux] [device.psram] [device.sleep] [device.systimer] [device.temp_sensor] [device.ulp_fsm] [device.ulp_riscv] ## Radio [device.wifi] [device.bt]