Ага: там гребаного FIFO нет на RX/Tx. А здесь на Tx трехбайтный
FIFO, а на RX - четырехбайтный. И пляши с этим, как хочешь. У меня-то тоже на F103 вообще без проблем (если в указанное в errata не лезть) SPI работал и в блокирующем режиме, и через DMA - всякие разные экранчики, вот: youtube
А SPL здесь ни при чем. Я, пока искал, как этот чертов FIFO сбросить, нашел несколько аналогичных вопросов на SO, причем, один - вообще из калокуба (и при работе с DMA)! И везде народ к выводу приходил, что нужно перед каждым считыванием сбрасывать SPI и заново инициализировать! Вот такой Содом.