PushPullOpenDrain - Kasimashi/Systemes-embarques GitHub Wiki
Push Pull et drain ouvert
Les microcontrôleurs utilisent des broches pour s'interfacer avec le monde extérieur. En général, les broches sont les points physiques du boîtier d'un circuit intégré (CI) où une connexion peut être établie avec la carte de circuit imprimé. Derrière chaque broche (à l'intérieur du circuit intégré) se trouve un circuit spécial utilisé pour la piloter. Ce circuit peut être configuré pour permettre à la broche de s'interfacer avec différents types de circuits numériques et analogiques. Le choix de la configuration appropriée des broches est une partie importante de la conception d'un système embarqué. Dans cet article, nous aborderons les types de configurations de sortie les plus courants et leurs applications.
Afin d'expliquer les spécificités de chaque configuration de sortie, il faut d'abord introduire les termes suivants :
-
Broche à haute impédance (High-Z, Hi-Z) - Une broche caractérisée par une haute impédance qui supprime efficacement son influence sur le circuit électrique auquel elle est connectée. Il n'est pas activement piloté et « flotte » à moins qu'un autre dispositif ou circuit externe (pull-up/pull-down) ne le pilote.
-
Broche flottante – Une broche est « flottante » si elle est laissée non connectée et n'est pas non plus pilotée par un circuit à l'intérieur du circuit intégré. Son niveau de tension est indéfini et imprévisible. Une broche à haute impédance qui n’est pas pilotée par un circuit pull-up ou pull-down est dite flottante.
Push Pull
Le push-pull est la configuration de sortie la plus courante. Comme son nom l’indique, la sortie push-pull est capable de piloter deux niveaux de sortie. L'un est tiré vers la terre (tirer/absorber le courant de la charge) et l'autre est poussé vers la tension d'alimentation (pousser/sourcer le courant vers la charge). La sortie push-pull peut être implémentée à l'aide d'une paire de commutateurs. La mise en œuvre pratique dans un circuit intégré implique l'utilisation de transistors.
Sur la figure 1, nous pouvons voir une implémentation de sortie push-pull utilisant un transistor PMOS et un transistor NMOS. Sur le côté gauche se trouve le fonctionnement pendant la Push Phase et sur le côté droit, le fonctionnement pendant la Pull Phase.
- Résistances pull-up et pull-down – Ces résistances sont utilisées pour définir un niveau spécifique (logique 0 ou logique 1) sur une broche flottante. Une résistance de rappel est connectée à l'alimentation afin de pouvoir tirer la broche flottante jusqu'à un niveau logique élevé. Une résistance pull-down connecte la broche flottante à la masse (logique 0).
- Push Phase – Lorsque le signal interne connecté aux grilles des transistors (voir la figure ci-dessus) est réglé à un niveau logique bas (logique 0), le transistor PMOS est activé et le courant le traverse du VDD à la broche de sortie. Le transistor NMOS est inactif (ouvert) et ne conduit pas.
- Pull Phase – Lorsque le signal interne connecté aux grilles des transistors est réglé à un niveau logique élevé (logique 1), le transistor NMOS est activé (fermé) et le courant commence à le traverser de la broche de sortie au GND. Dans le même temps, le transistor PMOS est inactif (ouvert) et ne conduit pas de courant.
Ce type de sortie ne permet pas de connecter plusieurs appareils ensemble dans une configuration de bus, comme la sortie à drain ouvert. La configuration push-pull est le plus souvent utilisée dans les interfaces dotées de lignes unidirectionnelles (la transmission sur la ligne se fait uniquement dans une seule direction – SPI, UART, etc.).
Comme les sorties push-pull sont constamment pilotées (hautes ou basses), elles offrent de meilleures performances en ce qui concerne les pentes des signaux numériques de sortie générés.
Il est à noter qu'une broche de sortie configurée en push-pull peut dans la plupart des cas être reconfigurée dynamiquement pour devenir une entrée. Ceci est réalisé en fermant les deux transistors, obtenant ainsi un état d'impédance élevée sur la ligne. La ligne peut ensuite être pilotée à partir d'autres appareils externes et détectée avec une logique dédiée à l'intérieur du circuit intégré.
Open Drain
Dans une configuration à drain ouvert, la logique derrière la broche ne peut la conduire qu'à la masse (logique 0). L'autre état possible est la haute impédance (Hi-Z). La mise en œuvre implique l'utilisation d'un seul transistor. Si sa borne de drain est ouverte (l'appareil est éteint), la broche reste flottante à l'état Hi-Z. Le conduire à un niveau logique élevé nécessite l’utilisation d’un circuit ou d’un composant supplémentaire. Dans la plupart des cas, une résistance de rappel externe est utilisée (il existe des microcontrôleurs qui fournissent des résistances de rappel internes pour les configurations à drain ouvert).
Sur la figure 2, nous pouvons voir une sortie à drain ouvert. Il est implémenté à l'aide d'un transistor MOS à canal N qui met la broche de sortie à la masse lorsque le transistor est passant et la laisse flottante lorsque le transistor est bloqué.
Les sorties à drain ouvert sont le plus souvent utilisées dans les interfaces de communication où plusieurs appareils sont connectés sur la même ligne (par exemple I2C, One-Wire, etc.). Lorsque toutes les sorties des appareils connectés à la ligne sont à l'état Hi-Z, la ligne est amenée à un niveau logique 1 par défaut par un pull-up. N'importe quel appareil peut tirer la ligne vers 0 logique en utilisant sa sortie à drain ouvert et tous les appareils peuvent voir ce niveau.
Il y a quelques éléments à prendre en compte lors de l'utilisation d'une résistance de rappel avec la configuration de sortie à drain ouvert :
Pente du front montant – La résistance de rappel, en combinaison avec la capacité inhérente de la ligne, forme un filtre passe-bas. En fonction de la valeur de la résistance et de la capacité de la ligne, il peut y avoir une différence visible dans les pentes des fronts montants par rapport aux fronts descendants. Le front descendant est plus net car il est obtenu en utilisant le transistor qui a une très faible résistance interne. Le front montant, cependant, est formé par la résistance pull-up et l'effet de filtrage passe-bas mentionné ci-dessus est plus prononcé.
Consommation d'énergie et interférences sonores – Un compromis existe lors du choix de la valeur des résistances de rappel. Lorsqu'un appareil sur la ligne pilote le niveau logique 0, un courant plus élevé circulera à travers des résistances de rappel avec des valeurs inférieures, ce qui augmentera la consommation d'énergie. Cependant, le choix de résistances de valeur plus élevée entraînera à son tour un courant plus faible qui circulera à travers la résistance, ce qui facilitera la détection des interférences externes (bruit) sur la ligne.
En conclusion
- La sortie push-pull est la mieux adaptée aux interfaces de communication dotées de lignes unidirectionnelles (par exemple SPI, UART, etc.). Le drain ouvert est couramment utilisé pour les interfaces de communication bidirectionnelles à ligne unique, où plus de deux appareils sont connectés sur la même ligne (par exemple I2C, One-Wire, etc.)
- La sortie à drain ouvert a une consommation d'énergie plus élevée pendant les transferts actifs en raison des résistances de rappel utilisées.
- En général, la sortie push-pull a des pentes plus rapides que la sortie à drain ouvert.