// TOOL

USB-PD Decoder

Decodifica e costruisci i Power Data Object (PDO) di USB Power Delivery, con mappa bit-per-bit dei 32 bit e simulazione della negoziazione. Strumento dimostrativo.

1 · PDO esadecimali

Un PDO per riga (con o senza 0x). Sono i Source Capabilities grezzi.

2 · Decodifica

Negoziatore (sink → source)

Simula la richiesta del sink sui PDO della modalità Decode: scegli una tensione/corrente o chiedi la potenza massima.

Cos’è un PDO?

Un Power Data Object (PDO) è una parola da 32 bit con cui una sorgente USB-C dichiara un profilo di alimentazione, i Source Capabilities. I bit 31-30 ne danno il tipo; il sink sceglie un PDO e risponde con un Request Data Object (RDO). Lo strumento decodifica e ricostruisce i PDO, ma non gestisce il livello pacchetto né quello fisico.

Un Power Data Object è una parola da 32 bit con cui una sorgente USB-C dichiara un profilo di alimentazione (i Source Capabilities). I bit 31-30 ne danno il tipo; un sink sceglie un PDO e risponde con un Request Data Object (RDO). Questo strumento decodifica e ricostruisce i PDO, ma non gestisce il livello pacchetto né il livello fisico del protocollo.

Quali sono i tipi di PDO e come si scalano?

Il fattore di scala dipende dalla famiglia: Fixed, Battery e Variable codificano la tensione a 50 mV; la corrente Fixed/Variable a 10 mA, la potenza Battery a 250 mW. Gli APDO PPS e AVS usano 100 mV, con corrente a 50 mA o potenza PDP a 1 W. L’AVS è espresso in potenza perché la corrente varia con la tensione.

Il fattore di scala dei campi dipende dalla famiglia — è l’errore più comune:

Tipo bit 31-30 Tensione Corrente / Potenza
Fixed Supply0050 mV10 mA (corrente)
Battery0150 mV250 mW (potenza)
Variable1050 mV10 mA (corrente)
SPR PPS (APDO)11 · 00100 mV50 mA (corrente)
EPR AVS (APDO)11 · 01100 mV1 W (PDP, potenza)

L’EPR Fixed (28/36/48 V) usa lo stesso encoding del Fixed, con tensione > 20 V. Per il PPS attenzione: lo step di regolazione runtime è 20 mV, ma la codifica dei limiti nell’APDO è a 100 mV — cose distinte. Per l’EPR AVS la corrente disponibile varia con la tensione, perciò l’offerta è espressa in potenza (PDP) e non in corrente.

Struttura del Fixed PDO

Il primo Fixed PDO porta anche i flag di capacità (layout USB-PD R3.1, Source):

b31-30  PDO type (00 = Fixed)
b29     Dual-Role Power
b28     USB Suspend Supported
b27     Unconstrained Power
b26     USB Communications Capable
b25     Dual-Role Data
b24     Unchunked Extended Messages
b23     EPR Mode Capable
b22     Reserved
b21-20  Peak Current
b19-10  Voltage      (50 mV/unit)
b9-0    Max Current  (10 mA/unit)

Come funziona la negoziazione PDO → RDO?

Il negoziatore applica una selezione semplificata: per una tensione richiesta preferisce il Fixed esatto, poi un APDO programmabile (PPS/AVS) che copra il valore, infine Variable o Battery; con «potenza massima» sceglie il PDO a potenza disponibile più alta. Non è la macchina a stati del Policy Engine. L’EPR ammette fino a 13 posizioni di PDO.

Il negoziatore qui sopra applica una selezione semplificata: per una tensione richiesta preferisce il Fixed esatto, poi un APDO programmabile (PPS/AVS) che copra il valore, infine Variable/Battery; con «potenza massima» sceglie il PDO a potenza disponibile più alta. Non è la macchina a stati completa del Policy Engine: serve a leggere quale PDO verrebbe scelto e quale RDO ne risulta. L’EPR ammette fino a 13 posizioni di PDO.

Quali sono i limiti dello strumento?

Lo strumento decodifica e codifica solo i PDO/RDO a 32 bit: niente CRC, header di pacchetto o livello fisico BMC. Non verifica la coerenza elettrica reale della sorgente. L’EPR AVS è espresso in potenza (PDP) e la corrente a una data tensione è derivata come P/V. Il negoziatore è una selezione didattica, non la negoziazione USB-PD completa con messaggi e timer.

  • Decodifica/codifica solo i PDO/RDO a 32 bit: niente CRC, header di pacchetto o livello fisico BMC.
  • Nessuna verifica di coerenza elettrica reale della sorgente: i valori sono quelli dichiarati nei bit.
  • L’EPR AVS è espresso in potenza (PDP); la corrente a una data tensione è derivata come P/V.
  • Il negoziatore è una selezione didattica, non la negoziazione USB-PD completa con messaggi e timer.

Riferimenti

  • USB Power Delivery Specification R3.1 / R3.2 — USB-IF (Source Capabilities, PDO/RDO, APDO).
  • Layout flag Fixed PDO allineato a Linux kernel include/linux/usb/pd.h.

Approfondisci: wiki Anatomia di un PDO USB-PD →