SPI_Receiving data is improper because of HAL Functions
I am sending multiple bytes in spi protocol. The sender is sending properly through AARDWARK(Total Phase Control)Software. But only the odd number of bytes are received and the receiving is not proper using these HAL_Functions. What is the issue?
int main(void) {
SystemClock_Config();
MX_GPIO_Init();
MX_SPI3_Init();
HAL_GPIO_WritePin(GPIOG, GPIO_PIN_12, GPIO_PIN_SET);
/*
HAL_GPIO_WritePin(GPIOG, GPIO_PIN_12, GPIO_PIN_RESET);
HAL_SPI_TransmitReceive(&hspi3, data_tra, data_rec, 5, HAL_MAX_DELAY);
HAL_GPIO_WritePin(GPIOG, GPIO_PIN_12, GPIO_PIN_SET);
*/
/*
HAL_GPIO_WritePin(GPIOG, GPIO_PIN_12, GPIO_PIN_RESET);
HAL_SPI_TransmitReceive_IT(&hspi3, data_tra, data_rec, 3);
HAL_Delay(1);
HAL_GPIO_WritePin(GPIOG, GPIO_PIN_12, GPIO_PIN_SET);
*/
HAL_GPIO_WritePin(GPIOG, GPIO_PIN_12, GPIO_PIN_RESET);
HAL_SPI_Transmit(&hspi3, data_tra, 3, HAL_MAX_DELAY);
HAL_SPI_Receive(&hspi3, data_rec, 3, HAL_MAX_DELAY);
HAL_GPIO_WritePin(GPIOG, GPIO_PIN_12, GPIO_PIN_SET);
while (1) {
}
}
The above works fine with the following code.
HAL_GPIO_WritePin(GPIOG, GPIO_PIN_12, GPIO_PIN_RESET);
HAL_SPI_Transmit(&hspi3, data_tra, 3, HAL_MAX_DELAY);
for(int i=0;i<3;i++)
{
HAL_SPI_Receive(&hspi3, &data_rec[i], 1, HAL_MAX_DELAY);
}
HAL_GPIO_WritePin(GPIOG, GPIO_PIN_12, GPIO_PIN_SET);
i want to know the difference between
HAL_SPI_Transmit
HAL_SPI_TransmitReceive_IT
HAL_SPI_TransmitReceive
