Проблема была связана с SPI STM32F0. С использованием прерывания по SPI и ожидания завершения текущей операции решило проблему:
CODE
void SPI_WriteData(uint8_t* Buff, uint8_t size)
{
if(HAL_SPI_TransmitReceive_IT(&pSpiHandle, (uint8_t*)Buff, (uint8_t*)Buff, size) != HAL_OK)
{
/* Transfer error in transmission process */
Error_Handler();
}
/* Wait for the end of the transfer */
while (HAL_SPI_GetState(&pSpiHandle) == HAL_SPI_STATE_BUSY_TX);
}
void SPI_ReadData(uint8_t* Buff, uint8_t size)
{
if(HAL_SPI_TransmitReceive_IT(&pSpiHandle, (uint8_t*)Buff, (uint8_t*)Buff, size) != HAL_OK)
{
/* Transfer error in transmission process */
Error_Handler();
}
/* Wait for the end of the transfer */
while (HAL_SPI_GetState(&pSpiHandle) == HAL_SPI_STATE_BUSY_RX);
}