Definizione Interrupt Service Routine

lesto:
che il chip possa funzionare in modlità non bloccante lo immaginavo, ma la libreria è bloccante.

Non si blocca nulla, la SPI, lato master, non ha alcun modo, hardware, per sapere se è andata a buon fine la trasmissione, semplicemente emette tutti i bit e poi setta il relativo flag, l'attesa serve solo se devi inviare più byte di seguito, fino a che non hai finito quello in corso non puoi inviarne.
Eventualmente si può prevedere un risposta di consenso (se possibile farlo), basta un singolo byte, da parte dello slave dopo che ha ricevuto un pacchetto dati, se questo byte non arriva, o arriva con un valore non atteso, vuol dire che c'è stato un problema nella trasmissione del pacchetto dati.
Diverso è il discorso lato slave dove il device si aspetta di ricevere un certo numero di impulsi di clock, quanti dipende dalla dimensione della word SPI (può essere anche di 16-32 bit), se non arrivano tutti rimane in attesa, senza settare il flag di ricezione avvenuta, in eterno o, peggio, ne prende alcuni dalla trasmissione seguente con effetti disastrosi sul dato, in questo caso è necessario prevedere un time out.