Files
HubAudio/docs/architecture/HubAudio-SPI-Architecture.md
T

177 lines
5.4 KiB
Markdown

# HubAudio — SPI Bus Map
**Progetto:** HubAudio
**Revisione:** definitiva
**Data:** 2026-08-23
## SPI Bus Architecture
HubAudio utilizza un bus SPI principale con ESP32-S31-WROOM-3 come master.
Il bus principale condivide:
- `SPI_SCLK`
- `SPI_MOSI`
- `SPI_MISO`
Ogni slave dispone di una propria linea Chip Select (`CS`).
---
## SPI Main Bus
| IC | Dispositivo | Ruolo | CS |
|---|---|---|---|
| U5 | XTAC5212IRGER | Audio Codec | `SPI_CODEC_CS` |
| U34 | MCP23S17-E/ML | Device Manager A | `SPI_DEV_MAN_A_CS` |
| U36 | MCP23S17-E/ML | Device Manager B | `SPI_DEV_MAN_B_CS` |
| U18 | ADAU1467WBCPZ300R | Audio DSP | `SPI_ADAU1467_CS` |
| U12 | Si4684-A10-GM | Radio | `SPI_SI4684_CS` |
| U10 | W25Q128JVS | Flash | `SPI_W25Q128_CS` |
| U30 | SC16IS740IPW,128 | UART Bridge | `SPI_UART_CS` |
### Shared SPI Signals
| Segnale | Funzione |
|---|---|
| `SPI_SCLK` | SPI Clock |
| `SPI_MOSI` | Master Out / Slave In |
| `SPI_MISO` | Master In / Slave Out |
Il master SPI è l'**ESP32-S31-WROOM-3 (U11)**.
Le linee `SPI_SCLK`, `SPI_MOSI` e `SPI_MISO` sono condivise tra gli slave
del bus principale.
Le linee `CS` sono indipendenti e vengono utilizzate per selezionare
un singolo slave alla volta.
---
## Chip Select
| CS | Slave |
|---|---|
| `SPI_CODEC_CS` | U5 — TAC5212 |
| `SPI_DEV_MAN_A_CS` | U34 — MCP23S17 |
| `SPI_DEV_MAN_B_CS` | U36 — MCP23S17 |
| `SPI_ADAU1467_CS` | U18 — ADAU1467 |
| `SPI_SI4684_CS` | U12 — Si4684 |
| `SPI_W25Q128_CS` | U10 — W25Q128JVS |
| `SPI_UART_CS` | U30 — SC16IS740 |
---
# Private SPI Buses
Alcuni dispositivi dispongono di una memoria SPI dedicata e non fanno
parte del bus SPI principale dell'ESP32.
## ADAU1467 — Private SPI
| Master | Slave | Dispositivo |
|---|---|---|
| U18 | U24 | 25AA1024-I/SM |
**Master:** ADAU1467
**Slave:** 25AA1024 SPI EEPROM
La memoria U24 utilizza il bus SPI privato dell'ADAU1467.
U24 **non** è uno slave del bus SPI principale dell'ESP32 e pertanto non
possiede una linea `CS` appartenente al namespace `SPI_*` del bus principale.
---
## Si4684 — Private SPI
| Master | Slave | Dispositivo |
|---|---|---|
| U12 | U27 | W25Q16JW |
**Master:** Si4684
**Slave:** W25Q16JW SPI Flash
La memoria U27 utilizza il bus SPI privato del Si4684.
U27 **non** è uno slave del bus SPI principale dell'ESP32 e pertanto non
possiede una linea `CS` appartenente al namespace `SPI_*` del bus principale.
---
# SPI Topology
```text
ESP32-S31-WROOM-3
U11
┌─────────────┼─────────────┐
│ │ │
SPI_SCLK SPI_MOSI SPI_MISO
│ │ │
┌─────────┴─────────────┴─────────────┴─────────┐
│ SPI MAIN BUS │
│ │
├── U5 TAC5212 ← SPI_CODEC_CS │
├── U34 MCP23S17 ← SPI_DEV_MAN_A_CS │
├── U36 MCP23S17 ← SPI_DEV_MAN_B_CS │
├── U18 ADAU1467 ← SPI_ADAU1467_CS │
├── U12 Si4684 ← SPI_SI4684_CS │
├── U10 W25Q128JVS ← SPI_W25Q128_CS │
└── U30 SC16IS740 ← SPI_UART_CS │
└────────────────────────────────────────────────┘
PRIVATE SPI BUS PRIVATE SPI BUS
ADAU1467 Si4684
U18 U12
│ │
│ SPI │ SPI
▼ ▼
U24 25AA1024 U27 W25Q16JW
SPI Slave Summary
Bus Master Slave Device
Main SPI ESP32 U11 U5 TAC5212
Main SPI ESP32 U11 U34 MCP23S17
Main SPI ESP32 U11 U36 MCP23S17
Main SPI ESP32 U11 U18 ADAU1467
Main SPI ESP32 U11 U12 Si4684
Main SPI ESP32 U11 U10 W25Q128JVS
Main SPI ESP32 U11 U30 SC16IS740
Private SPI ADAU1467 U18 U24 25AA1024
Private SPI Si4684 U12 U27 W25Q16JW
Design Rules
SPI_SCLK, SPI_MOSI e SPI_MISO del bus principale sono condivisi tra
tutti gli slave del bus.
Ogni slave del bus principale deve avere una propria linea CS.
Deve essere attivo un solo CS alla volta durante una transazione SPI.
U24 e U27 non appartengono al bus SPI principale.
U24 è controllata direttamente dall'ADAU1467.
U27 è controllata direttamente dal Si4684.
I Chip Select dei bus privati non devono essere confusi con i CS
del bus SPI principale dell'ESP32.
La nomenclatura SPI_*_CS identifica esclusivamente le linee Chip Select
del bus SPI principale.
Main SPI Chip Select Map
SPI_CODEC_CS → U5 TAC5212
SPI_DEV_MAN_A_CS → U34 MCP23S17
SPI_DEV_MAN_B_CS → U36 MCP23S17
SPI_ADAU1467_CS → U18 ADAU1467
SPI_SI4684_CS → U12 Si4684
SPI_W25Q128_CS → U10 W25Q128JVS
SPI_UART_CS → U30 SC16IS740
Stato
SPI principale: 7 slave.
SPI privato ADAU1467: 1 slave.
SPI privato Si4684: 1 slave.
Totale dispositivi SPI: 9.
Master SPI principale: ESP32-S31-WROOM-3.
Master SPI privati: ADAU1467 e Si4684.