Concentrateur alimenté par bus USB - plus de 100 mA par appareil?

11

Je voudrais poser une question assez précise concernant la gestion de l'alimentation USB.

Tout d'abord, je vais décrire la conception de mon appareil. Il s'agit d'un pilote de ligne de signal symétrique avec un codec audio intégré pour mon système d'enceintes DIY. L'appareil est divisé en interne en deux blocs pour la plupart indépendants: le pilote de ligne même avec un MCU de contrôle et le codec audio (PCM2706 de TI). Les deux ont besoin d'une connectivité de données USB (via un FT232R pour le bloc pilote) et l'ensemble du périphérique doit être alimenté par bus. Les deux blocs seront reliés entre eux par une puce de concentrateur USB, ce qui donnera une seule connexion USB de liaison montante au PC. Je m'attends à ce que la consommation de l'étage pilote soit comprise entre 100 et 200 mA (certainement plus d'une unité de charge).

Voici le problème: selon la spécification USB, un concentrateur alimenté par bus ne peut fournir qu'une seule unité par port aval tout en tirant au maximum 5 unités de l'amont. J'aimerais savoir ce que ferait le concentrateur si je demandais deux unités via le FT232 pour l'étape pilote. La limite en amont de 5 unités ne sera pas atteinte (1 unité pour le concentrateur, 1 unité pour le codec et deux pour le pilote), donc l'ordinateur devrait être physiquement capable de fournir ce courant.

Pour la puce du concentrateur, j'ai consulté http://www.ti.com/lit/ds/symlink/tusb2036.pdf . Il existe une option de mode d'alimentation "groupé", est-ce que cela pourrait être utile? Ou la puce refuserait-elle simplement d'accorder deux unités au conducteur? Et dans ce cas, y a-t-il une solution de contournement sale?

Je suis conscient de l'exigence selon laquelle les appareils à haute puissance doivent également tirer au maximum 100 mA pendant le dénombrement; ce n'est pas un problème car le FT232 est capable d'activer le pilote juste après l'énumération. Le hub activera également les scènes indépendamment.

J'espère que mon problème est assez clair et merci pour votre temps à l'avance :)

MISE À JOUR:

J'ai fait quelques recherches supplémentaires sur la puce TUSB2036. La protection contre les surintensités peut être désactivée par la broche / OCPROT. Le concentrateur signale ensuite au contrôleur racine qu'il n'est pas en mesure de détecter une surintensité. Il y a un avertissement dans la fiche technique, que la protection OC est requise par la spécification USB 2.0 - cela n'a pas d'importance pour moi, j'ai seulement besoin de 1.1 Full-speed. Le concentrateur racine du PC devrait alors fournir à l'OMI 500 mAmps à l'ensemble de l'appareil. Ainsi, je pourrais paramétrer le FT232 du pilote pour ne nécessiter que 100 mA et le hub ne saurait jamais si j'aurais dépassé la limite (en respectant les 500 mA du PC bien sûr). Quelqu'un peut-il dire si cela pourrait fonctionner?

Ladislav
la source

Réponses:

3

Ma compréhension de votre conception est que l'ensemble de l'appareil se trouve sur un seul PCB, se trouve dans un seul boîtier et est connecté à l'hôte par un seul câble USB. Vous avez intégré un concentrateur sur le PCB pour permettre aux deux appareils de communiquer avec le PC. La réponse suivante dépendra de ces hypothèses, si elle est composée de plusieurs appareils séparés connectés par des câbles déconnectables, cela change les choses.

Dans ce cas, je vous suggère de simplement configurer le concentrateur pour l'énumérer en tant que périphérique haute puissance et de partager les 500 mA résultants sur l'ensemble de la carte. Chose intéressante, l'exemple de schéma de port groupé de TI montre les périphériques tous connectés ensemble, même lors de l'utilisation de leur circuit intégré de gestion de l'alimentation:

entrez la description de l'image ici

La ligne d'alimentation 5V entrante (surlignée en bleu, car c'est l'un des deux réseaux qui nous intéressent sur ce schéma compliqué) est connectée à un circuit intégré de gestion de l'alimentation TPS2041 (une description généreuse, c'est vraiment juste un FET qui s'arrête lorsque il détecte 500mA de courant passant). Cependant, chacune des entrées est court-circuitée ensemble, et chacune des sorties est également court-circuitée, puis distribuée à chacun des ports en aval (le réseau illustré en rouge).

Fondamentalement, ils font une protection contre les surintensités pour toutes les sections en aval dans un seul CI. Ils n'ont aucun moyen de détecter s'ils ont trois unités basse puissance (100 mA), une seule unité haute puissance ou deux unités basse puissance et une unité 300 mA. Toutes ces options sont acceptables sur la base de cette conception de référence. Tu as écrit:

Selon la spécification USB, un concentrateur alimenté par bus ne peut fournir qu'une seule unité par port en aval tout en dessinant jusqu'à 5 unités ...

mais, pour répondre directement à votre question, cette conception de Texas Instruments (membre du groupe USB et principal implémenteur) montre que vous n'avez qu'à garantir que le courant total est inférieur à 5 unités.


Pour résoudre votre problème, les règles stipulent (extraites de l'excellent USB dans un document bref ):

Les fonctions alimentées par le bus haute puissance tireront toute son énergie du bus et ne pourront pas tirer plus d'une charge unitaire tant qu'elle n'aura pas été configurée, après quoi elle pourra drainer 5 charges unitaires (500 mA max) à condition qu'elle le demande dans son descripteur.

Si vous pouvez garantir que votre étage de pilote ne commencera pas à tirer du courant tant que le périphérique n'aura pas été configuré (ce qui peut être aussi simple qu'un retard temporisé dans le contrôleur hôte), vous pouvez simplement tout câbler ensemble. Parce que votre circuit entier est sur une seule PCB et n'a pas de ports en aval accessibles par l'utilisateur, vous pouvez probablement également laisser de côté le TPS2041 et simplement concevoir le système pour ne pas nécessiter plus de 500 mA de courant dans n'importe quel état.

Un autre avantage de l'énumération en tant que dispositif haute puissance est l'amélioration des spécifications de tension d'entrée. Lorsque vous avez énuméré comme un appareil à faible puissance, l'hôte est uniquement requis de produire 4,40 V sur le port amont (qui sera plus faible sur votre appareil en raison de la résistance du câble). Lorsque vous avez énuméré un appareil haute puissance, la spécification garantit que vous obtiendrez 4,75 V, ce qui est plus susceptible d'être dans la plage de fonctionnement de tous les composants 5V que vous utilisez.

Kevin Vermeer
la source
Merci pour une excellente réponse. Mais comment configurer le hub de cette façon? Ai-je besoin de l'EEPROM externe ou dois-je simplement attacher la broche / GANGED à la masse (et les autres broches de configuration selon le schéma que vous avez envoyé)?
Ladislav
1
Vous devez attacher! GANGED à la terre et! EXTMEM à 3,3V. Cependant, l'EEPROM externe peut être agréable: sinon votre appareil apparaîtra comme un «concentrateur USB générique» sur le PC. Alternativement, vous pouvez probablement émuler une EEPROM avec votre microcontrôleur embarqué (configurer l'une des interfaces I2C pour agir comme esclave). Ensuite, vous pouvez le signaler en tant que «pilote de système d'enceintes et contrôleur de codec» ou quelque chose comme ça.
Kevin Vermeer
5

J'ai conçu une carte autour de ce hub.

Dans ma candidature, il autorisait l'accès à un FT232 et à un FT245.

Si tout se trouve sur votre propre PCB, je vous recommande d'ignorer complètement tous les systèmes de protection contre les surintensités. Après tout, si quelque chose sur votre PCB échoue, tout cela devra être travaillé, donc rendre l'appareil capable de gérer une défaillance partielle est une sorte de point discutable.

Dans ma situation, j'ai attaché le TUSB pour demander les 500 mA complets et désactiver la protection contre les surintensités, et j'ai tout exécuté directement depuis l'USB 5.0v. J'ai accompli cela en forçant le concentrateur à signaler comme étant auto-alimenté à l'hôte en amont.

J'ai fait quelques planches, sans aucun problème réel, donc cela semble une stratégie parfaitement réalisable. Il a également été utilisé avec plusieurs ordinateurs différents, donc je serais assez confiant de l'utiliser tel quel.

Bien sûr, si c'est pour un appareil de production, plutôt qu'un projet personnel, ou un harnais de test (c'est ce que c'est dans mon cas), c'est un tout autre problème.

entrez la description de l'image ici

(Voir la note sur le schéma)


Pour ce que ça vaut, vous pouvez souvent abuser horriblement de la plupart des ports USB modernes sans trop de problèmes. Beaucoup d'entre eux peuvent fournir beaucoup plus de puissance que les 500 mA pour lesquels ils sont conçus, sans trop de problèmes.
De plus, la plupart d'entre eux (tout ce que j'ai testé, à l'exception de certains ordinateurs portables ) fourniront volontiers les 500 mA complets sans qu'un appareil n'ait à énumérer du tout.

Cependant, cela varie d'une carte mère à l'autre, selon la conception de l'hôte USB. Votre kilométrage peut varier.

Connor Wolf
la source
Oui, j'y ai pensé, mais comme vous l'avez dit, cela varie de Mo à Mo. L'appareil ne sera pas produit par milliers, mais j'ai besoin qu'il soit aussi interopérable que possible, donc il "fonctionnera" sur n'importe quel ordinateur. Merci quand même, les observations pratiques sont tout aussi utiles :).
Ladislav
@Ladislav - Je ne pense pas qu'il soit de toute façon possible de ne pas avoir besoin de pouvoir mettre sous tension les appareils en aval sans violer au moins quelque peu les spécifications USB.
Connor Wolf
Il convient de noter que si vous attachez l'appareil pour signaler qu'il est alimenté par le bus et que vous ne vous souciez pas de la commutation d'alimentation, cela peut fonctionner de toute façon. Cela pourrait valoir la peine d'être testé. Vous pouvez également rechercher un CI concentrateur USB-1.1 uniquement.
Connor Wolf
1

Peut-être un peu sale: le TUSB2036 permet de sélectionner le port en aval (p3 NPINT1-0 réglé sur 10). Connectez ensuite votre appareil à deux ports (physiques) pour pouvoir dessiner 2 unités en parallèle.

suha
la source