いったん頭だしができた後も継続的にCPU割り込みを使う理由が分かりません。4バイト固定ならDMAで4バイトずつ転送すればいいと思うのですが。
エラー状態から復帰することを前提にしているのでしょうか。
>酔漢さん
コメントどうもです。理由は現在、強い理由と弱い理由の2つがあります。
強い理由としては、DSP側がスレーブになるプロトコルで通信しており、マスターである外部のマイコンの指令によって送受信を切り替えている(=全二重ではなく半二重通信)ため、マスターからフレーム先頭を受信後、即座にDSPから送信しなければならない事態があるためです。
弱い理由としては、1フレームを可変長にしようかと考えていたためです。現在ヘッダ(SPIのハードウェア的処理単位4byteのうち先頭1byte)を除いた1フレームは32byte固定(つまり実質1フレームはceil(32/3)*4=44byte)としたため、仮に強い理由で示した送受信の切り替えがなく受信のみでしたら、一度フレーム先頭を検出すれば、ご指摘のとおりDMAで可能です。しかし可変長となるとDMAの転送数をどこかしらで再設定する必要があり、それで割込みと併用して解決する方法を検討していました。
勿論割込みをなくした方がスマートであると思いますので、これらの2つの理由を解消できる方法を検討してみたいと思います。