Инициализация SPI перенесена в отдельные файлы

This commit is contained in:
alexey
2024-08-14 13:38:04 +03:00
parent b775f36f21
commit 2afa5f161c
5 changed files with 417 additions and 58 deletions

94
GENERAL/spi_general.h Normal file
View File

@@ -0,0 +1,94 @@
/**********************************SPI**************************************
Данный файл содержит объявления базовых функции и дефайны для инициализации
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 "periph_general.h"
/////////////////////////////////////////////////////////////////////
////////////////////////////---DEFINES---////////////////////////////
////////////////////////////---DEFINES---////////////////////////////
/////////////////////////////////////////////////////////////////////
///////////////////////---STRUCTURES & ENUMS---//////////////////////
typedef struct // struct with settings for custom function
{
SPI_HandleTypeDef hspi;
GPIO_TypeDef *CLK_GPIOx;
uint32_t CLK_PIN;
GPIO_TypeDef *MISO_GPIOx;
uint32_t MISO_PIN;
GPIO_TypeDef *MOSI_GPIOx;
uint32_t MOSI_PIN;
}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_