Refactor HubAudio architecture domains and add documentation tooling

This commit is contained in:
2026-08-01 23:34:38 +02:00
parent 30f2656c85
commit 145a651e2a
15 changed files with 1537 additions and 201 deletions
@@ -1,4 +1,4 @@
# ADR-001: ADAU1467 as Audio Domain Master
# ADR-001: Audio Processor as Audio Domain Master
- Status: Accepted
- Date: 2026-08-01
@@ -9,8 +9,8 @@
HubAudio is designed as a modular digital audio platform integrating several
audio sources and destinations:
- ESP32-S3 streaming subsystem
- Si4684 radio receiver
- System Controller streaming subsystem
- Radio Receiver radio receiver
- Bluetooth RX/TX modules
- Digital audio converters
- Analog CODEC/DAC stages
@@ -22,13 +22,13 @@ The system requires a central component responsible for:
- timing synchronization
- audio stream management
The ADAU1467 has been selected as the central audio processor.
The Audio Processor has been selected as the central audio processor.
## Decision
The ADAU1467 is the master component of the HubAudio Audio Domain.
The Audio Processor is the master component of the HubAudio Audio Domain.
The ADAU1467 is responsible for:
The Audio Processor is responsible for:
- DSP processing
- audio routing
@@ -37,10 +37,10 @@ The ADAU1467 is responsible for:
- audio clock generation
- synchronization of external audio peripherals
The ADAU1467 is considered the audio domain master.
The Audio Processor is considered the audio domain master.
The ESP32-S3 participates in the Audio Domain as a digital audio source. It does not act as the audio timing master or routing controller. Its role inside the audio domain is equivalent to other digital audio sources.
The ESP32-S3 has a dual role:
The System Controller participates in the Audio Domain as a digital audio source. It does not act as the audio timing master or routing controller. Its role inside the audio domain is equivalent to other digital audio sources.
The System Controller has a dual role:
- audio source inside the Audio Domain
system supervisor inside the Control Domain
@@ -71,7 +71,7 @@ It operates as system supervisor and is responsible for:
## Rationale
The ADAU1467 is selected not only as a DSP processor but as the central
The Audio Processor is selected not only as a DSP processor but as the central
controller of the digital audio domain.
This decision defines the HubAudio architecture.
+19 -19
View File
@@ -11,9 +11,9 @@ control and firmware management.
The main devices involved are:
- ESP32-S3 system controller
- ADAU1467 audio processor
- Si4684 radio receiver
- System Controller system controller
- Audio Processor audio processor
- Radio Receiver radio receiver
A clear separation between system control and internal device management is
required.
@@ -25,9 +25,9 @@ audio transport interface.
The SPI architecture is divided into independent functional domains.
The ESP32-S3 operates as the master of the system control SPI bus.
The System Controller operates as the master of the system control SPI bus.
The ADAU1467 and Si4684 expose SPI slave interfaces for external
The Audio Processor and Radio Receiver expose SPI slave interfaces for external
configuration and control.
The internal management of each device remains under the responsibility of
@@ -37,48 +37,48 @@ the device itself.
System control SPI domain:
ESP32-S3
System Controller
SPI MASTER
|
+---------+---------+
| |
ADAU1467 Si4684
Audio Processor Radio Receiver
SPI SLAVE SPI SLAVE
## ADAU1467 Configuration Domain
## Audio Processor Configuration Domain
The ADAU1467 manages its own external configuration memory through its
The Audio Processor manages its own external configuration memory through its
internal SPI master interface.
ADAU1467
Audio Processor
SPI MASTER
|
25AA1024
Audio EEPROM
DSP Program / Configuration Memory
The ESP32-S3 controls the ADAU1467 through the external SPI interface but
The System Controller controls the Audio Processor through the external SPI interface but
does not directly access the DSP configuration memory during normal
operation.
## Si4684 Firmware Domain
## Radio Receiver Firmware Domain
The Si4684 firmware loading and configuration process is managed through
The Radio Receiver firmware loading and configuration process is managed through
commands exchanged on the external SPI control interface.
ESP32-S3
System Controller
SPI MASTER
|
Si4684
Radio Receiver
|
@@ -88,8 +88,8 @@ commands exchanged on the external SPI control interface.
Internal RAM
The ESP32-S3 controls the initialization process but does not directly access
the internal operational memory of the Si4684.
The System Controller controls the initialization process but does not directly access
the internal operational memory of the Radio Receiver.
## Consequences
@@ -108,7 +108,7 @@ the internal operational memory of the Si4684.
## Rationale
The ESP32-S3 supervises the complete HubAudio system but does not replace the
The System Controller supervises the complete HubAudio system but does not replace the
internal controllers of specialized devices.
Each component remains responsible for its own functional domain.
@@ -10,8 +10,8 @@ HubAudio integrates multiple digital audio sources and destinations:
Sources:
- ESP32-S3 streaming subsystem
- Si4684 radio receiver
- System Controller streaming subsystem
- Radio Receiver radio receiver
- Bluetooth receiver
- Optical digital input
@@ -25,7 +25,7 @@ A deterministic and scalable digital audio routing architecture is required.
## Decision
The ADAU1467 is the central routing element of the Audio Domain.
The Audio Processor is the central routing element of the Audio Domain.
Each major audio device is assigned to a dedicated serial audio interface.
@@ -35,36 +35,36 @@ The preferred architecture is:
One audio device = One dedicated I2S interface
The ADAU1467 operates as the audio timing reference.
The Audio Processor operates as the audio timing reference.
External audio devices operate as I2S slaves whenever supported.
## Audio Input Allocation
| ADAU1467 Port | Device | Function |
| Audio Processor Port | Device | Function |
|---|---|---|
| SDATA_IN0 | ESP32-S3 | Network audio stream |
| SDATA_IN1 | Si4684 | Radio audio |
| SDATA_IN0 | System Controller | Network audio stream |
| SDATA_IN1 | Radio Receiver | Radio audio |
| SDATA_IN2 | DECODEC | Optical digital input |
| SDATA_IN3 | Bluetooth RX | Wireless audio input |
ESP32-S3 --------
Si4684 ---------
DECODEC ----------+---- ADAU1467
System Controller --------
Radio Receiver ---------
DECODEC ----------+---- Audio Processor
BT RX ---------/
## Audio Output Allocation
| ADAU1467 Port | Device | Function |
| Audio Processor Port | Device | Function |
|---|---|---|
| SDATA_OUT0 | CODEC/DAC | Analog audio output |
| SDATA_OUT1 | Bluetooth TX | Wireless audio output |
| SDATA_OUT2 | ENCODEC | Optical digital output |
| SDATA_OUT3 | Reserved | Future expansion |
ADAU1467
Audio Processor
|
+------------+------------+
@@ -73,7 +73,7 @@ BT RX ---------/
## Clocking
The ADAU1467 provides the master audio timing reference.
The Audio Processor provides the master audio timing reference.
The audio clock domain consists of:
@@ -105,4 +105,4 @@ domain.
HubAudio prioritizes signal integrity, maintainability and deterministic
audio behavior over maximum bus utilization.
The ADAU1467 acts as the central audio router of the system.
The Audio Processor acts as the central audio router of the system.
@@ -7,7 +7,7 @@
HubAudio integra sottosistemi con caratteristiche elettriche molto differenti:
- elaborazione digitale (ESP32-S3)
- elaborazione digitale (System Controller)
- DSP audio
- ricevitore radio
- Bluetooth