Skip to main content
vbk22398
Senior
April 23, 2024
Solved

SPI_multiple_bytes_transfer

  • April 23, 2024
  • 3 replies
  • 1364 views

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?check the following logic and help me if you could

int main(void) {

SystemClock_Config();

MX_GPIO_Init();

MX_SPI3_Init();

MX_LPUART1_UART_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) {

}

}

 

Best answer by vbk22398

Speed is the issue. I was transfering the data at 2000kbps and the receiver also at the same speed. Since i reduced it to some 500kbps, it is working properly.

3 replies

Pavel A.
Super User
April 23, 2024

SPI has several configuration modes. Check that you're using the correct one.

vbk22398
vbk22398Author
Senior
April 24, 2024

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

the values received in the above 3 places are different from each other


vbk22398
vbk22398AuthorBest answer
Senior
April 25, 2024

Speed is the issue. I was transfering the data at 2000kbps and the receiver also at the same speed. Since i reduced it to some 500kbps, it is working properly.