#ifndef FSFW_HAL_STM32H7_SPI_SPICORE_H_ #define FSFW_HAL_STM32H7_SPI_SPICORE_H_ #include "stm32h7xx_hal.h" #include "stm32h7xx_hal_dma.h" #ifdef __cplusplus extern "C" { #endif typedef void (*msp_func_t) (void* args); /** * Assign MSP init functions. Important for SPI configuration * @param init_func * @param init_args * @param deinit_func * @param deinit_args */ void set_spi_msp_functions(msp_func_t init_func, void* init_args, msp_func_t deinit_func, void* deinit_args); /** * Assign DMA handles. Required to use DMA for SPI transfers. * @param txHandle * @param rxHandle */ void set_dma_handles(DMA_HandleTypeDef* txHandle, DMA_HandleTypeDef* rxHandle); void get_dma_handles(DMA_HandleTypeDef** txHandle, DMA_HandleTypeDef** rxHandle); void get_msp_init_function(msp_func_t* init_func, void **args); void get_msp_deinit_function(msp_func_t* deinit_func, void **args); /** * Assign SPI handle. Needs to be done before using the SPI * @param spiHandle */ void assign_spi_handle(SPI_HandleTypeDef *spiHandle); /** * Get the assigned SPI handle. * @return */ SPI_HandleTypeDef* get_spi_handle(); #ifdef __cplusplus } #endif #endif /* FSFW_HAL_STM32H7_SPI_SPICORE_H_ */