2023-02-01 09:20 AM
Greetings. I am having an issue with SPI communication Note: In my case, under STM32H743, with SPI4 used as "Full-Duplex Slave" and "Hardware NSS Input Signal". The SPI4 pins used are PE11 (SPI4_NSS), PE12 (SPI4_SCK), PE13 (SPI4_MISO), and PE14 (SPI4_MOSI). The issue is that HAL_SPI_TxRxCpltCallback is never reached!
Here are some info:
SPI4 global interrupt (using .ioc file) is enabled with priority 0.
After the TransmitReceive call: ( if (HAL_SPI_TransmitReceive_IT(&hspi4, pTxBuff, pRxBuff, SIZE) == HAL_OK)
with HAL_OK, I go to a while loop waiting for the completion of interrupt. That is waiting for HAL_SPI_TxRxCpltCallback to be hit. However, it hangs there because the Callback is never reached!
Note that SPI4_IRQHandler in stm32h7xx_it.c does indeed get hit and it calls HAL_SPI_IRQHandler(&hspi4), however, that routine does not call the Callback routine!
Note that I have traced into HAL_SPI_IRQHandler(&hspi4) and it appears to run into and error with ErrorCode (hspi->ErrorCode) = 0x84.
So, from that error, then it doesn't call the Calbbackroutine and returns.
Why and what am I missing to fix that ErrorCode.?
By the way, please note that ultimately this application will become my custom bootloader, but for now I have set it up as a simple application and wanted to make sure everything (SPI) is working before proceeding with making it a Bootloader application.
Thank you in advance.
2023-05-24 09:45 AM
Hello @smati2,
Could you share SPI configuration parameters? IOC file if possible?
To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.