전자/임베디드 시스템

STM32의 HAL_SPI_TransmitReceive_IT 함수 동작원리

Begi 2021. 6. 30. 21:47
반응형

HAL_SPI_TransmitReceive_IT 함수이 실행되면 SPI 인터럽터가 실행되면서 SPI에 데이터를 쓰고 읽는다. 매 바이트마다 인터럽터 함수가 실행된다.

 

SPI 인터럽터 함수는 stm32l1xx_it.c 파일에 있다.

    void SPIx_IRQHandler(void)
    {
        HAL_SPI_IRQHandler(&SpiHandle);
    }

 

인터럽터가 발생하면 실행되는 HAL_SPI_IRQHandler 함수는 stm32l1xx_hal_spi.c 파일에 정의되어 있다. 이 함수에서 SPI에 데이터를 쓰고 읽는다.

 

HAL_SPI_IRQHandler 함수에서 송수신이 종료되면 HAL_SPI_TxRxCpltCallback 함수를 호출하고 에러가 발생하며 HAL_SPI_ErrorCallback 함수를 호출한다.

 

HAL_SPI_TransmitReceive_IT는 SPI 인터럽터를 사용하기 때문에 SPI 인터럽터의 우선순위가 낮으면 정확한 시간에 데이터를 읽고 쓰지 못해 Overrun 등의 에러가 발생할 수 있다.

 

반응형