Un périphérique USB autoalimenté doit-il se connecter à VCC à partir du port hôte?

18

Un périphérique USB auto-alimenté fournit sa propre alimentation, il est donc normal de connecter uniquement D +, D- et GND au port hôte, ou devez-vous toujours connecter également + 5V, puis attendre la phase de négociation de l'appareil pour dire à l'hôte qu'il est auto-alimenté et qu'il ne veut donc pas de courant, merci beaucoup?

Le périphérique spécifique que je regarde est basé sur un adaptateur USB-série FTDI FT4232H, mais j'espère vraiment une réponse générique à la question.

kbro
la source
1
FTDI a beaucoup de notes d'application et d'informations à ce sujet dans leurs fiches techniques. Vous y avez jeté un coup d'œil?
Gustavo Litovsky
La fiche technique FTDI ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT4232H.pdf montre le VBUS connecté à RESET # via un pont de résistances, de sorte que (vraisemblablement) le débranchement du câble USB entraîne la réinitialisation de l'appareil (s'il était alimenté par bus, puis , évidemment, le débranchement du câble USB mettrait complètement l'appareil hors tension!). Mais la question est, la charge sur VBUS signifie-t-elle quelque chose pour l'hôte USB, et le manque de charge en laissant VBUS n / c casse-t-il quelque chose dans la négociation USB?
kbro
L'USB n'a généralement aucune idée s'il y a quelque chose de connecté. À moins que vous ne tiriez plus de 100 mA, il ne peut pas savoir si quelque chose est connecté.
Gustavo Litovsky
@GustavoLitovsky, en fait, les hôtes USB n'ont aucun moyen de distinguer entre aucun courant ou un courant de 100 mA tiré de son port. Le seul moyen défini dans les spécifications USB est lorsqu'une surintensité se produit, ce qui est bien supérieur à 500 ou 900 mA. Cependant, tout peut être conçu en utilisant des circuits supplémentaires et des broches GPIO supplémentaires.
Ale..chenski

Réponses:

7

La réponse générique à cette question est oui, le VBUS (+ 5V du câble) doit être connecté à l'appareil même s'il est auto-alimenté. La raison en est la suivante:

Pour démarrer le processus de connexion côté hôte, l'appareil doit tirer vers le haut D + (en cas de mode FS / HS) ou D- (en cas d'appareil LS).

Cependant, les spécifications USB ont une exigence obligatoire qu'aucun périphérique USB ne doit fournir de courant sur une broche d'interface à moins qu'il ne soit connecté à un câble, voir la section 7.1.5.1, qui se lit comme suit:

La source de tension sur la résistance de pull-up doit être dérivée ou contrôlée par l'alimentation fournie sur le câble USB de telle sorte que lorsque VBUS est retiré, la résistance de pull-up ne fournit pas de courant sur la ligne de données à laquelle elle est connectée.

Si un périphérique USB n'a pas ce contrôle, l'une des lignes de données sera une source de courant. L'affirmation prématurée de tractions a été une source de problèmes pour certains hôtes USB hérités. C'est pourquoi cette règle a été instituée, et il existe un test spécial pour cela dans le programme de certification USB-IF.

Par conséquent, le VBUS USB est un signal important de "bande latérale" dans le protocole de connexion USB. En tant que tels, les circuits intégrés de périphériques USB normaux ont une broche d'entrée distincte pour détecter la présence d'un hôte USB. Certains fabricants de circuits intégrés (par exemple FT232H, MCP2221, etc.) ignorent cette exigence, en supposant que leur puce sera uniquement utilisée dans une configuration alimentée par bus, où l'exigence de contrôle de pull-up est automatiquement satisfaite. Cependant, lors de la conception de ces puces dans des conceptions auto-alimentées, des efforts de circuit supplémentaires sont nécessaires pour lier l'activation des tractions à la présence de VBUS sur le port USB.

En ce qui concerne le protocole de «prise de contact» de la connexion USB, l'USB ne dépend pas du courant provenant de VBUS. Le protocole est le suivant: le port hôte doit avoir VBUS actif; VBUS est connecté à l'appareil; l'appareil voit le VBUS et tire 1,5 km sur l'un des fils D + / D-; l'hôte voit cette connexion, et après un délai de 100 ms, il affirme la signalisation USB_RESET (SE0, etc.).

Ale..chenski
la source
18

Avec un appareil autoalimenté, ne connectez pas son 5V au 5V de l'hôte, vous pouvez faire sauter l'une ou l'autre alimentation. GNDet D+, D-fera bien.

Rappelez-vous que les niveaux pour D+et D-sont évalués à + 3,6 V max, pas à 5 V comme vous pouvez vous y attendre!

jippie
la source
5
Il vaut cependant la peine de surveiller VBUS pour détecter les conditions de déconnexion / connexion, dans le cadre de la négociation initiale de l'USB qui implique des tractions sur D + et D-. Une fois, nous avons rencontré des problèmes où un concentrateur ne pouvait pas énumérer correctement les périphériques en fonction de l'ordre dans lequel le concentrateur auto-alimenté et les périphériques auto-alimentés étaient allumés, sauf si vous observiez VBUS. La solution était d'utiliser un diviseur potentiel sur VBUS pour le gérer.
Jxj
1
Pour la même raison, la résistance de rappel - qui informe à la fois un hôte qu'un périphérique a été branché et identifie sa vitesse initiale - doit être référencée sur VBUS, et non sur l'alimentation locale du périphérique.
Dave Tweed
1
Hmmm - la zone de texte "Dispositifs auto-alimentés" sur usbmadesimple.co.uk/ums_2.htm dit la même chose - ne tirez pas D + ou D- au-dessus de VBUS. Plus intéressant, ne conduisez pas D + ou D- lorsque VBUS est désactivé. La fiche technique FT4232H ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT4232H.pdf montre que VBUS se connecte à RESET # qui serait lié au "ne conduisez pas lorsque VBUS est éteint", mais il ne semble pas y en avoir garantir que D + / D- sont toujours inférieurs à VBUS lors de la réinitialisation. Je pensais que tout l'intérêt de la réinitialisation est que D + est au-dessus ou en dessous de D-, non pas qu'il était proche de VBUS.
kbro