Si quiero leer un (montón de) chips 74HC165 a través de un puerto SPI en un microcontrolador, esto es bastante simple. Conéctelos a través de Q7 a DS en cada uno, aplique el Q7 final a MISO, notCE a SS y CP a SCK. Esto funciona bien.
Pero ahora, ¿cómo comparto el bus SPI con otros dispositivos que quiero leer? La salida Q7 del 165 nunca es hi-Z, por lo que no puedo compartir el pin MISO con otros dispositivos. Necesitaría alguna forma de "separarlo", un búfer de algún tipo.
Sé que hay chips de la serie 74 que tienen varios búferes que se pueden hacer hi-Z (como un 74HS240), pero ese es un chip adicional completo solo para poder compartir el registro de desplazamiento. ¿Quizás alguna forma astuta de poner un transistor entre el Q7 final y el MISO del microcontrolador, controlado por la línea SS?
Editar: Alternativamente, ¿alguien puede sugerir algún otro registro de desplazamiento de salida en serie paralelo que tenga una línea de salida en serie tristate y, por lo tanto, adecuado para usar en un bus SPI?
¿Alguien puede sugerir algún otro registro de desplazamiento de salida en serie paralelo que tenga una línea de salida en serie tristate y, por lo tanto, adecuado para usar en un bus SPI?
Mouser, Newark y algunos otros distribuidores y proveedores tienen un filtro de selección que ayuda cuando busco "algo como un 74HC165, pero con salida en serie tristate":
74HC589: entrada serial o paralela de 8 bits; salida en serie; registro de desplazamiento con salida de 3 estados. "El HC589A interactúa directamente con el puerto de datos en serie SPI en las MPU y MCU CMOS".
-- En la hoja de datos de Semiconductores ; Hoja de datos de Fairchild (por lo que cumple con el criterio de "debe tener una segunda fuente" que tienen algunos proyectos, como lo menciona Jason S).
Como notó, el 165 no es un dispositivo SPI 'completo' porque no establece tres estados en su salida.
Si tiene un solo 165 en su bus SPI y la velocidad no es un gran problema, puede colocar una resistencia (¿10k?) Entre la salida 165 y el pin uC MISO. Otros chips SPI (que hacen tri-state su salida) anularán la unidad débil a través de la resistencia, pero sin otros chips activos, la unidad débil prevalecerá, pero es posible que deba reducir la velocidad del reloj (solo para el 165).
Si tiene varios 165, puede usar un chip multiplexor (151). Esto cuesta líneas de selección adicionales para el chip mux, pero puede compartir las líneas notCE del 165 (que de otro modo habrían estado separadas) y usar una de las entradas para los chips SPI 'reales'.
El 74xx125 y el '126 son búferes cuádruples con salidas de tres estados, controlados individualmente; puede usar un paquete para almacenar en búfer cuatro 165...
Usted describió cómo puede conectar en cascada un montón de chips 74HC165 en una cadena larga. Un montón de chips 74HC595 también se pueden conectar en cascada en una cadena de margarita similar.
Una forma de "compartir el bus SPI con otros dispositivos" es encadenar todos sus chips en una larga cadena tipo margarita SPI . Ha pasado un tiempo desde que lo hice, pero creo recordar que podía poner chips 74HC165, chips 74HC595 y chips similares en un bucle largo. No importa cuántos chips haya en el bucle de cadena o en qué orden estén, solo necesité 4 pines en el microcontrolador.
El pin MOSI del microprocesador impulsa el pin MOSI del primer chip de la cadena, cada chip está conectado en cascada, por lo que su salida serial impulsa la entrada serial del siguiente chip de la cadena, y el pin MISO del último chip de la cadena impulsa el MISO pin del microprocesador.
El microprocesador registra la entrada/salida del ciclo completo de datos cada vez que desea cambiar cualquier salida o leer cualquier entrada.
Así es como funciona JTAG , ¿verdad?
Un bucle tan largo en cadena tipo margarita es más lento, pero requiere menos pines en el microcontrolador que la "configuración SPI de esclavo independiente". Desafortunadamente, algunos chips que afirman ser compatibles con SPI no se pueden conectar en cadena.
La única razón por la que incluso está considerando SPI es porque se está quedando sin pines en el microcontrolador y está conectado a algo que no necesita altas velocidades, ¿verdad?
Wouter van Ooijen
jason s
LeoNerd
Diego C Nascimento