до этого работал с spi на f417 таких проблем не было
вот код чтения регистра модуля
CODE
RFM22_SS(ENABLE);
while(!(SPI3->SR&SPI_I2S_FLAG_TXE));
SPI3->DR=reg&(~RFM22_SPI_WRITE_MASK);
while(!(SPI3->SR&SPI_I2S_FLAG_TXE));
SPI3->DR=0x00;
while(!(SPI3->SR&SPI_I2S_FLAG_TXE));
RFM22_SS(DISABLE);
return SPI3->DR;
весь прикол в том, что этот код не работает без отладчика или если поставить брейкпоинт в конце кода, в регистре DR ноль, а если прошагать этот код отладчиком то всё окей

перекидывал модуль на плату с stm32f100 та же фигня, только там вообще непонятно что иногда в регистр приходит, пробовал на трёх SPI на разных пинах контроллера
вместо проверки флага TXE ставил задержки, менял скорость SPI, пробовал запаивать новый модуль, ничего не помогает

единственное, что ещё приходит на ум, читать SPI с помощью DMA