Elle n'a pas de valeur fixe, c'est sur, par contre les signaux MISO et MOSI sont strictements définit sur les fronts de l'horloge et le système à µC tel que présenté ici les transmet tour à tour.
Si c’était du code VHDL ça serait OK car concurrentiel, ici on est sur du séquentiel, il faut donc faire très attention au synchronisme.
Pour que ça marche en µc, il faut que les changement d’état ne se fassent pas sur le front d'horloge et que ton µC aille bien plus vite que ton signal d'horloge SPI. Sur la plupart des périphériques la mise à jour des info est faite sur le front opposé à celui d'acquisition.
Cela fait plus de 10 ans que je bosse dans l’électronique numérique, et régulièrement avec des liaisons UART, I2C, JTAG et SPI donc il n'y a pas d’énormité dans ce que j'ai écrit. Le système de buffer que tu proposes n'est pas transparent et c'est souvent de là que viennent les problèmes.