cancel
Showing results for 
Search instead for 
Did you mean: 

SPI_multiple_bytes_transfer

vbk22398
Associate III

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

}

}

 

1 ACCEPTED SOLUTION

Accepted Solutions
vbk22398
Associate III

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.

View solution in original post

3 REPLIES 3
Pavel A.
Evangelist III

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

vbk22398
Associate III

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
Associate III

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.