La gran mayoría de los dispositivos SPI serán perfectamente felices a cualquier velocidad de datos por debajo del máximo especificado. Uno podría realizar parte de una transacción, tomar un descanso en cualquier momento, regresar unos años más tarde y finalizarla. Siempre que no haya fallas técnicas en el reloj, en la selección o en las líneas eléctricas, la transacción se completará normalmente.
Hay tres advertencias principales a tener en cuenta:
- En general, una vez que una transacción ha comenzado en un bus SPI, ninguno de los cables en el bus puede usarse para ningún otro propósito hasta que se complete esa transacción. En general, esto significa que una interrupción no puede usar un bus SPI, excepto cuando es lo único que usará el bus (es posible que la interrupción tenga un uso exclusivo del bus en algunos momentos, y para el principal programa para tener uso exclusivo en otros momentos). Algunos dispositivos incluyen pines especiales para permitirles "ignorar" el bus en medio de una transacción, pero incluso con tales características, no recomendaría intentar que una interrupción suspenda una transacción SPI con un dispositivo, realice una transacción con otro dispositivo, y luego deje que el código subyacente reanude su transacción con el primero. Es mejor que la interrupción use un bus SPI separado.
- Algunos dispositivos pueden comportarse de manera extraña si una transacción continúa durante demasiado tiempo. Algunos chips de reloj en tiempo real, por ejemplo, no almacenan doblemente los registros de hora / fecha, sino que bloquean los eventos de "avance de tiempo" que ocurrirían durante una transacción y los aplican después de que se complete la transacción. Si una transacción lleva tanto tiempo que llega un segundo evento de avance de tiempo, el último evento será ignorado, lo que hará que el reloj se deslice por esa cantidad de tiempo. Realmente no veo ninguna excusa para diseñar un chip de esta manera (incluso si uno no quisiera el costo de duplicar los datos, especificando que el software fue responsable de garantizar que su coherencia sería más barata que agregar la lógica de "aplazamiento de actualización", y minimizaría la probabilidad de perturbación del reloj), pero existen tales chips.
- Hay algunos dispositivos que usan una señal de reloj y datos, pero que usan una "pausa" para indicar el encuadre. El ejemplo más reciente de esto que he encontrado fue una cadena de luz LED de controlador por bombilla. No me gustan particularmente tales diseños (uno podría indicar el encuadre utilizando tres bordes ascendentes consecutivos en el cable de datos sin ningún reloj intermedio) pero, de nuevo, tales dispositivos existen.
Si bien ciertos tipos de comunicaciones requieren el uso de tiempos particulares, rara vez hay alguna razón para que los dispositivos SPI los requieran. Sin embargo, uno debe ser consciente de la existencia de tales dispositivos.