Cada vez que el maestro registra el valor de los datos de una palabra (la longitud normal de la palabra es de 8 bits, pero algunos maestros son programables), se enviará una palabra de datos y se recibirá una palabra de datos. Si el esclavo está "listo" para el intercambio de datos, genial. Si no, el maestro todavía enviará una palabra y recibirá una palabra; lo que sucederá como resultado depende del diseño del esclavo.
Un dispositivo esclavo de hardware típico se diseñará de tal manera que incluso cuando el dispositivo en sí esté "ocupado", su hardware SPI siempre estará listo para intercambiar datos, o siempre estará listo para tener el estado de solicitud maestra al proporcionarle un flanco descendente en / CS y sincronización en algún comando de solicitud de estado. Si el dispositivo está ocupado, es posible que el hardware no pueda hacer nada más que enviar una respuesta "Estoy ocupado", pero si el dispositivo envía una respuesta que dice "No estoy ocupado", es probable que esté listo para intercambiar cierta cantidad de datos sin más demora (la cantidad exacta de datos dependerá del dispositivo, y posiblemente de su estado informado). Por ejemplo, un chip de memoria SPI podría diseñarse de modo que una vez que informe que no está ocupado, siempre estará listo para enviar o recibir una página de datos.
Tenga en cuenta que las implementaciones esclavas SPI de muchos microcontroladores se quedan cortas en este sentido. SPI tiene una asociación muy rígida de bytes de datos entrantes y salientes; algunos controladores requieren que la CPU lea cada byte entrante y determine la respuesta entre el último reloj de un byte y el primer reloj del siguiente, y envíe datos no especificados si la CPU no reacciona a tiempo. Algunos otros son mejores de varias maneras, pero muchos requieren efectivamente que el maestro adivine cuándo el esclavo estará listo para cada byte, o bien use otro cable para ese propósito. Incluso las implementaciones que usan otro cable pueden ser problemáticas, ya que si el protocolo de intercambio de informes informa "listo", el maestro envía un byte, y el cable continúa informando "listo", puede no estar claro si el esclavo todavía está listo o si el esclavo está listo. esclavo no está listo, pero no ha llegado a configurar su cable para indicar "no listo". Los UART a menudo incluyen una lógica de control de flujo de hardware que dejará de afirmar una línea "lista" en cuanto no esté preparada, incluso sin la intervención de la CPU, pero nunca he visto un esclavo SPI que lo haya hecho.