Question:
Le moyen le moins cher de traduire un signal SPI 5V en SPI 3V?
Mike
2011-08-14 02:09:45 UTC
view on stackexchange narkive permalink

J'ai un MCU qui fonctionne à 5V et un écran qui recommande un niveau logique 3V. Ils sont connectés via SPI qui peut fonctionner jusqu'à 1,5 Mhz. Quel est le meilleur moyen et le moyen le moins cher (pas nécessairement le même), pour convertir le 5V en 3V? La connexion SPI est à sens unique (SCK, MOSI, CS uniquement; pas besoin de l'écran LCD pour communiquer avec le MCU, donc la traduction est de 5V à 3V uniquement).

Merci, Mike

Six réponses:
Majenko
2011-08-14 02:16:29 UTC
view on stackexchange narkive permalink

Le moyen le plus simple (je ne sais pas si c'est le meilleur) est d'utiliser un simple diviseur de tension. 3.3V est 2/3 de 5V, donc un diviseur 1: 2 devrait fonctionner:

enter image description here

Russell McMahon
2011-08-14 02:35:12 UTC
view on stackexchange narkive permalink

Un simple diviseur résistif est la méthode la moins chère et peut servir vos objectifs assez bien.

Placer un petit condensateur sur la résistance supérieure aidera à rectifier les bords causés par la charge capacitive. Tant que la constante de temps RC des deux résistances en parallèle combinée à la capacité de charge de sortie est beaucoup plus rapide que le temps de montée et de descente des signaux, ce condensateur ne devrait pas être nécessaire.

Il existe de nombreuses solutions bidirectionnelles et actives disponibles. À titre d'exemple uniquement d'une solution compacte, Maxim's MAX3023 fournit 4 pilotes bidirectionnels dans un package TSSOP.

enter image description here

Olin Lathrop
2011-08-14 02:39:37 UTC
view on stackexchange narkive permalink

Comme l'a dit Matt, le plus simple est un diviseur de résistance. L'inconvénient est qu'il ralentira un peu les bords. Vous serez probablement d'accord avec les 1 kΩ et 2 kΩ qu'il montre, mais ce serait une bonne idée de vérifier la forme d'onde avec un oscilloscope.

Lorsque la vitesse est un problème, comme ce serait probablement le cas si vous exécutiez le bus SPI à 10 MHz, alors un convertisseur de niveau explicite serait probablement mieux. Ces puces ont deux blocs d'alimentation et généralement une entrée de direction, que vous pouvez lier en permanence dans une direction dans votre cas.

Qu'en est-il du diviseur constitué de condensateurs?
@Dor - c'est comme une maison de cartes :-). Il serait applicable dans certaines circonstances mais pas ici sans que des mesures exceptionnelles ne soient prises pour maintenir le niveau DC - ce qui est important ici. .
@Dor: Un diviseur capacitif pur perdrait le niveau CC, donc ne fonctionnera pas. Cependant, un diviseur capacitif en parallèle avec le diviseur résistif peut être utilisé pour équilibrer la réponse échelonnée immédiate avec la réponse CC à long terme. C'est exactement ce que font les sondes d'oscilloscope. L'ajustement de la station de compensation d'une sonde d'oscilloscope fait varier l'un des condensateurs de sorte que les rapports de diviseur CC et CA correspondent. L'inconvénient d'un diviseur capacitif supplémentaire avec le diviseur résistif est la charge capacitive supplémentaire.
@Olin Lathrop: La raison pour laquelle le diviseur purement résistif arrondit les bords est qu'il y a beaucoup plus de capacité parasite en parallèle avec le bas que le haut. L'idéal serait d'ajouter une capacité parallèle uniquement au sommet du diviseur, en une quantité juste suffisante pour compenser la capacité en bas. Cela augmenterait la charge capacitive sur la sortie, mais ce serait toujours inférieur à celui de la connexion directe de la sortie.
B Pete
2011-08-14 04:43:51 UTC
view on stackexchange narkive permalink

Si votre processeur a des broches de sortie de drain ouvertes, vous pouvez les connecter directement à l'écran, en ajoutant une résistance de rappel à l'alimentation 3.3V de chaque ligne. Vous devrez peut-être définir les broches pour ouvrir le mode drain à l'aide d'un registre MCU.

Remarque: J'ai écrit ce qui suit avant de relire la question et de noter que l'interface SPI en question est émis uniquement et il n'y a pas de ligne MISO. Je l'ai laissé pour référence.

Si votre processeur a des entrées tolérantes à 5V (consultez la fiche technique), vous pouvez connecter la ligne MISO de l'écran directement au MCU, à condition que l'affichage Voh soit plus élevé que le MCO Vih niveau.

bobflux
2017-09-06 21:03:54 UTC
view on stackexchange narkive permalink

Je recommanderais un tampon 74LVC.Entrées tolérantes 5V, sorties 3,3V, bon marché, rapides, petits, facilement disponibles et une seule pièce à souder au lieu de beaucoup de résistances.

Le LVC126 a également trois états, ce qui peut être utile.

Paul B.
2017-09-06 17:02:02 UTC
view on stackexchange narkive permalink

Non, en fait, la manière la plus simple d’interfacer est celle utilisée par Adafruit Huzzah;une diode avec cathode au signal 5 V et anode à l'entrée ESP8266.Cela produit aucun retard dans le pull-down et il y a un pull-up interne par défaut dans l'ESP8266, bien que vous puissiez fournir un pull-up à 3,3 V si cela est jugé nécessaire.

Il n'y a aucune raison de fournir une conversion de niveau à partir d'une sortie ESP8266 car 3,3 V est un HAUT logique valide pour CMOS à 5 V.

Les pull-ups internes peuvent être trop lents pour 1,5 MHz (et l'écran LCD peut ne pas en avoir).Une fois que vous avez ajouté un pull-up externe de 1 à 2 kOhm, vous obtiendrez une consommation de courant proche de celle suggérée par Olin dans sa réponse.


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 3.0 sous laquelle il est distribué.
Loading...