Чтож.. Похоже, по схеме подключения остаётся вопрос: Шина описана с выводами SCL, MOSI, CS и A0. Как понимаю, подключение - 4-х проводное, с общим проводом MOSI/MISO (получается вывод SIO в инструкции).
Судя по мануалу к STM32, нужно сделать следующее, чтобы работало именно так:
Передать байт (команду), затем непосредственно перед началом чтения ответа выполнить:
Код
SPIn->CR1 &= ~(SPI_CR1_SPE | SPI_CR1_BIDIOE); // Отключить SPI и переключить режим двустороннего обмена на приём
SPIn->CR1 |= (SPI_CR1_BIDIMODE); // Включаем режим двустороннего обмена по одной линии (ТОЛЬКО ПРИЁМ)
SPIn->CR1 |= (SPI_CR1_SPE); // Разрешаем работу SPI
После этого данные будут принудительно получаться с шины. Нужно получить необходимое колчичество и отключить SPI, затем отключить и режим однопроводной шины.
Код
SPIn->CR1 &= ~(SPI_CR1_SPE | SPI_CR1_BIDIOE | SPI_CR1_BIDIMODE);
Должно помочь.