¿Algún dispositivo es compatible con el protocolo de enlace en el bus SPI-ish sin cables adicionales?

3

El bus SPI de 4 cables tiene una ventaja de velocidad considerable sobre I²C, pero desafortunadamente, por lo que sé, no tiene una forma estándar de realizar el handshaking sin usar cables adicionales más allá de los cuatro (y cuatro cables ya son lo suficientemente molestos). .

Para un proyecto reciente en el que el esclavo era un CPLD, implementé un enfoque agradable para proporcionar el protocolo de enlace en una dirección (el esclavo puede hacer la espera del maestro) y también eliminar la necesidad de la línea / FS. Las señales son Reloj, MOSI (master-out / slave-in) y MISO (master-in slave-out).

Reloj inactivo bajo; Las salidas MISO y MOSI en el flanco ascendente del Reloj y se muestrean en el flanco descendente. Dos o más flancos ascendentes consecutivos en el cable MOSI mientras el reloj está bajo restablecerán la comunicación.

Cuando el reloj está bajo y MOSI es alto, MISO indicará si el esclavo está listo. Cuando tanto el reloj como MOSI están bajos, MISO indicará si el esclavo quiere atención.

Si bien este enfoque funciona muy bien cuando se comunica entre mi CPLD y mi controlador, sería bueno si pudiera usarse el mismo enfoque cuando se comunica entre dos microcontroladores estándar. Las características más importantes que serían necesarias para que esto funcione bien serían:

  1. la capacidad del controlador esclavo reajustarse al recibir alguna número (probablemente 2 o 3) de aumento bordes en MOSI mientras el reloj está inactivo;
  2. la habilidad del esclavo para controlar el estado de inactividad del reloj de MISO, y preferiblemente cargar valores separados para utilizar cuando MOSI es alta o cuando está bajo;
  3. preferiblemente, la capacidad para el maestro para controlar el estado de MOSI que saldrá cuando el reloj está inactivo entre bytes (en mi protocolo, los comandos que necesitan apretón de manos tiene el conjunto de LSB, pero eso es un poco molesto);
  4. para los puertos SPI almacenados en búfer, la capacidad para que el maestro espere en el línea de datos del esclavo.

¿Hay algún controlador o dispositivo esclavo común que ofrezca tales funciones, o funcione de esa manera?

    
pregunta supercat

3 respuestas

1

"Introducción al diseño de circuitos asíncronos" por Davis y Nowick (en particular, la Figura 1 y la Figura 2 y el texto cercano) describe dos protocolos de apretón de manos como "generalizados". El protocolo de 4 ciclos, también conocido como RZ (retorno a cero), el protocolo de 4 fases y la señalización de nivel. Y la señalización similar pero más complicada de implementar en el protocolo de 2 ciclos, también conocida como transición, 2 fases o NRZ (sin retorno a cero), que es muy similar a la "codificación de datos estroboscópicos" utilizada por SpaceWire y FireWire. Cualquiera de los dos parece que tiene la mayoría de las funciones que solicitaste es similar a SPI ya que hay exactamente 4 señales, las 4 señales son de una sola vía (no son detecciones pasivas), el maestro puede pausar el esclavo indefinidamente hasta que esté listo para el siguiente bit del esclavo, etc. También tiene una función de supercat que SPI no tiene: el esclavo puede pausar el maestro indefinidamente hasta que esté listo para el siguiente bit del maestro.

No conozco ningún chip que tenga incorporado el protocolo de 4 ciclos, pero parece que sería fácil golpear a un microcontrolador o CPLD. De hecho, parece que sería más fácil hacer bit bang que SPI, ya que (como SPI) el maestro no tiene requisitos de tiempo, y (a diferencia de SPI) el esclavo tampoco tiene ningún requisito de tiempo.

¿Es posible usar el protocolo de 4 fases para transferencias de bits síncronas y, de alguna manera, construir un protocolo de nivel superior además de eso para obtener las otras cosas que el supercat desea: alineación de bytes, alineación de trama de inicio de comando, atención / ocupado / estado inactivo, etc?

    
respondido por el davidcary
1

Lo más cercano que sé de lo que está preguntando es UART / RS-232 con protocolo de enlace RTS / CTS (4 cables en total).

LMX9838 de National Semiconductor (es un módulo Bluetooth) utiliza ese protocolo de comunicación como Un dispositivo esclavo. Y puede implementarlo con 2 GPIO adicionales en cualquier microcontrolador.

En última instancia, puede implementar cualquier tipo de protocolo de enlace con cualquier par de dispositivos Master-Slave, siempre y cuando tenga control sobre un par de GPIO adicionales en ambos (es decir, utilizando uC, FPGA, CPLD ...).

    
respondido por el Arturo Gurrola
1

Si está buscando algo compatible con los sistemas SPI disponibles en el mercado y, sin embargo, utiliza menos cables, puede que le guste el Sistema Roman Black Shift1 para registros de turnos de 1 cable .

    
respondido por el davidcary

Lea otras preguntas en las etiquetas