317 lines
8.3 KiB
Markdown
317 lines
8.3 KiB
Markdown
# 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 GPB2–GPB5.
|
||
|
||
**U34 GPA6:** RESERVED.
|
||
|
||
**U36 GPB6–GPB7:** RESERVED.
|
||
|
||
**INTB U34/U36:** non collegati intenzionalmente.
|