Tolérance de 5 V sur l'entrée de détection VBUS

8

Je conçois un appareil autour du STM32L476. Mon appareil est principalement alimenté par batterie, mais possède un port USB que, lorsqu'il est branché, je veux l'utiliser comme source d'alimentation alternative (via un régulateur de 3,3 V) pour limiter la décharge de la batterie. Il est également possible que l'utilisateur connecte le port USB alors qu'il n'y a pas de piles.

Je veux pouvoir détecter quand le port USB est connecté, donc j'utilise PA9 comme OTF_FS_VBUS.

La bonne nouvelle : la fiche technique indique que la broche PA9 est 5V tolérante.

La mauvaise nouvelle : les broches tolérantes à 5 V ne semblent en réalité tolérer les 5 V que lorsque l'alimentation est appliquée. La feuille de données §6.2 du tableau 18 dit:

Tension d'entrée maximale sur les broches FT_xxx: min (VDD, VDDA, VDDIO2, VDDUSB, VLCD) + 4,0 V

Dans mon cas, s'il n'y a pas de piles et que l'utilisateur connecte le port USB, il y a un temps, avant le démarrage du régulateur, pendant lequel la tension sur PA9 sera de 5 V alors qu'aucune alimentation n'est appliquée sur les broches d'alimentation du CPU.

Encore plus mauvaise nouvelle : l'injection actuelle n'est pas autorisée: fiche technique §6.2, tableau 19, dit:

Courant injecté sur FT_xxx: -5 / + 0 (voir remarque 4)

Remarque 4: Une injection positive est induite par VIN> VDDIOx tandis qu'une injection négative est induite par VIN <VSS. IINJ (PIN) ne doit jamais être dépassé.

Il semble donc que je ne puisse pas utiliser une simple résistance pour limiter l'excès de courant sur PA9 pendant le démarrage du régulateur. Toute quantité de courant qui circulerait de VBUS vers PA9 avant que le VDD ne monte en puissance est apparemment interdite.

Qu'ont fait les autres?

J'ai regardé de nombreuses conceptions autour des puces STM32, en regardant leurs connexions VBUS, et elles ne semblent pas s'en soucier. Ils connectent VBUS directement à PA9, ou éventuellement via une résistance, mais je n'ai jamais rien vu de plus compliqué. Mais ce sont surtout des cartes de développement, donc je suppose que la robustesse (est-ce un mot?) N'est pas très importante. Et ils ne sont généralement pas alimentés via le port USB, et supposent certainement que l'utilisateur ne connectera pas le port USB avant d'alimenter la carte.

Quel est mon plan?

Mettre cela entre VBUS sur le port USB et la broche PA9 du MCU:

Protection VBUS

J'ai vraiment essayé de rester simple. Fondamentalement, il garantit que VUSB_CPU (qui est la broche PA9) ne peut jamais être au-dessus de VCPU + 4V (Vz + Vbe), sans consommer d'énergie s'il est OK.

Mes principales questions sont les suivantes : ai-je raison dans mon analyse? Ce circuit est-il une bonne solution? Suis-je préoccupé par des choses qui ne sont pas pertinentes? Pourquoi personne d'autre ne semble se soucier de ce problème potentiel?

Question supplémentaire : je prévois d'utiliser USB OTG. Est-ce un problème s'il y a une résistance de 4,7 k entre le connecteur et la broche PA9? Je suppose que ce serait le cas si je devais utiliser la pulsation VBUS pendant SRP, mais cette méthode est apparemment déconseillée. Suis-je donc bon, quel que soit le rôle (appareil / hôte) de mon appareil?

Un dernier : quel est le courant maximal consommé par la broche d'alimentation VDDUSB? La fiche technique spécifie, pour le périphérique USB: 16,4µA / MHz pour le domaine d'horloge AHB + 23,2µA / MHz pour le domaine d'horloge indépendant, mais nous ne savons pas d'où il est tiré (VDD ou VDDUSB).

faible
la source
Une autre option de protection PA9 serait de mettre un commutateur MOS entre l'USB + 5V et le PA9, puis de piloter la porte du commutateur avec la sortie du régulateur.
Mark
pourquoi ne pas utiliser un diviseur à résistance? 430k et 630k vous donneront 3,3v sur la broche.
b degnan
Mais un diviseur de résistance ne résoudra pas le problème d'injection. Le diviseur injectera 3,3 volts dans la broche avant la mise sous tension de la pièce.
Mark
Je comprends de la fiche technique que la broche peut résister à 4v, même lorsqu'elle est hors tension (est-ce correct?). Un diviseur à résistance serait donc une bonne solution, mais consomme de l'énergie de façon permanente. J'ai oublié de mentionner que j'ai une contrainte stricte à ce sujet.
dim

Réponses:

4

Allez avec le diviseur de résistance (430k / 620k) sur Vbus - cela gardera le microcontrôleur dans les spécifications, et le courant parasite ne sera pas un problème car il proviendra exclusivement de Vbus, pas de la batterie (ce qui est ce que Je suppose que vous souhaitez conserver).

ThreePhaseEel
la source
Stupide moi ... J'excluais le diviseur de résistance à cause de la consommation actuelle, mais mon raisonnement était évidemment incomplet. En effet, ce n'est pas un problème de tirer de l'énergie de vbus. Maintenant, pourquoi personne ne fait même cela dans leurs planches? ST lui-même (planche découverte), olimex, ...? Je ne comprends toujours pas ce point.
dim
0

Probablement la méthode la plus simple, utilisez une résistance de valeur élevée (10-100k) alimentant un condensateur de plus grande taille (couple de uF ou plus) pour que la tension prenne du temps, je ne m'inquiéterais pas de la fraction de volt qui s'accumule à travers le condensateur pendant le démarrage du régulateur, si le micro a une protection esd, les entrées peuvent gérer 5-10 V pendant quelques dizaines d'uS

Sam
la source
Cela semble génial ... mais seulement jusqu'à ce que vous pensiez à ce qui se passe lorsque l'alimentation est coupée. Le condensateur peut en fait aggraver les choses, simplement en ayant une résistance de grande valeur - la résistance ne peut pas fournir beaucoup de courant, mais le condensateur chargé le peut.
Chris Stratton
pourriez-vous le conduire à travers un petit zener? Cette section de la fiche technique dit VDD + 4V non? Si vous aviez un zener abaissant le rail à moins de VDD + 4V, ce serait ok?
Sam
Je ne visualise pas bien votre suggestion zener sans schéma. Mais si la solution a la même complexité que la mienne (3 composants discrets bon marché), je ne gagnerai pas grand-chose.
dim
Fondamentalement: Entrée-> zener-> PA9, zener en série avec l'entrée par opposition à une résistance en série, zener baisse d'un volt ou deux donc la tension à PA9 est toujours un peu plus basse. Si les cartes de développement les lient, alors c'est probablement ok, je pense que les avertissements peuvent s'appliquer après la mise sous tension du MCU, voyez s'il y a une section sur le séquençage de l'alimentation ou sur le comportement de démarrage.
Sam
1
@Tom, c'est mon principal problème. J'ai vérifié, ils ne font rien. PA9 est connecté directement à VBUS sur le port USB (pas même via une résistance), sur leur carte de démonstration Discovery. Donc, sauf si j'ai raté quelque chose, c'est en totale contradiction avec la fiche technique. Mon problème n'est pas vraiment le circuit de protection en soi. Je pense que ma solution, même si elle peut certainement être améliorée, peut faire le travail. Pour être honnête, mon principal problème est juste: est-ce vraiment nécessaire?
dim