Question:
Raisons pour lesquelles les états des broches MCU par défaut sont tirés vers le haut / vers le bas hors de la réinitialisation
TRISAbits
2019-03-19 10:33:28 UTC
view on stackexchange narkive permalink

Sur de nombreux microcontrôleurs, les états des broches par défaut sont tri-déclarés (ou entrées analogiques) lorsque le MCU se réinitialise afin de ne pas affecter les circuits auxquels ils sont connectés jusqu'à ce que le logiciel configure les broches.Les broches tri-déclarées permettent également au concepteur HW de choisir l'état de traction de chaque broche au cas par cas en fonction du circuit sous-jacent.

Cependant, il y a quelques MCU (et SoC) qui par défaut leurs broches activent à la place un pull-up / down interne.Par exemple, le LPC845 définit par défaut toutes les broches sur des pull-ups sortant de la réinitialisation. LPC845 Datasheet Section 8.11.1

Y a-t-il une raison pour laquelle les broches par défaut de pull-up / down sont préférables à tri-déclarées (autre que les économies d'énergie incrémentielles possibles lors de la sortie d'une réinitialisation ou les économies de coûts marginales de la nomenclature)?

Si quoi que ce soit, je trouve rarement que les broches doivent être tirées vers le haut en sortant de la réinitialisation (j'ai généralement besoin de les retirer, voire pas du tout).

Je voudrais probablement que ce comportement soit configurable avec des fusibles pour l'appareil, lors de la programmation.C'est ma pensée, maintenant.
Sonne comme une bonne puce.La vraie question est de savoir pourquoi la grande majorité des MCU les laissent dans trois états / entrées, exposant les broches aux EMI et ESD pendant le démarrage du MCU.Parce que nous aimons tous les tests EMC qui échouent et les CI endommagés par ESD, n'est-ce pas?
@Lundin C'est un point intéressant.Je pourrais voir EMI être un problème si les broches ne sont pas tirées de l'extérieur, mais comment l'ESD serait-elle atténuée par la mise par défaut des broches à un certain état de traction sortant de la réinitialisation?Les diodes à broches d'entrée ne sont-elles pas suffisantes?
@TRISAbits Sur les MCU modernes, les diodes devraient, espérons-le, être correctes ... peut-être.Il n'y a souvent aucune spécification publique à leur sujet.Il est donc recommandé d'avoir une sorte de résistance entre la broche et les connecteurs / boutons / trucs que les humains pourraient pousser.
Cinq réponses:
Mr. Snrub
2019-03-19 10:54:17 UTC
view on stackexchange narkive permalink

Parce que c'est une bonne pratique de ne jamais laisser les broches logiques purement flottantes.
Bref aperçu de TI
Présentation détaillée de TI
Histoire de guerre dramatisée et amusante d'un exemple du monde réel

Je suis complètement d'accord.Les broches flottantes sont en effet une mauvaise chose pour la consommation d'énergie.Mais tout micrologiciel bien comporté devrait définir toutes les broches inutilisées dans un état connu, de sorte que la perte de puissance ne se produirait qu'à la suite d'une réinitialisation (et cette perte peut être éliminée en plaçant des tirages externes).Est-ce donc l'idée qu'en donnant un état par défaut à une broche (pull-up / down), le FW a besoin de moins de massage pour obtenir des nombres de puissance inférieurs?
Je pense que vous avez touché au coeur du problème ici.Si le micrologiciel se comporte correctement et / ou si le concepteur de matériel a eu le bon sens d'appliquer des pull-ups ou des pull-down appropriés, alors il n'y aurait absolument pas besoin de ce type d'initialisation.Et je suppose que c'est pourquoi tous les concepteurs de puces ne le font pas.Tout est une question de philosophie - voulez-vous présumer que vos utilisateurs sont assez intelligents pour faire la bonne chose, ou voulez-vous les protéger s'ils ne le font pas?Cela pourrait être discuté de toute façon ...
Certaines MCU ont leur logique de tampon d'entrée numérique désactivée à la sortie de la réinitialisation (par exemple, PIC12 / 16/18), ce qui est vraisemblablement destiné à empêcher les fuites causées par le passage de balle?Si tel est le cas, ce serait une alternative au forçage des broches dans un certain état connu.
BTW, vous avez mentionné les courants de fuite, mais comme illustré dans «l'histoire de guerre dramatisée amusante», mon plus grand souci serait les oscillations.Les courants de fuite disparaîtront une fois que le FW mettra la broche dans un bon état, mais si une broche flottante oscille, il y a un risque que la logique entre dans un état invalide.
Vous voulez dire: des oscillations sur l'entrée * pendant que * le MCU se réinitialise qui empêche le MCU de terminer la réinitialisation correctement?
Je veux vraiment dire que l'oscillation sur une broche d'entrée à tout moment, qu'elle soit réinitialisée ou non, est probablement une mauvaise nouvelle.Oui, si l'oscillation s'est produite pendant le processus de réinitialisation, je serais gravement préoccupé par le fait que le processus de réinitialisation ne peut pas complètement initialiser les choses à un bon état connu.
jpa
2019-03-19 18:32:05 UTC
view on stackexchange narkive permalink

D'autres réponses ont donné des raisons générales pour lesquelles un fabricant de puces pourrait faire le choix d'activer les pull-ups par défaut. Cependant, dans le cas spécifique du LPC845, il y a une raison supplémentaire: il a une mémoire d'initialisation FAst spécialisée (FAIM) qui peut être utilisée pour définir l'état immédiatement après la réinitialisation:

Le contenu FAIM fournit une configuration initiale programmable par l'utilisateur pour les aspects microcontrôleur, qui prend effet immédiatement après la réinitialisation, avant que le code ne commence à s'exécuter. Pour Par exemple, les pads d'E / S standard sortent normalement de la réinitialisation avec les pull-ups internes activée. Dans certains systèmes, cela peut entraîner un excès de courant, jusqu'à ce que le logiciel puisse reconfigurez les électrodes. Cependant, en programmant le FAIM de manière appropriée, la réinitialisation de chaque pad la configuration peut être personnalisée.

( Manuel d'utilisation du LPC84x section 4.2)

Ainsi, ils ont choisi le coffre-fort par défaut (du point de vue de la consommation d'énergie et de l'EMI), tout en permettant aux utilisateurs plus avancés de personnaliser le paramètre.

L'inconvénient du FAIM est qu'il nécessite une étape de programmation supplémentaire pour le configurer à l'avance, ce qui signifie que votre conception doit survivre à l'état de traction incorrect jusqu'à ce que le FAIM soit mis à jour.Vous pouvez également installer une traction externe plus forte pour surcharger la configuration interne par défaut, mais vous avez maintenant introduit une perte de puissance perpétuelle via la traction externe.Je suppose que vous ne pouvez pas avoir votre gâteau et le manger aussi.
@TRISAbits Ouais.Mais après tout, même s'il était tristated, vous auriez besoin du pulldown externe sur les broches importantes, et s'il tire à l'état par défaut, la perte moyenne n'est pas tellement.
Le point que je faisais (mal) est que la traction externe devra être plus forte que nécessaire pour surcharger la traction interne.Si les broches étaient tri-déclarées, la traction pourrait être plus faible, ce qui entraînerait moins de perte de puissance par la traction externe.
Justme
2019-03-19 11:39:08 UTC
view on stackexchange narkive permalink

À l'époque, il y avait des microcontrôleurs Intel 8051 qui n'avaient que des broches d'E / S à drain ouvert, donc la plupart du temps, vous aviez de toute façon besoin de pull-ups externes pour faire des choses utiles comme la connexion à des boutons poussoirs ou le contrôle des entrées CMOS d'autres puces.Il est plus probable que cela nécessite une refonte facile de telles cartes avec un microcontrôleur moderne, ou des personnes de cette époque habituées à concevoir avec des E / S à collecteur ouvert.À l'époque, vous aviez surtout besoin de pull-ups, voire de pull-ups.

C'est un aperçu vraiment intéressant et explique pourquoi de nombreuses puces logiques ont des broches d'activation de sortie active-faible.La logique active-élevée ne maille pas aussi lorsque l'état d'extraction par défaut est élevé.En passant, il ne fonctionne pas bien non plus lorsqu'il est directement connecté à la grille d'un NMOS, à moins que vous ne souhaitiez que le transistor s'allume par défaut.
D'autres puces de cette époque ont également des signaux actifs lorsqu'ils sont faibles.Les puces TTL (séries 74XX et 74LSXX par exemple) peuvent tirer plus bas que pousser haut.Par conséquent, le front descendant rapide est plus net et plus défini que le front montant exponentiel lent.De petits courants entrent et sortent également des entrées de la puce car ils ne sont pas si haute impédance.Par conséquent, les pull-ups sont parfois nécessaires et les pull-ups peuvent être plus faibles que les pull-down, c'est pourquoi vous avez une logique basse active avec des pull-ups, avec des boutons-poussoirs mettant à la terre les entrées et les sorties allumant les LED en mettant la LED à la terre via une résistance.
Ale..chenski
2019-03-19 10:55:34 UTC
view on stackexchange narkive permalink

Laisser les broches GPIO comme entrées tri-déclarées a de nombreux effets indésirables:

  1. Comme le processus de fabrication a une certaine variance et que de nombreux autres circuits sont connectés au GPIO (comme tampon de sortie et protection ESD), la direction de la fuite parasite résultante est imprévisible, de sorte que l'état peut prendre la logique haut ou bas;

  2. Encore une fois, en raison de la variation du processus et de la dépendance à la température, la fuite de broche peut être très faible, entraînant un changement très lent de l'état logique après, disons, plusieurs minutes, ce qui peut être un défi à gérer dans le code, ou il peut dériver dans une direction imprévisible.

  3. Laisser les broches flottantes peut conduire à l'établissement d'un potentiel intermédiaire, où le tampon d'entrée des broches peut agir comme un amplificateur linéaire avec un gain substantiel, provoquant soit des auto-oscillations (en raison d'une rétroaction positive parasite sur les rails d'alimentation), soit être sensible aux interférences électromagnétiques externes. Les oscillations peuvent être quelque part en interne et entraîner une consommation d'énergie hors de portée.

4 ... faut oublier autre chose ... des transitoires de mise sous tension?

awjlogan
2019-03-19 16:11:44 UTC
view on stackexchange narkive permalink

Du point de vue des systèmes, le démarrage des broches dans un état défini est un avantage.Par exemple, un moteur peut être connecté qui ne doit pas être activé sans commande.Les périphériques s'attendent généralement à ce que leurs interfaces soient dans un certain état, et le démarrage à High-Z peut ne pas fournir l'état requis.Comme les montées / descentes internes dans un microcontrôleur typique sont relativement faibles, elles peuvent être annulées par une traction externe plus forte vers le haut / bas si nécessaire.En complément, il est agréable de voir dans la fiche quel est le comportement attendu des broches, cela n'est parfois pas inclus ..!

Le problème avec la fourniture d'un pull-up externe quand un interne est activé est double: [1] Le pull externe doit être correctement dimensionné pour être * beaucoup * plus fort (une bonne règle empirique est au moins 10x).Sinon, vous allez créer un diviseur de tension, qui peut régler la tension dans cette zone intermédiaire sans homme.[2] La traction externe plus forte introduit une perte de puissance continue (si l'état de la broche est fréquemment opposé à la direction de la traction), qui consommera rapidement plus d'énergie que toute perte d'avoir des broches tri-déclarées hors de réinitialisation.
@TRISAbits D'accord sur les deux points.Il n'est pas souhaitable de remplacer, mais la plupart des composants internes sont de 50 à 100K, donc pas de catastrophe.Lisez le manuel, comme toujours :)
@TRISAbits Et il ne s'agit pas non plus de puissance dans cet exemple, mais de la façon dont le système plus large interagit lors de la réinitialisation, pas seulement du MCU.


Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 4.0 sous laquelle il est distribué.
Loading...