Dániel Buga 9507fa38b4
Move smaller GPIO properties to metadata (#3657)
* Move other GPIO properties

* Redo USB pins as pin capability

* Deduplicate interrupt status enum

* Remove unnecessary interrupt enable bits on S2

* Update S2 PAC and remove manual io_mux hackery

* Generate io_mux function from metadata
2025-06-23 12:45:21 +00:00

185 lines
5.1 KiB
TOML

# ESP32-C3 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 = "esp32c3"
arch = "riscv"
cores = 1
trm = "https://www.espressif.com/sites/default/files/documentation/esp32-c3_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",
"i2s0",
"interrupt_core0",
"io_mux",
"ledc",
"rmt",
"rng",
"rsa",
"rtc_cntl",
"sensitive",
"sha",
"spi0",
"spi1",
"spi2",
"system",
"systimer",
"timg0",
"timg1",
"twai0",
"uart0",
"uart1",
"uhci0",
"uhci1",
"usb_device",
"xts_aes",
]
virtual_peripherals = [
"adc1",
"adc2",
]
symbols = [
# Additional peripherals defined by us (the developers):
"assist_debug_sp_monitor",
"assist_debug_region_monitor",
"gdma",
"phy",
"tsens",
# ROM capabilities
"rom_crc_le",
"rom_crc_be",
"rom_md5_bsd",
# Wakeup SOC based on ESP-IDF:
"pm_support_wifi_wakeup",
"pm_support_bt_wakeup",
"uart_support_wakeup_int",
"gpio_support_deepsleep_wakeup",
]
memory = [{ name = "dram", start = 0x3FC8_0000, end = 0x3FCE_0000 }]
[device.adc]
support_status = "partial"
instances = [
{ name = "adc1" },
{ name = "adc2" },
]
[device.gpio]
support_status = "supported"
gpio_function = 1
input_signal_max = 100
output_signal_max = 128
constant_0_input = 0x1f
constant_1_input = 0x1e
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"], af_input = { 2 = "FSPIQ" }, af_output = { 2 = "FSPIQ" } },
{ pin = 3, kind = ["input", "output", "analog", "rtc"] },
{ pin = 4, kind = ["input", "output", "analog", "rtc"], af_input = { 2 = "FSPIHD" }, af_output = { 0 = "USB_JTAG_TMS", 2 = "FSPIHD" } },
{ pin = 5, kind = ["input", "output", "analog", "rtc"], af_input = { 2 = "FSPIWP" }, af_output = { 0 = "USB_JTAG_TDI", 2 = "FSPIWP" } },
{ pin = 6, kind = ["input", "output"], af_input = { 2 = "FSPICLK" }, af_output = { 0 = "USB_JTAG_TCK", 2 = "FSPICLK_MUX" } },
{ pin = 7, kind = ["input", "output"], af_input = { 2 = "FSPID" }, af_output = { 0 = "USB_JTAG_TDO", 2 = "FSPID" } },
{ pin = 8, kind = ["input", "output"] },
{ pin = 9, kind = ["input", "output"] },
{ pin = 10, kind = ["input", "output"], af_input = { 2 = "FSPICS0" }, af_output = { 2 = "FSPICS0" } },
{ pin = 11, kind = ["input", "output"] },
{ pin = 12, kind = ["input", "output"], af_input = { 0 = "SPIHD" }, af_output = { 0 = "SPIHD" } },
{ pin = 13, kind = ["input", "output"], af_input = { 0 = "SPIWP" }, af_output = { 0 = "SPIWP" } },
{ pin = 14, kind = ["input", "output"], af_output = { 0 = "SPICS0" } },
{ pin = 15, kind = ["input", "output"], af_output = { 0 = "SPICLK_MUX" } },
{ pin = 16, kind = ["input", "output"], af_input = { 0 = "SPID" }, af_output = { 0 = "SPID" } },
{ pin = 17, kind = ["input", "output"], af_input = { 0 = "SPIQ" }, af_output = { 0 = "SPIQ" } },
{ pin = 18, kind = ["input", "output"] },
{ pin = 19, kind = ["input", "output"] },
{ pin = 20, kind = ["input", "output"], af_input = { 0 = "U0RXD" } },
{ pin = 21, kind = ["input", "output"], af_output = { 0 = "U0TXD" } },
] },
]
[device.i2c_master]
support_status = "supported"
instances = [{ name = "i2c0" }]
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
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 = 2
[device.rmt]
support_status = "partial"
ram_start = 0x60016400
channel_ram_size = 48
[device.spi_master]
support_status = "supported"
instances = [{ name = "spi2" }]
[device.timergroup]
instances = [{ name = "timg0" }, { name = "timg1" }]
[device.uart]
support_status = "supported"
[device.ds]
support_status = "not_supported"
# Other drivers which are partially supported but have no other configuration:
## Crypto
[device.aes]
[device.rsa]
[device.sha]
[device.hmac]
[device.rng]
## Interfaces
[device.i2s]
[device.ledc]
[device.spi_slave]
[device.twai]
[device.usb_serial_jtag]
## Miscellaneous
[device.assist_debug]
[device.dma]
[device.io_mux]
[device.temp_sensor]
[device.sleep]
[device.systimer]
## Radio
[device.wifi]
[device.bt]