> very tempting to leave the SPI transfers (at least for now) in-line code rather than interrupt driven.
Especially if the FRAMs you're using can run at 20-40MHz. The CPU SPI maximum speed is 12MHz. You'd be hard pressed to get the CPU to respond to interrupts at that rate, so you might as well wait.
> The fram requires multi-byte commands separated by a de-activated /CS.
I initially read that as "multiple bytes, each separated by a de-activated /CS", but after reading some Cypress FRAM data sheets and their AN304 I take it you meant multi-byte commands with CS continuously asserted, but then the separate commands having CS deasserted between them. I think it will be more difficult to guarantee that CS remains asserted between bytes than making sure it deasserts between commands. If anything interrupts the SPI transfer you may get SS dropping in the middle of a command. I'd suggest programming SS as GPIO (RGPIO if using the 8-bit SPI) and control it manually. If you're using the 16-bit SPI with the FIFO then you may be able to guarantee "continuous multi-bytes" by keeping the FIFO full, but during a long read or write sequence your code may still get interrupted for long enough to drop out. Another advantage of using RGPIO to drive SS is that you'll be able to single-step and breakpoint your code.
Tom