37 if (HAL_SPI_Init(&sspi->
hspi) != HAL_OK)
60 GPIO_InitTypeDef GPIO_InitStruct = {0};
66 GPIO_InitStruct.Pin = sspi->
CLK_PIN;
68 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
69 GPIO_InitStruct.Pull = GPIO_NOPULL;
70 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
71 HAL_GPIO_Init(sspi->
CLK_GPIOx, &GPIO_InitStruct);
73 GPIO_InitStruct.Pin = sspi->
MISO_PIN;
75 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
76 GPIO_InitStruct.Pull = GPIO_NOPULL;
77 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
78 HAL_GPIO_Init(sspi->
MISO_GPIOx, &GPIO_InitStruct);
80 GPIO_InitStruct.Pin = sspi->
MOSI_PIN;
82 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
83 GPIO_InitStruct.Pull = GPIO_NOPULL;
84 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
85 HAL_GPIO_Init(sspi->
MOSI_GPIOx, &GPIO_InitStruct);
89void SPI_DMA_Init(SPI_HandleTypeDef *hspi, DMA_HandleTypeDef *hdma_rx, DMA_Stream_TypeDef *DMAChannel, uint32_t DMA_CHANNEL_X)
133 else if(hspi->Instance==SPI1)
143 __HAL_RCC_SPI1_CLK_ENABLE();
146 HAL_NVIC_SetPriority(SPI1_IRQn, 0, 0);
147 HAL_NVIC_EnableIRQ(SPI1_IRQn);
151 else if(hspi->Instance==SPI2)
160 __HAL_RCC_SPI2_CLK_ENABLE();
163 HAL_NVIC_SetPriority(SPI2_IRQn, 0, 0);
164 HAL_NVIC_EnableIRQ(SPI2_IRQn);
168 else if(hspi->Instance==SPI3)
177 __HAL_RCC_SPI3_CLK_ENABLE();
179 HAL_NVIC_SetPriority(SPI3_IRQn, 0, 0);
180 HAL_NVIC_EnableIRQ(SPI3_IRQn);
197 else if(hspi->Instance==SPI1)
207 __HAL_RCC_SPI1_FORCE_RESET();
208 __HAL_RCC_SPI1_RELEASE_RESET();
212 else if(hspi->Instance==SPI2)
221 __HAL_RCC_SPI2_FORCE_RESET();
222 __HAL_RCC_SPI2_RELEASE_RESET();
226 else if(hspi->Instance==SPI3)
235 __HAL_RCC_SPI3_FORCE_RESET();
236 __HAL_RCC_SPI3_RELEASE_RESET();
249 if (!IS_SPI_ALL_INSTANCE(sspi->
hspi.Instance))
253 if (!IS_SPI_MODE(sspi->
hspi.Init.Mode))
255 if (!IS_SPI_DIRECTION(sspi->
hspi.Init.Direction))
257 if (!IS_SPI_DATASIZE(sspi->
hspi.Init.DataSize))
259 if (!IS_SPI_BAUDRATE_PRESCALER(sspi->
hspi.Init.BaudRatePrescaler))
261 if (!IS_SPI_CPOL(sspi->
hspi.Init.CLKPolarity))
263 if (!IS_SPI_CPHA(sspi->
hspi.Init.CLKPhase))
265 if (!IS_SPI_NSS(sspi->
hspi.Init.NSS))
267 if (!IS_SPI_FIRST_BIT(sspi->
hspi.Init.FirstBit))
269 if (!IS_SPI_CRC_CALCULATION(sspi->
hspi.Init.CRCCalculation))
271 if (!IS_SPI_CRC_POLYNOMIAL(sspi->
hspi.Init.NSS) &&
272 (sspi->
hspi.Init.CRCCalculation != SPI_CRCCALCULATION_DISABLE))
274 if (!IS_SPI_TIMODE(sspi->
hspi.Init.TIMode))
Заголовочный файл для модуля инициализации портов и работы с ними.
void SPI_GPIO_Init(SPI_SettingsTypeDef *sspi)
Инициализация GPIO для SPI.
Заголовочный файл для модуля инициализации SPI.
#define MyLibs_Error_Handler(params)
Error_Handler который будет вызыватся в библиотеке
HAL_StatusTypeDef SPI_Base_Init(SPI_SettingsTypeDef *sspi)
Инициализация SPI с помощью структуры SPI_SettingsTypeDef.
HAL_StatusTypeDef SPI_Check_Init_Struct(SPI_SettingsTypeDef *sspi)
Проверка корректности структуры инициализации SPI.
void SPI_MspInit(SPI_HandleTypeDef *hspi)
Настройка тактирования и прерываний SPI.
void SPI_MspDeInit(SPI_HandleTypeDef *hspi)
Деинициализация тактирования и прерываний SPI.
HAL_StatusTypeDef GPIO_Clock_Enable(GPIO_TypeDef *GPIOx)
Включить тактирование порта GPIO.
GPIO_TypeDef * MOSI_GPIOx
Порт MOSI.
GPIO_TypeDef * MISO_GPIOx
Порт MISO.
uint32_t MISO_PIN
Пин MISO.
uint32_t CLK_GPIO_AlternageFunc
Альтернативная функция для CLK.
GPIO_TypeDef * CLK_GPIOx
Порт CLK.
uint32_t MOSI_PIN
Пин MOSI.
SPI_HandleTypeDef hspi
HAL handle SPI.
uint32_t MISO_GPIO_AlternageFunc
Альтернативная функция для MISO.
uint32_t MOSI_GPIO_AlternageFunc
Альтернативная функция для MOSI.