增加了工程结构说明和引脚使用说明
This commit is contained in:
@@ -0,0 +1,328 @@
|
|||||||
|
# Architecture And Flow Diagrams
|
||||||
|
|
||||||
|
This document captures the current project architecture and major runtime flows
|
||||||
|
in Mermaid format. The diagrams reflect the implementation in the repository,
|
||||||
|
not older planning notes.
|
||||||
|
|
||||||
|
## Layered Architecture
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart TB
|
||||||
|
Main["main/app_main"]
|
||||||
|
App["app_composition\nstartup sequencing and wiring"]
|
||||||
|
CP["control_plane\npolicy, lifecycle, workers, retry/backoff"]
|
||||||
|
Domain["domain\nbusiness contracts, adapters, semantic mapping"]
|
||||||
|
Platform["platform\nhardware, transport, storage, display, audio"]
|
||||||
|
HW["ESP32-S3 hardware\nLCD, audio codec, GPIO, Wi-Fi, flash"]
|
||||||
|
|
||||||
|
Main --> App
|
||||||
|
App --> CP
|
||||||
|
CP --> Domain
|
||||||
|
Domain --> Platform
|
||||||
|
Platform --> HW
|
||||||
|
```
|
||||||
|
|
||||||
|
## Component Responsibility Map
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart LR
|
||||||
|
subgraph AppComposition["app_composition"]
|
||||||
|
Boot["Plan A boot sequence"]
|
||||||
|
Wire["Runtime wiring"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph ControlPlane["control_plane"]
|
||||||
|
Connectivity["Connectivity bootstrap and Wi-Fi policy"]
|
||||||
|
Workers["Runtime worker ownership"]
|
||||||
|
Events["System event dispatch"]
|
||||||
|
MultimodalPolicy["Multimodal session policy"]
|
||||||
|
Fortune["Daily fortune policy"]
|
||||||
|
RemoteLog["Remote log service"]
|
||||||
|
FactoryCli["Factory CLI diagnostics"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph Domain["domain"]
|
||||||
|
ExpressionMap["LCD expression semantic mapping"]
|
||||||
|
RuntimeAdapters["Runtime facade adapters"]
|
||||||
|
Direction["Direction and calibration model"]
|
||||||
|
FortuneDomain["Birth profile and fortune contracts"]
|
||||||
|
UserConfig["LAN user config routes"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph Platform["platform"]
|
||||||
|
LCD["ST7789 direct LCD backend"]
|
||||||
|
Audio["ES8311 audio pipeline"]
|
||||||
|
Network["Wi-Fi, BLE provisioning, HTTP, WebSocket"]
|
||||||
|
Storage["NVS, LittleFS, LogFS"]
|
||||||
|
GPIO["GPIO, stepper, console UART"]
|
||||||
|
end
|
||||||
|
|
||||||
|
Boot --> Connectivity
|
||||||
|
Boot --> Workers
|
||||||
|
Wire --> Workers
|
||||||
|
Connectivity --> RuntimeAdapters
|
||||||
|
Workers --> Events
|
||||||
|
Workers --> RemoteLog
|
||||||
|
MultimodalPolicy --> RuntimeAdapters
|
||||||
|
Fortune --> FortuneDomain
|
||||||
|
Events --> ExpressionMap
|
||||||
|
FactoryCli --> RemoteLog
|
||||||
|
RuntimeAdapters --> LCD
|
||||||
|
RuntimeAdapters --> Audio
|
||||||
|
RuntimeAdapters --> Network
|
||||||
|
RuntimeAdapters --> Storage
|
||||||
|
RuntimeAdapters --> GPIO
|
||||||
|
```
|
||||||
|
|
||||||
|
## Current Boot Sequence
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
sequenceDiagram
|
||||||
|
participant Main as app_main
|
||||||
|
participant App as app_composition
|
||||||
|
participant CP as control_plane
|
||||||
|
participant Domain as domain
|
||||||
|
participant Platform as platform
|
||||||
|
|
||||||
|
Main->>App: app_composition_start_default_runtime()
|
||||||
|
App->>CP: control_plane_prepare_runtime_storage()
|
||||||
|
CP->>Domain: prepare storage through runtime adapters
|
||||||
|
Domain->>Platform: NVS / storage initialization
|
||||||
|
|
||||||
|
App->>CP: control_plane_play_boot_sound(timeout)
|
||||||
|
CP->>Domain: domain_runtime_multimodal_audio_init()
|
||||||
|
Domain->>Platform: ES8311 / I2S / I2C audio init
|
||||||
|
CP->>Domain: domain_runtime_behavior_play_prompt_file()
|
||||||
|
Domain->>Platform: play prompt file
|
||||||
|
|
||||||
|
App->>CP: control_plane_init_lcd_device()
|
||||||
|
CP->>Domain: domain_runtime_init_lcd_device()
|
||||||
|
Domain->>Platform: LCD GPIO/SPI/ST7789 init
|
||||||
|
|
||||||
|
App->>CP: control_plane_start_lcd_render_worker()
|
||||||
|
CP->>CP: create cp_lcd_render task
|
||||||
|
CP->>Domain: domain_runtime_start_lcd_render_loop()
|
||||||
|
Domain->>Platform: lcd_direct_start_render_loop()
|
||||||
|
|
||||||
|
App->>CP: control_plane_init()
|
||||||
|
CP->>Domain: platform/domain runtime initialization
|
||||||
|
Domain->>Platform: stepper, storage, behavior adapters
|
||||||
|
|
||||||
|
App->>CP: control_plane_request_boot_expression()
|
||||||
|
CP->>Domain: request DOMAIN_EXPRESSION_IDLE
|
||||||
|
Domain->>Platform: queue LCD idle asset sequence
|
||||||
|
|
||||||
|
opt boot turntable calibration enabled
|
||||||
|
App->>CP: control_plane_calibrate()
|
||||||
|
CP->>Domain: direction calibration policy
|
||||||
|
Domain->>Platform: stepper + calibration switch
|
||||||
|
end
|
||||||
|
|
||||||
|
App->>CP: control_plane_bootstrap_connectivity()
|
||||||
|
CP->>Domain: Wi-Fi init / STA connect / BLE provisioning fallback
|
||||||
|
Domain->>Platform: Wi-Fi and provisioning primitives
|
||||||
|
|
||||||
|
App->>CP: control_plane_start_runtime_workers()
|
||||||
|
CP->>CP: start model, websocket wait, LCD, Wi-Fi state, events, keys, remote log, fortune
|
||||||
|
```
|
||||||
|
|
||||||
|
## Runtime Worker Topology
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart TB
|
||||||
|
Start["control_plane_start_runtime_workers()"]
|
||||||
|
|
||||||
|
Start --> ModelQueue["ensure model command queue"]
|
||||||
|
Start --> ModelTask["cp_model_cmd"]
|
||||||
|
Start --> WsWait["WebSocket wait task"]
|
||||||
|
Start --> LcdTask["cp_lcd_render"]
|
||||||
|
Start --> WifiTask["cp_wifi_state"]
|
||||||
|
Start --> EventTask["cp_system_event"]
|
||||||
|
Start --> KeyTask["cp_key_input"]
|
||||||
|
Start --> RemoteLogTask["cp_remote_log"]
|
||||||
|
Start --> FortuneTask["cp_fortune\nif FORTUNE_ENABLE"]
|
||||||
|
|
||||||
|
KeyTask --> EventTask
|
||||||
|
EventTask --> LcdTask
|
||||||
|
WsWait --> Multimodal["multimodal client/runtime"]
|
||||||
|
Multimodal --> ModelTask
|
||||||
|
Multimodal --> Audio["audio capture/playback"]
|
||||||
|
WifiTask --> LcdTask
|
||||||
|
RemoteLogTask --> LogServer["remote log server"]
|
||||||
|
FortuneTask --> FortuneApi["daily fortune API"]
|
||||||
|
```
|
||||||
|
|
||||||
|
## Connectivity Bootstrap Flow
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart TD
|
||||||
|
Start["control_plane_bootstrap_connectivity"]
|
||||||
|
InitWiFi["domain_runtime_network_wifi_init(seed credentials)"]
|
||||||
|
HasCreds{"saved Wi-Fi credentials?"}
|
||||||
|
StaConnect["connect STA with feedback"]
|
||||||
|
StaOk{"STA connected?"}
|
||||||
|
KeepCreds{"error keeps credentials?"}
|
||||||
|
ClearCreds["clear saved Wi-Fi credentials"]
|
||||||
|
ResolvePop["resolve provisioning PoP\nserial number preferred"]
|
||||||
|
HasPop{"PoP available?"}
|
||||||
|
BleProv["start BLE provisioning"]
|
||||||
|
Done["return ESP_OK"]
|
||||||
|
Error["return error"]
|
||||||
|
|
||||||
|
Start --> InitWiFi --> HasCreds
|
||||||
|
HasCreds -- yes --> StaConnect --> StaOk
|
||||||
|
StaOk -- yes --> Done
|
||||||
|
StaOk -- no --> KeepCreds
|
||||||
|
KeepCreds -- yes --> Done
|
||||||
|
KeepCreds -- no --> ClearCreds --> ResolvePop
|
||||||
|
HasCreds -- no --> ResolvePop
|
||||||
|
ResolvePop --> HasPop
|
||||||
|
HasPop -- yes --> BleProv --> Done
|
||||||
|
HasPop -- no --> Error
|
||||||
|
```
|
||||||
|
|
||||||
|
## LCD Expression Flow
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart LR
|
||||||
|
CP["control_plane policy/event"]
|
||||||
|
DomainReq["domain_runtime_request_expression()"]
|
||||||
|
Resolve["domain_resolve_expression_platform_request()"]
|
||||||
|
Catalog["domain expression catalog\nIDLE, WIFI_DISCONNECTED,\nSERVER_ERROR, MUYU, CHOUQIAN, WUXING"]
|
||||||
|
PlatformReq["platform_lcd_request_presentation()"]
|
||||||
|
Pending["lcd_direct pending request"]
|
||||||
|
Render["cp_lcd_render loop"]
|
||||||
|
Draw["draw RLE asset frame\nfrom /littlefs/lcd"]
|
||||||
|
Panel["ST7789 panel"]
|
||||||
|
|
||||||
|
CP --> DomainReq --> Resolve --> Catalog --> PlatformReq --> Pending --> Render --> Draw --> Panel
|
||||||
|
|
||||||
|
Draw --> Delay["vTaskDelay(frame_ms)"]
|
||||||
|
Delay --> Render
|
||||||
|
```
|
||||||
|
|
||||||
|
## Key And Local Event Flow
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart TD
|
||||||
|
GPIO["GPIO edge interrupt\nPTT GPIO15 / SW2 GPIO45"]
|
||||||
|
IsrQueue["key IRQ queue"]
|
||||||
|
KeyTask["cp_key_input\ndebounce and click state machine"]
|
||||||
|
SystemQueue["system event queue"]
|
||||||
|
EventTask["cp_system_event"]
|
||||||
|
PttState["PTT active state"]
|
||||||
|
Chouqian["SW2 short press\nDOMAIN_EXPRESSION_CHOUQIAN"]
|
||||||
|
Wuxing["SW2 double click\nDOMAIN_EXPRESSION_WUXING"]
|
||||||
|
Muyu["PTT double click\nDOMAIN_EXPRESSION_MUYU"]
|
||||||
|
|
||||||
|
GPIO --> IsrQueue --> KeyTask --> SystemQueue --> EventTask
|
||||||
|
EventTask --> PttState
|
||||||
|
EventTask --> Chouqian
|
||||||
|
EventTask --> Wuxing
|
||||||
|
EventTask --> Muyu
|
||||||
|
```
|
||||||
|
|
||||||
|
## Multimodal Runtime Flow
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
sequenceDiagram
|
||||||
|
participant CP as control_plane
|
||||||
|
participant Domain as domain
|
||||||
|
participant Platform as platform
|
||||||
|
participant WS as WebSocket server
|
||||||
|
participant Audio as ES8311 audio path
|
||||||
|
participant LCD as LCD expression
|
||||||
|
|
||||||
|
CP->>Domain: prepare multimodal start
|
||||||
|
CP->>Domain: register event callback
|
||||||
|
CP->>Domain: register downstream audio callback
|
||||||
|
CP->>CP: start multimodal watchdog task
|
||||||
|
CP->>Domain: control_plane_multimodal_start()
|
||||||
|
Domain->>Platform: open WebSocket transport
|
||||||
|
Platform->>WS: connect and send Start directive
|
||||||
|
|
||||||
|
WS-->>Platform: connected / task events
|
||||||
|
Platform-->>Domain: multimodal events
|
||||||
|
Domain-->>CP: event callback
|
||||||
|
|
||||||
|
WS-->>Platform: downstream audio binary
|
||||||
|
Platform-->>Domain: downstream audio callback
|
||||||
|
Domain-->>CP: control_plane_downstream_audio_bridge()
|
||||||
|
CP->>Audio: play downstream audio
|
||||||
|
|
||||||
|
alt transport/task/output error while STA connected
|
||||||
|
CP->>LCD: request DOMAIN_EXPRESSION_SERVER_ERROR
|
||||||
|
end
|
||||||
|
|
||||||
|
alt server responding starts
|
||||||
|
CP->>Audio: stop uplink if running
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
## Remote Logging Flow
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart TD
|
||||||
|
EspLog["ESP_LOGx / printf log"]
|
||||||
|
Hook["esp_log_set_vprintf hook"]
|
||||||
|
Filter["filter by CONFIG_TQ_REMOTE_LOG_MIN_LEVEL"]
|
||||||
|
RamQueue["RAM queue\nCONFIG_TQ_REMOTE_LOG_QUEUE_LEN"]
|
||||||
|
FlushTimer["periodic flush\nCONFIG_TQ_REMOTE_LOG_FLUSH_INTERVAL_MS"]
|
||||||
|
LogFS["/logfs/remote_logs\nLittleFS persistent queue"]
|
||||||
|
StaReady{"STA connected\nand realtime path idle?"}
|
||||||
|
Upload["HTTP POST JSON batch\nCONFIG_TQ_REMOTE_LOG_ENDPOINT"]
|
||||||
|
Server["remote_log_receiver.py\n/opt/logTools/logs"]
|
||||||
|
Backoff["exponential retry backoff"]
|
||||||
|
DropOld["trim old files\nCONFIG_TQ_REMOTE_LOG_MAX_FILES"]
|
||||||
|
CoreDump["detect flash coredump\nupload metadata report"]
|
||||||
|
|
||||||
|
EspLog --> Hook --> Filter --> RamQueue
|
||||||
|
RamQueue --> FlushTimer --> LogFS --> DropOld
|
||||||
|
LogFS --> StaReady
|
||||||
|
CoreDump --> StaReady
|
||||||
|
StaReady -- yes --> Upload --> Server
|
||||||
|
StaReady -- no --> Backoff --> StaReady
|
||||||
|
Upload -- fail --> Backoff
|
||||||
|
Upload -- success --> Delete["delete uploaded local file"]
|
||||||
|
```
|
||||||
|
|
||||||
|
## Daily Fortune Flow
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart TD
|
||||||
|
Task["cp_fortune task"]
|
||||||
|
WaitTime["wait for local time / next midnight / refresh request"]
|
||||||
|
WaitNetwork["wait for STA and multimodal readiness"]
|
||||||
|
Date["resolve local date"]
|
||||||
|
Fetch["control_plane_refresh_daily_fortune(date)"]
|
||||||
|
DomainFortune["domain fortune APIs\nbirth profile + fortune result"]
|
||||||
|
Http["HTTPS fortune API"]
|
||||||
|
Persist["persist fortune result"]
|
||||||
|
Notify["notify observers / UI configuration server"]
|
||||||
|
Retry["retry delay on failure"]
|
||||||
|
|
||||||
|
Task --> WaitTime --> WaitNetwork --> Date --> Fetch
|
||||||
|
Fetch --> DomainFortune --> Http
|
||||||
|
Http -- success --> Persist --> Notify --> WaitTime
|
||||||
|
Http -- failure --> Retry --> WaitTime
|
||||||
|
```
|
||||||
|
|
||||||
|
## Factory CLI Diagnostics Flow
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart LR
|
||||||
|
UART["UART0 serial input"]
|
||||||
|
CLI["factory CLI parser"]
|
||||||
|
Identity["identity / auth commands"]
|
||||||
|
LogStatus["log status"]
|
||||||
|
LogFlush["log flush"]
|
||||||
|
LogClear["log clear"]
|
||||||
|
RemoteLog["control_plane_remote_log_*"]
|
||||||
|
UARTOut["UART0 JSON/OK/ERROR output"]
|
||||||
|
|
||||||
|
UART --> CLI
|
||||||
|
CLI --> Identity --> UARTOut
|
||||||
|
CLI --> LogStatus --> RemoteLog --> UARTOut
|
||||||
|
CLI --> LogFlush --> RemoteLog --> UARTOut
|
||||||
|
CLI --> LogClear --> RemoteLog --> UARTOut
|
||||||
|
```
|
||||||
@@ -0,0 +1,117 @@
|
|||||||
|
# Firmware Pin Usage
|
||||||
|
|
||||||
|
This document summarizes the GPIOs used by the current firmware configuration.
|
||||||
|
The primary source of truth is `sdkconfig.defaults`; generated `sdkconfig`
|
||||||
|
differences are called out where they affect runtime behavior. Signal direction
|
||||||
|
is from the ESP32-S3 MCU perspective.
|
||||||
|
|
||||||
|
## Configured Firmware Pins
|
||||||
|
|
||||||
|
| GPIO | Signal / Config | Direction | Subsystem | Runtime use | Electrical / logic notes |
|
||||||
|
| ---: | --- | --- | --- | --- | --- |
|
||||||
|
| 1 | `CONFIG_MULTIMODAL_AUDIO_I2C_SDA_GPIO` | Bidirectional | Audio codec | ES8311 I2C SDA | I2C port 0, codec control bus |
|
||||||
|
| 2 | `CONFIG_MULTIMODAL_AUDIO_I2C_SCL_GPIO` | Output | Audio codec | ES8311 I2C SCL | I2C port 0, codec control bus |
|
||||||
|
| 3 | `CONFIG_TQ_SCREEN_RESET_PIN` | Output | LCD | ST7789 panel reset | Set high after GPIO init; `-1` disables hardware reset |
|
||||||
|
| 6 | `CONFIG_TQ_SCREEN_SPI_CS_GPIO` | Output | LCD | ST7789 SPI chip select | SPI2 host |
|
||||||
|
| 7 | `CONFIG_TQ_SCREEN_DC_GPIO` | Output | LCD | ST7789 data/command select | Initialized low |
|
||||||
|
| 9 | `CONFIG_TQ_SCREEN_BACKLIGHT_GPIO` | Output | LCD | LCD backlight enable | Active-high by default |
|
||||||
|
| 12 | `CONFIG_MULTIMODAL_AUDIO_PA_GPIO` | Output | Audio amplifier | PA enable / NS4150B control | Managed by codec GPIO interface |
|
||||||
|
| 13 | `CONFIG_TQ_STEPPER_IN1_GPIO` | Output | Turntable | ULN2003 stepper IN1 | Batched GPIO phase updates |
|
||||||
|
| 14 | `CONFIG_TQ_STEPPER_IN2_GPIO` | Output | Turntable | ULN2003 stepper IN2 | Batched GPIO phase updates |
|
||||||
|
| 15 | `CONFIG_MULTIMODAL_PTT_BUTTON_GPIO` | Input | Keys / multimodal | Push-to-talk button K2 | Active-low, internal pull-up enabled |
|
||||||
|
| 17 | `CONFIG_TQ_SCREEN_SPI_MOSI_GPIO` | Output | LCD | ST7789 SPI MOSI / SDA | SPI2 host |
|
||||||
|
| 18 | `CONFIG_TQ_SCREEN_SPI_CLK_GPIO` | Output | LCD | ST7789 SPI clock / SCK | SPI2 host, 20 MHz default |
|
||||||
|
| 21 | `CONFIG_TQ_STEPPER_IN3_GPIO` | Output | Turntable | ULN2003 stepper IN3 | Batched GPIO phase updates |
|
||||||
|
| 38 | `CONFIG_MULTIMODAL_AUDIO_I2S_MCLK_GPIO` | Output | Audio codec | ES8311 I2S MCLK | Enabled by `CONFIG_MULTIMODAL_AUDIO_USE_MCLK=y` |
|
||||||
|
| 39 | `CONFIG_MULTIMODAL_AUDIO_I2S_BCLK_GPIO` | Output | Audio codec | ES8311 I2S BCLK / SCLK | I2S port 0 |
|
||||||
|
| 40 | `CONFIG_MULTIMODAL_AUDIO_I2S_DOUT_GPIO` | Output | Audio codec | MCU PCM output to ES8311 DSDIN | I2S port 0 |
|
||||||
|
| 41 | `CONFIG_MULTIMODAL_AUDIO_I2S_WS_GPIO` | Output | Audio codec | ES8311 I2S WS / LRCK | I2S port 0 |
|
||||||
|
| 42 | `CONFIG_MULTIMODAL_AUDIO_I2S_DIN_GPIO` | Input | Audio codec | MCU PCM input from ES8311 ASDOUT | I2S port 0 |
|
||||||
|
| 45 | `CONFIG_TQ_SLOT_SWITCH_GPIO` | Input | Slot / key input | SW2 slot-machine feature switch | Active-low, internal pull-up enabled |
|
||||||
|
| 47 | `CONFIG_TQ_STEPPER_IN4_GPIO` | Output | Turntable | ULN2003 stepper IN4 | Batched GPIO phase updates |
|
||||||
|
| 48 | `CONFIG_TQ_CALIBRATION_SWITCH_GPIO` | Input | Turntable calibration | SW1 direction calibration microswitch | Active-low, internal pull-up enabled |
|
||||||
|
|
||||||
|
## Disabled Or Not Connected In Defaults
|
||||||
|
|
||||||
|
| Config | Value | Meaning |
|
||||||
|
| --- | ---: | --- |
|
||||||
|
| `CONFIG_TQ_SCREEN_SPI_MISO_GPIO` | `-1` | LCD MISO is not connected or not used. |
|
||||||
|
| `CONFIG_TQ_POWER_HOLD_GPIO` | `-1` | Power-hold output is disabled. |
|
||||||
|
| `CONFIG_TQ_SLOT_SWITCH_PULLDOWN` | unset | SW2 uses pull-up only. |
|
||||||
|
| `CONFIG_TQ_CALIBRATION_SWITCH_PULLDOWN` | unset | Calibration switch uses pull-up only. |
|
||||||
|
| `CONFIG_MULTIMODAL_PTT_BUTTON_PULLDOWN` | unset | PTT button uses pull-up only. |
|
||||||
|
|
||||||
|
## Console / Factory CLI
|
||||||
|
|
||||||
|
The factory CLI uses `UART_NUM_0` through the ESP-IDF UART driver without
|
||||||
|
project-specific GPIO remapping. The board reference map routes the debug UART
|
||||||
|
to the `RXD0` / `TXD0` nets on connector `J2`.
|
||||||
|
|
||||||
|
| Interface | Direction | Use |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| UART0 RX | Input | Factory CLI input and serial monitor input |
|
||||||
|
| UART0 TX | Output | ESP log output, factory CLI replies, serial monitor output |
|
||||||
|
|
||||||
|
## External Memory Pins
|
||||||
|
|
||||||
|
The project enables external PSRAM in octal mode. These are generated ESP-IDF
|
||||||
|
memory-interface settings in `sdkconfig`, not normal application GPIOs.
|
||||||
|
|
||||||
|
| GPIO | Config | Direction | Use | Notes |
|
||||||
|
| ---: | --- | --- | --- | --- |
|
||||||
|
| 26 | `CONFIG_SPIRAM_CS_IO` / `CONFIG_DEFAULT_PSRAM_CS_IO` | Memory bus | PSRAM CS | Reserved by ESP32-S3 memory interface |
|
||||||
|
| 30 | `CONFIG_SPIRAM_CLK_IO` / `CONFIG_DEFAULT_PSRAM_CLK_IO` | Memory bus | PSRAM clock | Reserved by ESP32-S3 memory interface |
|
||||||
|
|
||||||
|
Flash pins are controlled by the ESP32-S3 flash interface and are not assigned
|
||||||
|
by project GPIO configuration.
|
||||||
|
|
||||||
|
## Board Nets Present But Not Used By Current Firmware
|
||||||
|
|
||||||
|
These nets exist in `docs/gpio-map.md`, but the current firmware does not assign
|
||||||
|
them to an active project feature.
|
||||||
|
|
||||||
|
| GPIO / Net | Board function | Firmware status |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| GPIO0 / K1 | Switch to GND, commonly boot/download related | Not consumed by application code |
|
||||||
|
| GPIO4 | Unassigned | Not used |
|
||||||
|
| GPIO5 | Unassigned | Not used |
|
||||||
|
| GPIO8 | Unassigned | Not used |
|
||||||
|
| GPIO10 / `SWING_PWM` | Swing coil control interface | No current firmware driver/config found |
|
||||||
|
| GPIO11 | Unassigned | Not used |
|
||||||
|
| GPIO16 | Unassigned | Not used |
|
||||||
|
| GPIO35 | Unassigned | Not used |
|
||||||
|
| GPIO36 | Unassigned | Not used |
|
||||||
|
| GPIO37 | Unassigned | Not used |
|
||||||
|
| GPIO46 | Unassigned | Not used |
|
||||||
|
| GPIO19 / USB D- | USB | Board/system function; not configured by application code |
|
||||||
|
| GPIO20 / USB D+ | USB | Board/system function; not configured by application code |
|
||||||
|
|
||||||
|
## Current Generated `sdkconfig` Difference
|
||||||
|
|
||||||
|
`sdkconfig.defaults` enables the key input task:
|
||||||
|
|
||||||
|
```text
|
||||||
|
CONFIG_TQ_KEY_INPUT_ENABLE=y
|
||||||
|
```
|
||||||
|
|
||||||
|
The current generated `sdkconfig` has it disabled:
|
||||||
|
|
||||||
|
```text
|
||||||
|
# CONFIG_TQ_KEY_INPUT_ENABLE is not set
|
||||||
|
```
|
||||||
|
|
||||||
|
This means the defaults describe the intended project pin usage, while the
|
||||||
|
current generated build configuration may not actively start the interrupt key
|
||||||
|
input task unless `sdkconfig` is regenerated or updated.
|
||||||
|
|
||||||
|
## Source Files
|
||||||
|
|
||||||
|
- `sdkconfig.defaults`
|
||||||
|
- `sdkconfig`
|
||||||
|
- `main/Kconfig.projbuild`
|
||||||
|
- `docs/gpio-map.md`
|
||||||
|
- `components/platform/src/lcd_direct.c`
|
||||||
|
- `components/platform/src/platform_stepper_driver.c`
|
||||||
|
- `components/platform/src/multimodal/audio_pipeline/audio_pipeline_codec_impl.c`
|
||||||
|
- `components/control_plane/src/runtime/control_plane_key_input.c`
|
||||||
|
- `components/platform/src/platform_console_driver.c`
|
||||||
Binary file not shown.
Reference in New Issue
Block a user