Даже проверил, что без него будет: ожидаемо, RXNE устанавливается лишь после приема второго байта.
И байтовый доступ к DR обеспечил (макросом). Вот, как твой, только мой SPIDR это: *((uint8_t*)&SPI2->DR).