2019-10-15 11:39 PM
Hi, I did enable one time HAL_SPI_Receive_IT one time in int main().. after the first spi transaction completely received i did re-enable the spi receive interrupt in callback function..
But the problem is , the HAL_SPI_Receive_IT succesfully receive the correct data in the first time, after that none of it was correct.
void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi)
{
rxbuf1[0]=rxbuf[0];
rxbuf1[1]=rxbuf[1];
rxbuf1[2]=rxbuf[2];
rxbuf1[3]=rxbuf[3];
rxbuf1[4]=rxbuf[4];
if(HAL_SPI_Receive_IT(&hspi1,(uint8_t*)&rxbuf,5)!= HAL_OK)
{
Error_Handler();
}
}
Is anything i need to do ? for example clear the interrupt flag or what?
It would be much appreciate if you could help.
Thanks.
Regards,
Kelvin
2019-10-16 12:03 AM
I'm not familiar with Cube/Hal code.
But a common mistake with serial peripherals is not to deal with errors / error flags. In your case probably overflow.
As long as the error condition exists, no rx interrupt is raised, and received characters are lost.
In difference to the rx interrupts, error flags are not reset when reading the rx register. You need to clear the flag manually in the status register.