Implementación de software SPI en SBC

2

Tengo un SBC ts7800 y necesito comunicarme a través de un bus SPI. En su documentación, dicen que no hay SPI de hardware, e implementan en su código de muestra "software SPI". Para mí, esto funciona ahora, pero cuando veo el reloj SPI en un osciliscopio, parece desigual (normalmente el reloj permanece más alto durante un período de tiempo más largo del que permanece bajo, pero a veces es lo contrario). Me preocupa que cuando comience a agregar más subprocesos y códigos en la mezcla, los problemas con el SPI controlado por software se harán más evidentes. ¿Alguien ha tratado un problema como este antes y qué hiciste para corregirlo? ¿O fue incluso un problema?

Preferiría no utilizar interrupciones para el bus SPI porque tengo procesos igual de importantes (si no más importantes) en los otros subprocesos.

Gracias por tu ayuda.

    
pregunta Reid

2 respuestas

6

No hay ningún problema aquí porque SPI es síncrono. Los datos se transfieren en los bordes del reloj. Siempre que se respeten los tiempos mínimos de configuración y espera, no debería haber ningún problema. Extender aleatoriamente las secciones de una forma de onda SPI debería ser irrelevante para los dispositivos SPI correctamente implementados.

    
respondido por el Olin Lathrop
4

Esto parece que hay interrupciones que ocurren durante la comunicación SPI. Si le preocupa que desactive las interrupciones antes de iniciar SPI y vuelva a habilitarlas después. No es que le deba preocupar: a diferencia de UART, que es un SPI crítico para la temporización, está sincronizado y los bordes del reloj determinan cuándo un bit se desplaza hacia adentro / afuera. Si lo desea, puede estirar los pulsos del reloj por un tiempo indefinido.

    
respondido por el stevenvh

Lea otras preguntas en las etiquetas