Finalize I2C and SPI control architecture

This commit is contained in:
2026-08-23 00:54:04 +02:00
parent f12b9f43bf
commit 3056e81669
18 changed files with 38798 additions and 18067 deletions
+316
View File
@@ -0,0 +1,316 @@
# HubAudio — MCP23S17 GPIO Distribution
**Progetto:** HubAudio
**Revisione:** definitiva
**Data:** 2026-08-22
---
## Distribuzione GPIO
| IC | PORTA | GPIO | Segnale | Direzione | Pull |
|---|---|---|---|---|---|
| U34 | A | GPA0 | `SI4684_RESET` | OUT | UP |
| U34 | A | GPA1 | `SI4684_SMODE` | OUT | - |
| U34 | A | GPA2 | `SI4684_ANT_SEL` | OUT | - |
| U34 | A | GPA3 | `SI4684_INT` | IN | - |
| U34 | A | GPA4 | `ADAU1467_RESET` | OUT | UP |
| U34 | A | GPA5 | `ADAU1467_SELFBOOT` | OUT/STRAP | UP |
| U34 | A | GPA6 | `RESERVED` | — | - |
| U34 | A | GPA7 | `MIC_SOURCE_SELECT` | OUT | - |
| U34 | B | GPB0 | `MIC_DETECT` | IN | UP |
| U34 | B | GPB1 | `LINE_IN_DETECT` | IN | UP |
| U34 | B | GPB2 | `LINE_OUT_DETECT` | IN | UP |
| U34 | B | GPB3 | `JACK_DETECT` | IN | UP |
| U34 | B | GPB4 | `BQ25896_INT` | IN | UP |
| U34 | B | GPB5 | `BQ25896_PG#` | IN | UP |
| U34 | B | GPB6 | `BQ27441_GPOUT` | IN | UP |
| U34 | B | GPB7 | `TPS63020_PG` | IN | UP |
| U36 | A | GPA0 | `BT1035_RESET` | OUT | - |
| U36 | A | GPA1 | `BT1035_SYSCTRL` | OUT | DOWN |
| U36 | A | GPA2 | `UART_RESET` | OUT | UP |
| U36 | A | GPA3 | `UART_INT` | IN | - |
| U36 | A | GPA4 | `ETH_RST#` | OUT | UP |
| U36 | A | GPA5 | `ANALOG_POWER_EN` | OUT | - |
| U36 | A | GPA6 | `ETHERNET_POWER_EN` | OUT | - |
| U36 | A | GPA7 | `BQ25896_PSEL` | OUT | - |
| U36 | B | GPB0 | `INA228_ANALOG_ALERT` | IN | UP |
| U36 | B | GPB1 | `INA228_DIGITAL_ALERT` | IN | UP |
| U36 | B | GPB2 | `TEMP_PWR_ALERT` | IN | UP |
| U36 | B | GPB3 | `TEMP_ESP32_ALERT` | IN | UP |
| U36 | B | GPB4 | `TEMP_ETH_ALERT` | IN | UP |
| U36 | B | GPB5 | `TEMP_CODEC_ALERT` | IN | UP |
| U36 | B | GPB6 | `RESERVED` | — | - |
| U36 | B | GPB7 | `RESERVED` | — | - |
---
# Pull-up / Pull-down
## Pull-UP
Le seguenti linee hanno pull-up esterno:
- `SI4684_RESET`
- `ADAU1467_RESET`
- `ADAU1467_SELFBOOT`
- `MIC_DETECT`
- `LINE_IN_DETECT`
- `LINE_OUT_DETECT`
- `JACK_DETECT`
- `BQ25896_INT`
- `BQ25896_PG#`
- `BQ27441_GPOUT`
- `TPS63020_PG`
- `UART_RESET`
- `ETH_RST#`
- `INA228_ANALOG_ALERT`
- `INA228_DIGITAL_ALERT`
- `TEMP_PWR_ALERT`
- `TEMP_ESP32_ALERT`
- `TEMP_ETH_ALERT`
- `TEMP_CODEC_ALERT`
Per le linee open-drain/status viene utilizzato come valore nominale:
**10 kΩ**
In particolare:
- `BQ27441_GPOUT` → 10 kΩ
- `TPS63020_PG` → 10 kΩ
- `INA228_ANALOG_ALERT` → 10 kΩ
- `INA228_DIGITAL_ALERT` → 10 kΩ
- `BQ25896_INT` → 10 kΩ
- `BQ25896_PG#` → 10 kΩ
- `TEMP_PWR_ALERT` → 10 kΩ
- `TEMP_ESP32_ALERT` → 10 kΩ
- `TEMP_ETH_ALERT` → 10 kΩ
- `TEMP_CODEC_ALERT` → 10 kΩ
## Pull-DOWN
- `BT1035_SYSCTRL`**10 kΩ verso GND**
## Nessun pull esterno
- `SI4684_SMODE`
- `SI4684_ANT_SEL`
- `SI4684_INT`
- `MIC_SOURCE_SELECT`
- `BT1035_RESET`
- `UART_INT`
- `ANALOG_POWER_EN`
- `ETHERNET_POWER_EN`
- `BQ25896_PSEL`
- tutti i GPIO `RESERVED`
---
# Sensori di temperatura
Sono previsti sensori di temperatura **I²C** basati su **TMP117**.
I sensori sono distribuiti fisicamente sulla scheda per monitorare le zone termicamente più significative:
| Sensore | Zona | Posizione |
|---|---|---|
| `TEMP_PWR` | Dominio alimentazione | BOTTOM, vicino ai dispositivi di alimentazione |
| `TEMP_ESP32` | ESP32 | vicino all'ESP32 |
| `TEMP_ETH` | Ethernet / PHY | vicino al PHY Ethernet |
| `TEMP_CODEC` | Codec TAC5212 | vicino al codec |
I sensori condividono il bus I²C e vengono identificati tramite il relativo indirizzo `ADDR`.
Ogni sensore dispone di:
- alimentazione locale
- condensatore di bypass **100 nF**
- `SDA`
- `SCL`
- `ADDR`
- `ALERT`
### ALERT
L'uscita `ALERT` dei TMP117 viene utilizzata come segnalazione hardware verso il Device Manager:
- `TEMP_PWR_ALERT` → U36 GPB2
- `TEMP_ESP32_ALERT` → U36 GPB3
- `TEMP_ETH_ALERT` → U36 GPB4
- `TEMP_CODEC_ALERT` → U36 GPB5
Le linee `ALERT` sono ingressi del MCP23S17 e utilizzano un pull-up esterno da **10 kΩ**.
Il Device Manager può quindi ricevere immediatamente una segnalazione di superamento della soglia termica senza dover effettuare continuamente il polling dei sensori.
---
## Note sui dispositivi
### SI4684
`SI4684_RESET` è il reset active-low del dispositivo.
Il pull-up garantisce il rilascio del reset dopo la fase di power-up.
### ADAU1467
`ADAU1467_RESET` è active-low.
`ADAU1467_SELFBOOT` deve essere HIGH per il self-boot dalla EEPROM.
### TAC5212
Il codec `XTAC5212IRGER` è il **TAC5212**.
Non esiste un reset hardware dedicato da collegare al MCP23S17; il reset è gestito tramite la configurazione software del dispositivo.
**U34 GPA6 = RESERVED.**
### BT1035
`BT1035_RESET` non necessita di pull-up esterno perché il modulo dispone del proprio pull-up interno.
`BT1035_SYSCTRL` richiede invece il pull-down esterno.
### BQ27441
`GPOUT` è open-drain e il datasheet raccomanda esplicitamente una resistenza di pull-up da **10 kΩ**.
### TPS63020
`PG` è un'uscita **open-drain**. Il pull-up è quindi necessario quando il segnale viene utilizzato come ingresso digitale dal MCP23S17.
### INA228
`ALERT` è la linea di alert del monitor e viene utilizzata come ingresso verso il MCP23S17; è prevista con pull-up esterno.
### TMP117
Il TMP117 è utilizzato come sensore di temperatura locale.
La comunicazione avviene tramite I²C. Il pin `ALERT` viene utilizzato per generare una segnalazione hardware verso il Device Manager tramite U36.
Ogni sensore dispone di un proprio indirizzo I²C tramite il pin `ADDR`.
---
# Regola generale
Ogni net deve avere **una sola resistenza fisica di pull-up/pull-down**.
Se una net viene condivisa da più dispositivi, non devono essere installate resistenze duplicate sui vari dispositivi.
Il pull-up interno del MCP23S17 non viene utilizzato come sostituto dei pull-up esterni delle linee di stato/open-drain.
Per le linee `ALERT` dei TMP117 viene mantenuto il pull-up esterno da **10 kΩ**.
---
# Distribuzione funzionale
## U34 PORTA — Audio / Radio Control
| GPIO | Funzione |
|---|---|
| GPA0 | SI4684 RESET |
| GPA1 | SI4684 SMODE |
| GPA2 | SI4684 ANT SEL |
| GPA3 | SI4684 INT |
| GPA4 | ADAU1467 RESET |
| GPA5 | ADAU1467 SELFBOOT |
| GPA6 | RESERVED |
| GPA7 | MIC SOURCE SELECT |
## U34 PORTB — Detection / Power Status
| GPIO | Funzione |
|---|---|
| GPB0 | MIC DETECT |
| GPB1 | LINE IN DETECT |
| GPB2 | LINE OUT DETECT |
| GPB3 | JACK DETECT |
| GPB4 | BQ25896 INT |
| GPB5 | BQ25896 PG# |
| GPB6 | BQ27441 GPOUT |
| GPB7 | TPS63020 PG |
## U36 PORTA — BT / UART / Ethernet / Power
| GPIO | Funzione |
|---|---|
| GPA0 | BT1035 RESET |
| GPA1 | BT1035 SYSCTRL |
| GPA2 | UART RESET |
| GPA3 | UART INT |
| GPA4 | ETH RESET |
| GPA5 | ANALOG POWER EN |
| GPA6 | ETHERNET POWER EN |
| GPA7 | BQ25896 PSEL |
## U36 PORTB — Power / Temperature Monitoring
| GPIO | Funzione |
|---|---|
| GPB0 | INA228 ANALOG ALERT |
| GPB1 | INA228 DIGITAL ALERT |
| GPB2 | TEMP PWR ALERT |
| GPB3 | TEMP ESP32 ALERT |
| GPB4 | TEMP ETH ALERT |
| GPB5 | TEMP CODEC ALERT |
| GPB6 | RESERVED |
| GPB7 | RESERVED |
---
# Tabella resistenze da inserire nello schematico
| Net | Resistenza | Collegamento |
|---|---:|---|
| `SI4684_RESET` | 10 kΩ | VIO → RESET |
| `ADAU1467_RESET` | 10 kΩ | IOVDD → RESET |
| `ADAU1467_SELFBOOT` | 10 kΩ | IOVDD → SELFBOOT |
| `MIC_DETECT` | 10 kΩ | VIO → DETECT |
| `LINE_IN_DETECT` | 10 kΩ | VIO → DETECT |
| `LINE_OUT_DETECT` | 10 kΩ | VIO → DETECT |
| `JACK_DETECT` | 10 kΩ | VIO → DETECT |
| `BQ25896_INT` | 10 kΩ | VIO → INT |
| `BQ25896_PG#` | 10 kΩ | VIO → PG# |
| `BQ27441_GPOUT` | 10 kΩ | VDD → GPOUT |
| `TPS63020_PG` | 10 kΩ | VOUT/VIO → PG |
| `BT1035_SYSCTRL` | 10 kΩ | SYSCTRL → GND |
| `UART_RESET` | 10 kΩ | VIO → RESET |
| `ETH_RST#` | 10 kΩ | VIO → RESET# |
| `INA228_ANALOG_ALERT` | 10 kΩ | VIO → ALERT |
| `INA228_DIGITAL_ALERT` | 10 kΩ | VIO → ALERT |
| `TEMP_PWR_ALERT` | 10 kΩ | VIO → ALERT |
| `TEMP_ESP32_ALERT` | 10 kΩ | VIO → ALERT |
| `TEMP_ETH_ALERT` | 10 kΩ | VIO → ALERT |
| `TEMP_CODEC_ALERT` | 10 kΩ | VIO → ALERT |
---
# Stato
**U34:** assegnazione completa.
**U36:** assegnazione completa.
**TAC5212:** nessun GPIO dedicato al reset.
**BT1035_RESET:** nessun pull esterno.
**BT1035_SYSCTRL:** 10 kΩ pull-down.
**Linee open-drain/status:** pull-up 10 kΩ.
**TMP117:** 4 sensori I²C distribuiti nelle zone termicamente significative.
**TMP117 ALERT:** collegati al Device Manager tramite U36 GPB2GPB5.
**U34 GPA6:** RESERVED.
**U36 GPB6GPB7:** RESERVED.
**INTB U34/U36:** non collegati intenzionalmente.