SPI: ¿Pueden las líneas MOSI y MISO estar en cortocircuito para la verificación de datos?

2

He desarrollado un controlador para el maestro SPI que puede ejecutarse a una velocidad de bits máxima de 20MHz, pero no tengo ningún esclavo SPI que pueda alcanzar los 20 MHz. Para la verificación de datos, he puesto en cortocircuito ambos pines MOSI y MISO y comparando los datos recibidos con los datos que he transmitido. Solo quiero preguntar si este caso de prueba será suficiente para la verificación de datos a 20 MHz. También para probar el pin de selección de chip, lo he probado con el osciloscopio.

    
pregunta Ameer Hamza

2 respuestas

2

Si bien puede realizar una prueba de este tipo a menos que intente manejar MISO en conflicto, y una falla observada podría ser significativa, el éxito en dicha prueba de bucle invertido tiene un significado limitado.

Además de los problemas analógicos, una interfaz SPI es fundamentalmente una lógica con estado . Para que el esclavo produzca bits en respuesta al reloj maestro, debe ocurrir una de dos cosas:

  • El esclavo recibe el reloj maestro después de la propagación y los retrasos analógicos, y utiliza directamente una versión almacenada en búfer para registrar un registro de datos que responde al maestro después de los retrasos internos, analógicos y de propagación.

  • El esclavo muestra el reloj maestro con un reloj interno más rápido, y usa que para habilitar y internamente cronometrado registro de datos que responde. Por lo tanto, además de los retrasos anteriores, hay un jitter de muestreo y posiblemente uno o más periodos internos de avance del estado necesarios para generar una respuesta. Esto es particularmente común para las MCU que funcionan como esclavos SPI.

Cualquiera de las anteriores podría ser lo suficientemente alta como para hacer que los datos de respuesta lleguen después de el borde del reloj en el que el maestro los muestreará, o con suficiente anticipación para satisfacer una requisito de tiempo de instalación.

    
respondido por el Chris Stratton
2

No, no puedes.

Incluso si encuentra un dispositivo de 20MHz, puede probarlo solo para ese dispositivo. Otros dispositivos tendrán diferentes tiempos.

Espero que los datos que llegan al pin MISO sean los más críticos, ya que es el viaje de ida y vuelta más largo: master_clock_out - > slave_clock_in - > slave_data_out - > master_data_in. No lo prueba con un bucle de retorno directo ya que no hay esclavos involucrados.

Para saber si una interfaz funcionará, debe leer y verificar la especificación de tiempo de todos los chips involucrados.

También el tiempo dependería de la carga capacitiva del reloj y las líneas de datos. Eso será muy de una tabla a otra y de un dispositivo a otro.

    
respondido por el Oldfart

Lea otras preguntas en las etiquetas