mirror of
https://github.com/esp-rs/esp-hal.git
synced 2025-09-27 04:10:28 +00:00

* Reorganize esp-metadata * Move GPIO properties to metadata * Fix AF enum variants, remove need for paste for them
227 lines
7.7 KiB
TOML
227 lines
7.7 KiB
TOML
# ESP32-S2 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 = "esp32s2"
|
|
arch = "xtensa"
|
|
cores = 1
|
|
trm = "https://www.espressif.com/sites/default/files/documentation/esp32-s2_technical_reference_manual_en.pdf"
|
|
|
|
peripherals = [
|
|
# Peripherals available in the PAC:
|
|
"aes",
|
|
"apb_saradc",
|
|
"dedicated_gpio",
|
|
"ds",
|
|
"efuse",
|
|
"extmem",
|
|
"gpio",
|
|
"gpio_sd",
|
|
"hmac",
|
|
"i2c0",
|
|
"i2c1",
|
|
"i2s0",
|
|
"interrupt_core0",
|
|
"io_mux",
|
|
"ledc",
|
|
"pcnt",
|
|
"pms",
|
|
"rmt",
|
|
"rng",
|
|
"rsa",
|
|
"rtc_cntl",
|
|
"rtc_i2c",
|
|
"rtc_io",
|
|
"sens",
|
|
"sha",
|
|
"spi0",
|
|
"spi1",
|
|
"spi2",
|
|
"spi3",
|
|
"system",
|
|
"systimer",
|
|
"timg0",
|
|
"timg1",
|
|
"twai0",
|
|
"uart0",
|
|
"uart1",
|
|
"uhci0",
|
|
"usb0",
|
|
"usb_wrap",
|
|
"xts_aes",
|
|
]
|
|
|
|
virtual_peripherals = [
|
|
"adc1",
|
|
"adc2",
|
|
"dac1",
|
|
"dac2",
|
|
]
|
|
|
|
symbols = [
|
|
# Additional peripherals defined by us (the developers):
|
|
"pdma",
|
|
"phy",
|
|
"psram",
|
|
"psram_dma",
|
|
"ulp_riscv_core",
|
|
"spi_octal",
|
|
|
|
# ROM capabilities
|
|
"rom_crc_le",
|
|
"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",
|
|
"uart_support_wakeup_int",
|
|
"ulp_supported",
|
|
"riscv_coproc_supported",
|
|
]
|
|
|
|
memory = [{ name = "dram", start = 0x3FFB_0000, end = 0x4000_0000 }]
|
|
|
|
[device.adc]
|
|
support_status = "partial"
|
|
instances = [
|
|
{ name = "adc1" },
|
|
{ name = "adc2" },
|
|
]
|
|
|
|
[device.dac]
|
|
support_status = "partial"
|
|
instances = [
|
|
{ name = "dac1" },
|
|
{ name = "dac2" },
|
|
]
|
|
|
|
[device.gpio]
|
|
support_status = "supported"
|
|
has_bank_1 = true
|
|
instances = [
|
|
{ name = "gpio", 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"], af_output = { 3 = "SUBSPICS1" } },
|
|
{ pin = 9, kind = ["input", "output", "analog", "rtc"], af_input = { 3 = "SUBSPIHD", 4 = "FSPIHD" }, af_output = { 3 = "SUBSPIHD", 4 = "FSPIHD" } },
|
|
{ pin = 10, kind = ["input", "output", "analog", "rtc"], af_input = { 2 = "FSPIIO4", 4 = "FSPICS0" }, af_output = { 2 = "FSPIIO4", 3 = "SUBSPICS0", 4 = "FSPICS0" } },
|
|
{ pin = 11, kind = ["input", "output", "analog", "rtc"], af_input = { 2 = "FSPIIO5", 3 = "SUBSPID", 4 = "FSPID" }, af_output = { 2 = "FSPIIO5", 3 = "SUBSPID", 4 = "FSPID" } },
|
|
{ pin = 12, kind = ["input", "output", "analog", "rtc"], af_input = { 2 = "FSPIIO6", 4 = "FSPICLK" }, af_output = { 2 = "FSPIIO6", 3 = "SUBSPICLK", 4 = "FSPICLK" } },
|
|
{ pin = 13, kind = ["input", "output", "analog", "rtc"], af_input = { 2 = "FSPIIO7", 3 = "SUBSPIQ", 4 = "FSPIQ" }, af_output = { 2 = "FSPIIO7", 3 = "SUBSPIQ", 4 = "FSPIQ" } },
|
|
{ pin = 14, kind = ["input", "output", "analog", "rtc"], af_input = { 3 = "SUBSPIWP", 4 = "FSPIWP" }, af_output = { 2 = "FSPIDQS", 3 = "SUBSPIWP", 4 = "FSPIWP" } },
|
|
{ pin = 15, kind = ["input", "output", "analog", "rtc"], af_output = { 2 = "U0RTS" } },
|
|
{ pin = 16, kind = ["input", "output", "analog", "rtc"], af_input = { 2 = "U0CTS" } },
|
|
{ pin = 17, kind = ["input", "output", "analog", "rtc"], af_output = { 2 = "U1TXD" } },
|
|
{ pin = 18, kind = ["input", "output", "analog", "rtc"], af_input = { 2 = "U1RXD" } },
|
|
{ pin = 19, kind = ["input", "output", "analog", "rtc"], af_output = { 2 = "U1RTS" } },
|
|
{ pin = 20, kind = ["input", "output", "analog", "rtc"], af_input = { 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"], af_input = { 2 = "FSPIHD", 3 = "SUBSPIHD" }, af_output = { 2 = "FSPIHD", 3 = "SUBSPIHD" } },
|
|
{ pin = 34, kind = ["input", "output"], af_input = { 2 = "FSPICS0" }, af_output = { 2 = "FSPICS0", 3 = "SUBSPICS0" } },
|
|
{ pin = 35, kind = ["input", "output"], af_input = { 2 = "FSPID", 3 = "SUBSPID" }, af_output = { 2 = "FSPID", 3 = "SUBSPID" } },
|
|
{ pin = 36, kind = ["input", "output"], af_input = { 2 = "FSPICLK" }, af_output = { 2 = "FSPICLK", 3 = "SUBSPICLK" } },
|
|
{ pin = 37, kind = ["input", "output"], af_input = { 2 = "FSPIQ", 3 = "SUBSPIQ", 4 = "SPIDQS" }, af_output = { 2 = "FSPIQ", 3 = "SUBSPIQ", 4 = "SPIDQS" } },
|
|
{ pin = 38, kind = ["input", "output"], af_input = { 2 = "FSPIWP", 3 = "SUBSPIWP" }, af_output = { 2 = "FSPIWP", 3 = "SUBSPIWP" } },
|
|
{ pin = 39, kind = ["input", "output"], af_output = { 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"] },
|
|
] },
|
|
]
|
|
[device.i2c_master]
|
|
support_status = "supported"
|
|
instances = [{ name = "i2c0" }, { name = "i2c1" }]
|
|
ll_intr_mask = 0x1ffff
|
|
fifo_size = 32
|
|
has_bus_timeout_enable = true
|
|
max_bus_timeout = 0xFFFFFF
|
|
separate_filter_config_registers = true
|
|
has_arbitration_en = true
|
|
i2c0_data_register_ahb_address = 0x6001301c
|
|
|
|
[device.interrupts]
|
|
support_status = "partial"
|
|
status_registers = 3
|
|
|
|
[device.rmt]
|
|
support_status = "partial"
|
|
ram_start = 0x3f416400
|
|
channel_ram_size = 64
|
|
|
|
[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.rgb_display] # via SPI and I2S
|
|
support_status = "not_supported"
|
|
|
|
[device.camera] # via I2S
|
|
support_status = "not_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.ledc]
|
|
[device.spi_slave]
|
|
[device.pcnt]
|
|
[device.twai]
|
|
[device.usb_otg]
|
|
|
|
## Miscellaneous
|
|
[device.dma]
|
|
[device.io_mux]
|
|
[device.psram]
|
|
[device.sleep]
|
|
[device.systimer]
|
|
[device.temp_sensor]
|
|
[device.ulp_fsm]
|
|
[device.ulp_riscv]
|
|
|
|
## Radio
|
|
[device.wifi]
|