1から全部自分で書けばそんなことは無いのだが、MPLAB Code Configurator(MCC)に頼ったり、FatFsに頼ったりしてる。
当然、機能がダブる。
両方残したままにして、ダブらせておくのも手だが、一応比較してみる。
まずは、MCCの吐いたコードから。
肝心の部分は SPI1_Exchange() だ。

いっぱい書いてあるけど、余分を除けばこうなる。

ああ、やってることはわかる気がする。
登場するステイタス用のレジスタは以下の通り。

一方、Petit FatFsの方はこうなっている。

シンプルなのは、データの読み込みに特化しているからだと思う。
ステイタス確認用のレジスタが微妙に違うのもその関係だろう。