/** ************************************************************************** * @file general_spi.h * @brief Заголовочны файл модуля инициализации SPI. *************************************************************************/ #ifndef __SPI_GENERAL_H_ #define __SPI_GENERAL_H_ ////////////////////////////////////////////////////////////////////// /////////////////////////---USER SETTINGS---///////////////////////// #define HAL_SPI_MODULE_ENABLED // need to uncomment these defines in stm32f4xx_hal_conf.h // also need to add hal_spi.c (source code) #define USE_SPI1 #define USE_SPI2 #define USE_SPI3 /////////////////////////---USER SETTINGS---///////////////////////// #include "mylibs_defs.h" ///////////////////////////////////////////////////////////////////// ////////////////////////////---DEFINES---//////////////////////////// ////////////////////////////---DEFINES---//////////////////////////// ///////////////////////////////////////////////////////////////////// ///////////////////////---STRUCTURES & ENUMS---////////////////////// typedef struct // struct with settings for custom function { SPI_HandleTypeDef hspi; GPIO_TypeDef *CLK_GPIOx; uint32_t CLK_PIN; uint32_t CLK_GPIO_AlternageFunc; GPIO_TypeDef *MISO_GPIOx; uint32_t MISO_PIN; uint32_t MISO_GPIO_AlternageFunc; GPIO_TypeDef *MOSI_GPIOx; uint32_t MOSI_PIN; uint32_t MOSI_GPIO_AlternageFunc; }SPI_SettingsTypeDef; ///////////////////////---STRUCTURES & ENUMS---////////////////////// ///////////////////////////////////////////////////////////////////// ///////////////////////////---FUNCTIONS---/////////////////////////// /** * @brief Initialize SPI with SPI_SettingsTypeDef structure. * @param sspi - указатель на структуру с настройками SPI. * @return HAL status. * @note Данная структура содержит хендл ЮАРТ и настройки перефирии (GPIO) */ HAL_StatusTypeDef SPI_Base_Init(SPI_SettingsTypeDef *sspi); /** * @brief Initialize GPIO for SPI. * @param GPIOx - порт для настройки. * @param GPIO_PIN_RX - пин для настройки на прием. * @param GPIO_PIN_TX - пин для настройки на передачу. */ void SPI_GPIO_Init(SPI_SettingsTypeDef *sspi); /** * @brief Initialize DMA for SPI. * @param hspi - указатель на хендл SPI для настройки DMA. * @param hdma_rx - указатель на хендл DMA для линии приема SPI. * @param DMAChannel - указатель на канал DMA/поток DMA в STM32F407. * @param DMA_CHANNEL_X - канал DMA. */ void SPI_DMA_Init(SPI_HandleTypeDef *hspi, DMA_HandleTypeDef *hdma_rx, DMA_Stream_TypeDef *DMAChannel, uint32_t DMA_CHANNEL_X); /** * @brief Initialize SPI & DMA clock and interrupt. * @param hspi - указатель на хендл SPI для инициализации. * @note Чтобы не генерировать функцию с иницилизацией неиспользуемых SPI, дефайнами определяются используемые SPI. */ void SPI_MspInit(SPI_HandleTypeDef *hspi); /** * @brief Deinitialize SPI & DMA clock and interrupt. * @param hspi - указатель на хендл SPI для деинициализации. * @note Чтобы не генерировать функцию с деиницилизацией неиспользуемых SPI, дефайнами в rs_message.h определяются используемые SPI. */ void SPI_MspDeInit(SPI_HandleTypeDef *hspi); /** * @brief Check that spi init structure have correct values. * @param sspi - указатель на структуру с настройками SPI. * @return HAL status. */ HAL_StatusTypeDef Check_SPI_Init_Struct(SPI_SettingsTypeDef *sspi); ///////////////////////////---FUNCTIONS---/////////////////////////// #endif // __SPI_GENERAL_H_