Dual (subir y bajar) SPI Level Translation

3

Me enfrento a un desafío interesante: estoy usando un microcontrolador con lógica de 3.3 V, pero necesito usar una interfaz SPI (4 hilos) con partes que operan en tres niveles lógicos, a saber, 1.8, 3.3 y 5 V. Obviamente, 3.3 V no es un problema, pero tengo curiosidad por saber cuál es la mejor manera de manejar los componentes de 1.8 y 5 V. Por supuesto, podría usar dos IC de traductor de nivel discreto, pero espero que haya una solución más simple (es decir, más económica y de menor tamaño). Ya tengo formas de generar el suministro de voltaje, por lo que no es un problema.

Soy consciente de la siguiente técnica de traducción de nivel MOSFET, que entiendo muy bien:

Esto permite que una señal de 3.3 V de la µC (desde la izquierda) cambie hasta 5 V a un determinado dispositivo (a la derecha). (Tendría que ser al revés para MISO). También podría cambiar el voltaje de la derecha a 1,8 V para cambiar a un dispositivo diferente. Aquí está mi problema: si tuviera que cambiar simplemente el voltaje entre 5 y 1.8 V, casi con seguridad destruiría los pines de 1.8 V cuando esté a 5 V. ¿Existe una técnica elegante para permitir un cambio a dos niveles diferentes? ¿Tiene que absorberlo y usar dos circuitos separados para las dos traducciones?

    
pregunta dpwilson

1 respuesta

2

Lo primero que debe hacer es observar las especificaciones de sus piezas con más cuidado. Es posible que algunos de sus enlaces no necesiten traducción. ¿Cuáles son los umbrales de entrada, son las entradas tolerantes a voltajes fuera de los rieles de alimentación? Es bastante común que los dispositivos de 3.3V tengan entradas tolerantes de 5V. No sé acerca de los dispositivos 1.8V.

Con el truco de Mosfet solo necesita un pullup para cada riel, también si la traducción es unidireccional y el controlador no está utilizando una salida de colector abierto, solo necesita el pullup en el lado de salida.

También necesitas pensar en la velocidad. A bajas frecuencias, el truco de Mosfet está bien, pero debido a su naturaleza de colector abierto, no se adapta bien a las altas frecuencias. Las resistencias deben tener un valor lo suficientemente bajo como para cargar la capacitancia parásita lo suficientemente rápido como para que las líneas alcancen su nivel "alto" apropiado en el tiempo. Hasta cierto punto, puede usar resistencias más pequeñas para acelerar las cosas, pero luego las corrientes más altas causan una mayor caída de voltios en los dispositivos de conmutación (tanto el mosfet de desplazamiento de nivel como los controladores de salida) que pueden causar problemas.

    
respondido por el Peter Green

Lea otras preguntas en las etiquetas