Utilisation de la résistance pull-up et pull-down sur les broches MCU d'entrée ou de sortie

18

Les résistances pull-up / down (internes ou externes) sont-elles uniquement nécessaires pour les broches MCU INPUT? En revanche, une broche MCU configurée comme une SORTIE "sait à quel niveau elle se trouve" car elle fait la conduite - une broche de sortie MCU "flottante" liée à une entrée d'un autre circuit n'a pas de sens, car l'état de la broche MCU ne peut être élevé ou faible ... ai-je ce droit? Maintenant, lors du démarrage ou de l'échec du MCU, il peut être avantageux d'avoir un pull-up / down lié à cette ligne "sortie MCU vers entrée IC" pour garantir que l'entrée de certains circuits intégrés ne flotte jamais.

Peut-être que je viens de répondre à ma propre question ici ... les résistances pull-up / down peuvent être utilisées sur les broches d'entrée et de sortie, selon l'application?

The_Ders
la source

Réponses:

21

Pull-up et Pull-downs sont normalement utilisés pour garantir qu'une ligne a un état défini alors qu'elle n'est pas activement entraînée. Ils sont utilisés sur les entrées pour éviter les lignes flottantes, basculant rapidement entre les hautes et les basses et une région moyenne "indéfinie". Les sorties n'en ont normalement pas besoin.

Mais la plupart des broches du MCU sont GPIO, et parfois au démarrage sont définies comme des entrées au lieu de sorties. Comme vous l'avez dit, parfois, vous ne voulez pas d'une entrée de broche IC flottant au démarrage, en particulier comme une broche de réinitialisation que vous piloteriez normalement avec le GPIO de votre microcontrôleur.

C'est lorsque vous utilisez un faible Pull-up ou Pull-down sur la ligne. Parce qu'ils sont faibles et que vous choisissez l'état par défaut, ils n'entraînent aucune interférence avec votre circuit (si l'entrée est censée être faible à tout moment, puis tirée haut, vous choisissez un menu déroulant faible et vice versa), mais ils consomment un peu de courant. C'est pourquoi vous choisissez une résistance suffisamment faible (plus la valeur est élevée, plus la valeur est faible) pour le travail.

Une autre configuration de sortie normale qui utilise des pull-ups (ou des pull-downs, plus rares) est les connexions Open Drain ou Open Collector . Ceux-ci ne conduisent qu'à une connexion faible ou libèrent la ligne, la laissant flottante. Les tractions sont utilisées pour amener la ligne à un état logique élevé.

Passant
la source
Vous mentionnez les connexions Open Drain et Open Collector, celles-ci ne s'appliquent pas aux microcontrôleurs, n'est-ce pas? De simples Mosfets utilisés pour définir un niveau logique? Je voulais clarifier si un microcontrôleur peut piloter une ligne qui a une résistance de pull down haute.
genericpurpleturtle
9

Vous avez tout à fait raison; normalement, vous n'avez pas besoin de tractions sur les sorties, mais elles peuvent être utiles pour maintenir la sécurité pendant le démarrage, etc.

Une autre raison d'utiliser un pull-up sur une sortie: si plusieurs sorties de plusieurs MPU sont connectées les unes aux autres, vous ne voulez vraiment pas qu'un VCC de pilotage et un autre de 0V sur le même fil! Vous pilotez donc 0 V sur la sortie ou désactivez la sortie (peut-être en la configurant comme entrée). Lorsque toutes les sorties sont désactivées, le fil est tiré à «1» (Vcc) par le pullup. C'est ce qu'on appelle un signal "câblé ET". (Vous pouvez faire la même chose en conduisant «1» ou hors tension, avec un R déroulant, puis on l'appelle un OU câblé).

Ce modèle a plusieurs utilisations, notamment autoriser n'importe quel MPU à signaler une erreur ou allumer une LED, ou leur permettre à tous d'envoyer à tour de rôle des messages sur un seul câble.

Brian Drummond
la source
4

Comme vous l'avez dit, l'utilisation de résistances pullup / pulldown sur des broches censées être des broches de sortie peut être là pour garantir un état d'entrée.

Ceci est fait pour atténuer la défaillance du micrologiciel / MCU, mais ne fonctionnera que pour se protéger contre l'état haute impédance (fondamentalement, la broche est configurée en entrée par accident).

La plupart des microcontrôleurs que je connais avec les broches d'E / S par défaut à l'état d'entrée à haute impédance au démarrage (mais aucune garantie, et je n'ai aucune expérience avec près de toutes les familles de microcontrôleurs), ce qui signifie que le code peut mettre un certain temps avant d'initialiser la broche l'état est exécuté.

Parfois, cela n'a pas d'importance, d'autres fois.

helloworld922
la source
Merci pour la réponse, qui complète également les autres réponses! Pour info, la série PIC24F définit par défaut les broches GPIO en haute impédance (entrée) lors de la réinitialisation (fiche technique des broches d'E / S).
The_Ders
3

La réponse est que cela dépend de la famille de microcontrôleurs et de son comportement par défaut lors de la réinitialisation à la mise sous tension. Si le microcontrôleur ne peut être configuré que pour "sortie" ou "entrée" sur une broche, cela signifie généralement qu'il utilise un pilote Totem-Pole pour la sortie - c'est-à-dire qu'il s'agit essentiellement de la sortie d'une porte CMOS, auquel cas le la sortie est toujours dirigée vers un rail, il n'y a donc aucune raison de l'influencer passivement. Le seul cas où il est judicieux d'utiliser des tractions / descentes sur une sortie est lorsqu'elle est configurée comme topologie Open Collector / Open Drain. Il est beaucoup plus courant de voir des options internes de pull-up / pull-down qui ne sont applicables que lorsqu'une broche est configurée comme entrée. Si vous pouvez garantir que dans votre système, l'entrée est toujours entraînée par quelque chose, cela gaspille un peu d'énergie.

vicatcu
la source
Grande explication au niveau matériel. Je vous remercie!
The_Ders
2

Vous pouvez avoir une broche qui est une sortie de temps en temps , comme pour faire I2C.

pjc50
la source
Je garderai cela à l'esprit lorsque je travaillerai avec I2C à l'avenir. Je crois qu'avec la série PIC24F, le module I2C assume un contrôle total sur les broches et les lignes nécessitent des tractions externes. Maintenant, je sais pourquoi - le module I2C configure essentiellement la broche de données comme sortie à drain ouvert / collecteur (nécessitant une résistance de rappel) ou comme entrée à haute impédance, selon que les données sont sorties / entrées de / vers le Module I2C ... ai-je ce droit? Je ne connais pas très bien I2C.
The_Ders
C'est exactement ça.
pjc50
I2C est une instance du modèle ET câblé. Le collecteur ouvert le rend aussi simple que possible avec une broche GPIO.
Brian Drummond