Recommandation pour les paramètres par défaut des broches inutilisées sur un STM32 (ARM Cortex M3) - tirer vers le haut / vers le bas?

13

Nous utilisons actuellement différentes variantes de la famille de microcontrôleurs STM32. Je voudrais savoir ce qui suit:

1) Quels sont les paramètres par défaut recommandés pour les broches des microcontrôleurs en général si vous avez la possibilité de sélectionner les deux pull ups ou pull down? Quels sont les avantages et les inconvénients d'aller avec l'un ou l'autre? (En supposant que vous les configuriez par défaut comme entrées)

2) Je voudrais en particulier savoir quoi faire avec les broches inutilisées de la famille de microcontrôleurs STM32. Il est évident pour moi que nous ne devons pas laisser les broches flottantes, (c'est tout ce que la fiche technique dit, :(), mais dois-je les définir pour entrer avec des tractions ou des entrées avec des descentes? En particulier, je voudrais pour choisir un paramètre qui est le moins sensible aux décharges électrostatiques et, si possible, consomme le moins d'énergie.

3) Pour les broches critiques, devrions-nous nous fier au micrologiciel pour configurer correctement les broches dans l'état par défaut correct ou cette responsabilité devrait-elle incomber au matériel externe (connexion de tractions externes ou de descentes externes)? Si les valeurs choisies pour les résistances externes sont supérieures aux pull ups ou pull down internes, le réglage dans le firmware n'a pas d'importance.

Le pro que je peux voir pour faire ce qui précède, c'est que si le micro ne s'initialise pas correctement pour une raison quelconque (matériel défectueux ou autres), nous ne comptons pas sur le firmware pour configurer correctement la broche.

L'inconvénient que je vois, c'est que cela coûte plus cher de faire du matériel.

Toute lumière que vous pouvez jeter sur ce qui précède sera vraiment appréciée.

Merci..

IntelliChick
la source
Pourquoi ne pas définir des broches inutilisées comme sorties? Cela éliminerait le problème de pull-up vs pull-down.
Connor Wolf
À noter: "Lors de tout événement de réinitialisation, tous les GPIO sont des entrées flottantes. Cela évite tout dommage accidentel aux GPIO en cas d'urgence." embedded-lab.com/blog/stm32-gpio-ports-insights
cp.engr

Réponses:

10

Cette réponse n'est pas spécifique à STM32 mais est basée sur l'expérience et de nombreuses discussions de ce type sur de nombreuses années. D'autres peuvent ajouter à cela - il couvre les principaux points (je pense) mais peut ne pas être complet.

Il est encourageant de voir quelqu'un poser ces questions simples mais fondamentales et montrer comment ces «petites choses» peuvent «s'agglutiner» dans la vie réelle.

c'est à dire "Si le micro ne s'initialise pas correctement ..." lit vraiment "... quand le micro ne s'initialise pas correctement ..." :-) - et il est évident que vous vous en rendez compte.

Donc:

  • L'utilisation d'un pullup ou d'un pulldown externe est essentielle pour ceux qui souhaitent vraiment obtenir un résultat bien défini. C'est le plus grand must-do ici. Tout le reste est un bonus. c'est-à-dire que le réglage des entrées avec pullxxx interne est un compromis qui fonctionnera presque toujours.
    MAIS si "presque toujours" n'est pas assez bon pour votre conception, alors vous avez besoin de pulls externes.

  • Pullup ou down ne semble pas avoir un meilleur résultat écrasant. Elle peut varier d'un CI à l'autre, mais peut être déterminée à partir de la fiche technique. Toutes choses étant égales par ailleurs (comme elles peuvent l'être), je préférerais le retrait car il existe un potentiel de fuite moindre vers les courants externes de l'appareil - mais cela est susceptible d'être minime dans un PCB à revêtement conforme et / ou un environnement bénin.

  • Vous voudrez peut-être regarder l'action de démarrage si vous vous souciez vraiment. Par exemple, une épingle tirée vers le haut commencera bas et passera haut à un moment donné. Une épingle abaissée restera probablement basse tout au long. Ce n'est probablement pas important mais est mentionné pour être complet.

  • La sensibilité aux décharges électrostatiques sera spécifique au périphérique, très probablement symétrique et en moyenne sur de nombreux processeurs, elle favorise probablement le retrait, car les pilotes ont tendance à mieux couler que la source s'ils sont asymétriques. Si vous vous souciez beaucoup de l'ESD, vous souhaiterez peut-être utiliser des sorties faibles avec des menus déroulants - car un chemin à faible impédance offrira (probablement) une meilleure protection ESD. Mais si vous vous souciez beaucoup de l'ESD, vous voudrez le concevoir autrement et ne pas compter sur la protection in-IC comme protection principale.

  • Concernant la question 3 - les pullxxx externes sont souhaitables mais il semble sûr d'utiliser des valeurs qui se situent à l'extrémité supérieure limitante de la conception appropriée, puis d'utiliser des xxx internes en parallèle si vous le souhaitez. Cependant, comme les xxx pulls internes ont souvent un effet 2: 1, vous pouvez obtenir le plus grand R et le plus petit courant en utilisant uniquement externe. Ce que vous voulez bien sûr éviter, ce sont les tractions externes et les tractions internes ou vice-bersa - mais ce n'est probablement pas un problème.

  • Quand je dis "... limiter le haut de gamme d'une conception appropriée ..." je veux dire juste cela et non pas "au-delà de la limite ...". c'est-à-dire que la broche aura une valeur de résistance spécifiée qui permet de respecter la spécification Vin la plus défavorable. Une résistance plus grande peut prendre moins de courant dans la résistance mais peut commencer à allumer très légèrement l'interrupteur interne. c'est-à-dire qu'il peut y avoir un compromis Rpulldown_current contre le courant global le plus bas lorsque le pilote interne commence à voir un courant de fuite (qui sera extrêmement faible) augmentant le courant vers le dirver et le chuchotant très légèrement.

  • Si vous utilisez par exemple le pulldown, vous pouvez alors trouver une puissance inférieure pour régler la broche en sortie et la conduire à un niveau bas, mais c'est une option qui peut être décidée en temps voulu.

  • Presque un côté - NE JAMAIS permettre aux diodes de protection de gérer "tous les courants importants" à n'importe quelle étape pendant le fonctionnement. Leur permettre de le faire peut conduire à une action du processeur totalement inexplicable. Moins le courant est faible, plus les chances que les choses tournent mal sont faibles - et plus il est difficile de le trouver lorsqu'ils le font.

Russell McMahon
la source
1
Réponse très perspicace. Merci beaucoup. Pouvez-vous élaborer un peu plus à ce sujet - "Si vous vous souciez beaucoup des décharges électrostatiques, vous souhaiterez peut-être utiliser des sorties faibles avec des déroulements - car un chemin à faible impédance offrira (probablement) une meilleure protection contre les décharges électrostatiques"? Si vous définissez une sortie - iriez-vous ouvrir le drain ou pousser-tirer (haut / bas) par défaut?
IntelliChick
2

Pourquoi optimisez-vous? L'optimisation des coûts impose de définir des broches inutilisées sur les sorties. L'optimisation de la fiabilité dicte que tous les niveaux de broches sont définis, même dans la courte période avant que le micrologiciel ait la possibilité de définir les broches inutilisées à ce qu'il juge approprié.

J'ai dû une fois vérifier les calculs de fiabilité d'une carte processeur. Il était bien conçu, avec des capuchons de découplage partout et des résistances à tirer sur n'importe quelle broche d'E / S. L'ingénieur de la fiabilité a sorti son manuel, a ajouté les taux de défaillance de tous les composants impliqués et s'est retrouvé avec un chiffre qui était dominé par les taux de défaillance des composants passifs. Ce chiffre était supérieur à l'exigence, nous avons donc eu un problème. Retirez ces résistances, et le chiffre serait OK. Mais à cette proposition, les ingénieurs électriciens ont commencé à crier de colère (à juste titre, l'OMI). Je ne me rappelle pas comment l'histoire s'est terminée; Je pense que nous sommes allés chez le client et avons demandé une dispense pour avoir omis les taux de défaillance des résistances du calcul, au motif qu'ils ne transportaient pas de courant significatif.

Wouter van Ooijen
la source
1

Je viens de configurer les broches inutilisées en tant que sorties et de les définir à un niveau bas.

Leon Heller
la source
les placeriez-vous normalement sur un drain push-pull ou ouvert? Et dans les deux cas, les définiriez-vous à un niveau bas? Pouvez-vous me dire pourquoi vous choisiriez l'un plutôt que l'autre.
IntelliChick
@Leon Heller - qui répond au test "fonctionne habituellement", mais échoue "lorsque le micrprocesseur n'initialise pas correctement, ou lorsque Murphy retourne un peu semi-au hasard, comme il le fait occasionnellement. , fonctionne.
Russell McMahon