Hub alimentato dal bus USB: più di 100 mA per dispositivo?


11

Vorrei porre una domanda abbastanza specifica sulla gestione dell'alimentazione USB.

Prima di tutto, illustrerò il design del mio dispositivo. È un driver di linea di segnale simmetrico con un codec audio incorporato per il mio sistema di altoparlanti fai-da-te. Il dispositivo è diviso internamente in due blocchi per lo più indipendenti: il driver di linea con un MCU di controllo e il codec audio (PCM2706 di TI). Entrambi necessitano di connettività dati USB (tramite un FT232R per il blocco driver) e l'intero dispositivo deve essere alimentato dal bus. I due blocchi saranno collegati tra loro da un chip hub USB, producendo una singola connessione USB uplink al PC. Mi aspetto che il consumo del palco del conducente sia compreso tra 100 e 200 mA (sicuramente più di un'unità di carico).

Ecco il problema: secondo le specifiche USB, un hub alimentato dal bus può fornire solo un'unità per porta downstream mentre estrae massimo 5 unità dall'upstream. Mi piacerebbe sapere cosa farebbe l'hub se avessi richiesto due unità tramite FT232 per il palco del conducente. Non verrà raggiunto il limite di 5 unità a monte (1 unità per l'hub, 1 unità per il codec e due per il driver), quindi il computer dovrebbe essere fisicamente in grado di fornire quella corrente.

Per il chip hub, ho controllato http://www.ti.com/lit/ds/symlink/tusb2036.pdf . C'è un'opzione di modalità di alimentazione "ganged", questo sarebbe di aiuto? O il chip si rifiuta di concedere due unità al conducente? E in questo caso, c'è qualche soluzione sporca?

Sono consapevole del requisito secondo cui anche i dispositivi ad alta potenza devono assorbire max 100 mA durante l'enumerazione; questo non è un problema in quanto FT232 è in grado di accendere il driver subito dopo l'enumerazione. L'hub accenderà anche le fasi in modo indipendente.

Spero di aver chiarito il mio problema abbastanza chiaramente e grazie per il tuo tempo in anticipo :)

AGGIORNARE:

Ho fatto qualche ricerca in più sul chip TUSB2036. La protezione da sovracorrente può essere disattivata dal pin / OCPROT. L'hub quindi segnala al controller di root che non è in grado di rilevare la sovracorrente. C'è un avvertimento nel foglio dati, che la protezione OC è richiesta dalla specifica USB 2.0 - questo non importa per me, ho solo bisogno di 1.1 a piena velocità. L'hub di root del PC dovrebbe quindi fornire IMO a 500 mAmps all'intero dispositivo. Quindi, potrei impostare FT232 del driver in modo che richieda solo 100 mA e l'hub non saprebbe mai se avrei superato il limite (rispettando naturalmente i 500 mA dal PC). Qualcuno può dire se questo potrebbe funzionare?

Risposte:


3

La mia comprensione del design è che l'intero dispositivo si trova su un singolo PCB, si trova all'interno di un singolo contenitore ed è collegato all'host tramite un singolo cavo USB. Hai integrato un hub sul PCB per consentire a entrambi i dispositivi di comunicare con il PC. La seguente risposta dipenderà da questi presupposti, se è composta da più dispositivi separati collegati da cavi scollegabili, ciò cambia le cose.

In questo caso, ti suggerisco di configurare semplicemente l'hub per enumerarlo come dispositivo ad alta potenza e condividere i 500 mA risultanti su tutta la scheda. È interessante notare che lo schema di esempio della porta con gange di TI mostra i dispositivi tutti collegati tra loro, anche quando usano il loro circuito integrato di gestione dell'alimentazione:

inserisci qui la descrizione dell'immagine

La linea di alimentazione 5V in ingresso (evidenziata in blu, poiché è una delle due reti a cui siamo interessati in questo complicato schema) è collegata a un IC di gestione dell'alimentazione TPS2041 (una descrizione generosa, è in realtà solo un FET che si spegne quando rileva 500 mA di corrente passata). Tuttavia, ciascuno degli ingressi viene messo in cortocircuito insieme e anche ciascuno degli output viene messo in cortocircuito insieme e quindi distribuito a ciascuna delle porte a valle (la rete mostrata in rosso).

Fondamentalmente, stanno eseguendo la protezione da sovracorrente per tutte le sezioni a valle in un singolo circuito integrato. Non hanno modo di rilevare se hanno tre unità a bassa potenza (100 mA), una singola unità ad alta potenza o due unità a bassa potenza e un'unità da 300 mA. Tutte queste opzioni sono accettabili sulla base di questo progetto di riferimento. Hai scritto:

Secondo le specifiche USB, un hub alimentato dal bus può fornire solo un'unità per porta downstream mentre disegna max 5 unità ...

ma, per rispondere direttamente alla tua domanda, questo progetto di Texas Instruments (un membro del gruppo USB e un importante implementatore) mostra che devi solo garantire che la corrente totale sia inferiore a 5 unità.


Per risolvere il tuo problema, le regole dichiarano (prese dall'eccellente USB in un documento in poche parole ):

Le funzioni alimentate dal bus ad alta potenza assorbiranno tutta la sua potenza dal bus e non potranno assorbire più di un carico di unità fino a quando non sarà configurato, dopodiché potrà scaricare 5 carichi di unità (massimo 500 mA) a condizione che lo richieda nel suo descrittore.

Se puoi garantire che il tuo palcoscenico del conducente non inizi a disegnare corrente fino a quando il dispositivo non è stato configurato (il che potrebbe essere semplice come un ritardo temporizzato nel controller host), puoi semplicemente collegare tutto insieme. Poiché l'intero circuito si trova su un singolo PCB e non ha porte downstream accessibili all'utente, probabilmente è anche possibile escludere il TPS2041 e progettare semplicemente il sistema in modo che non richieda più di 500 mA di corrente in qualsiasi stato.

Un altro vantaggio dell'enumerazione come dispositivo ad alta potenza è il miglioramento delle specifiche della tensione di ingresso. Dopo essere stato elencato come dispositivo a bassa potenza, l'host deve solo produrre 4,40 V sulla porta a monte (che sarà inferiore sul dispositivo a causa della resistenza del cavo). Quando sei elencato come dispositivo ad alta potenza, la specifica garantisce che otterrai 4,75 V, che è più probabile che rientri nell'intervallo operativo di tutti i componenti 5V che potresti utilizzare.


Grazie per un'ottima risposta Ma come configuro l'hub in quel modo? Ho bisogno della EEPROM esterna o devo semplicemente collegare il pin / GANGED a terra (e gli altri pin di configurazione secondo lo schema che hai inviato)?
Ladislav

1
Dovresti legare! GANGED a terra e! EXTMEM a 3.3V. Tuttavia, la EEPROM esterna potrebbe essere utile: in caso contrario il dispositivo verrà visualizzato come "hub USB generico" sul PC. In alternativa, potresti probabilmente emulare una EEPROM con il tuo microcontrollore di bordo (configura una delle interfacce I2C in modo che funga da slave). Quindi potresti segnalarlo come un "driver di sistema di altoparlanti e controller di codec" o qualcosa del genere.
Kevin Vermeer,

5

Ho progettato una scheda attorno a quell'hub.

Nella mia applicazione, consentiva l'accesso a un FT232 e un FT245.

Se tutto è sul tuo PCB, ti consiglio di ignorare completamente tutti i sistemi di protezione da sovracorrente. Dopotutto, se qualcosa sul tuo PCB fallisce, l'intera cosa avrà bisogno di lavoro, quindi rendere il dispositivo in grado di gestire un guasto parziale è una specie di punto controverso.

Nella mia situazione, ho legato il TUSB per richiedere i 500 ma completi e disabilitare la protezione da sovracorrente, e ho eseguito tutto direttamente dall'USB 5.0v. Ho raggiunto questo obiettivo forzando l'hub a segnalare come auto-alimentato all'host upstream.

Ho realizzato un paio di schede, senza problemi reali, quindi sembra una strategia perfettamente praticabile. Inoltre è stato utilizzato con diversi computer diversi, quindi mi sento abbastanza sicuro nell'usarlo così com'è.

Naturalmente, se questo è per un dispositivo di produzione, piuttosto che un progetto personale o un test-harness (che è quello che è nel mio caso), è un problema completamente diverso.

inserisci qui la descrizione dell'immagine

(Vedi la nota sullo schema)


Per quello che vale, puoi spesso abusare in modo abbastanza orribile della maggior parte delle porte USB moderne senza troppi problemi. Molti di loro possono fornire molta più energia rispetto ai 500ma per i quali sono classificati, senza troppi problemi.
Inoltre, la maggior parte di essi (tutto ciò che ho testato, escludendo alcuni laptop ) fornirà felicemente l'intera 500ma senza che un dispositivo debba enumerare affatto.

Tuttavia, questo varia da scheda madre a scheda madre, a seconda di come è progettato l'host USB. Il tuo chilometraggio può variare.


Sì, ci ho pensato, ma come hai detto, questo varia da MB a MB. Il dispositivo non verrà prodotto in migliaia, ma ho bisogno che sia il più interoperabile possibile, quindi "Funzionerebbe" su qualsiasi computer. Grazie comunque, le osservazioni pratiche sono altrettanto preziose :).
Ladislav

@Ladislav - Non credo che ci sia comunque modo di evitare la necessità di spegnere e riaccendere i dispositivi a valle senza violare almeno un po 'le specifiche USB.
Connor Wolf,

Vale la pena notare che se si collega il dispositivo per segnalarlo come alimentato dal bus e non si preoccupa della commutazione dell'alimentazione, potrebbe funzionare comunque. Potrebbe valere la pena testarlo. In alternativa, cerca un IC hub solo USB-1.1.
Connor Wolf,

1

Potrebbe essere un po 'sporco: TUSB2036 consente la selezione della porta a valle (p3 NPINT1-0 impostato su 10). Quindi collegare il dispositivo a due porte (fisiche) in modo da poter disegnare 2 unità in parallelo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.