2024-04-25 02:55 AM
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
2024-04-25 04:26 AM - edited 2024-04-29 05:54 AM
Please use a code block in your post. It is hard to read like this.
You can find the option here: