¿Hay algún problema de metastabilidad con los puertos esclavos SPI del microcontrolador que pueden funcionar durante la suspensión?

2

Si uno está usando SPI para interconectar dos microcontroladores que pueden pasar mucho tiempo durmiendo, y si se supone que el puerto esclavo SPI debe activar su controlador cuando se reciben los datos, eso sugiere que el cable del reloj SPI no debería estar sincronizado con el reloj del último microcontrolador. Si, de hecho, el reloj y el reloj del procesador son asíncronos, eso parecería implicar que los datos escritos por el microcontrolador en su puerto esclavo no pueden sincronizarse dos veces con el reloj SPI [ya que debe estar disponible para el maestro SPI en el próximo reloj SPI ciclo], ni se puede garantizar que ocurra en ningún otro momento que no sea el borde del reloj SPI [ya que el esclavo SPI no tiene idea de cuándo será eso]. El puerto SPI en, por ejemplo, La serie Freescale KL25 especifica que si se produce una insuficiencia de datos, el puerto emitirá los datos anteriores y los siguientes datos escritos por el controlador se transmitirán después del byte de datos repetidos. Poner todas esas condiciones juntas sonaría como una receta para posibles problemas de metastabilidad si el maestro comienza a tratar de leer un byte tal como lo escribe el micro esclavo.

No sé si sería posible diseñar un puerto esclavo SPI que garantice que siempre repetiría un byte de datos y luego colocaría un nuevo byte después, o bien transmitiría el nuevo byte directamente. ¿Qué pueden o deben hacer los diseños de puerto esclavo SPI para minimizar estos problemas, y qué puede hacer el software en el maestro o esclavo para garantizar que no causen problemas?

    
pregunta supercat

0 respuestas

Lea otras preguntas en las etiquetas