You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
127 lines
3.5 KiB
127 lines
3.5 KiB
/** |
|
****************************************************************************** |
|
* File Name : SPI.c |
|
* Description : This file provides code for the configuration |
|
* of the SPI instances. |
|
****************************************************************************** |
|
* @attention |
|
* |
|
* <h2><center>© Copyright (c) 2020 STMicroelectronics. |
|
* All rights reserved.</center></h2> |
|
* |
|
* This software component is licensed by ST under Ultimate Liberty license |
|
* SLA0044, the "License"; You may not use this file except in compliance with |
|
* the License. You may obtain a copy of the License at: |
|
* www.st.com/SLA0044 |
|
* |
|
****************************************************************************** |
|
*/ |
|
|
|
/* Includes ------------------------------------------------------------------*/ |
|
#include "spi.h" |
|
|
|
/* USER CODE BEGIN 0 */ |
|
|
|
/* USER CODE END 0 */ |
|
|
|
SPI_HandleTypeDef hspi1; |
|
DMA_HandleTypeDef hdma_spi1_tx; |
|
|
|
/* SPI1 init function */ |
|
void MX_SPI1_Init(void) |
|
{ |
|
|
|
hspi1.Instance = SPI1; |
|
hspi1.Init.Mode = SPI_MODE_MASTER; |
|
hspi1.Init.Direction = SPI_DIRECTION_2LINES; |
|
hspi1.Init.DataSize = SPI_DATASIZE_8BIT; |
|
hspi1.Init.CLKPolarity = SPI_POLARITY_LOW; |
|
hspi1.Init.CLKPhase = SPI_PHASE_1EDGE; |
|
hspi1.Init.NSS = SPI_NSS_SOFT; |
|
hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_8; |
|
hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB; |
|
hspi1.Init.TIMode = SPI_TIMODE_DISABLE; |
|
hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; |
|
hspi1.Init.CRCPolynomial = 10; |
|
if (HAL_SPI_Init(&hspi1) != HAL_OK) |
|
{ |
|
Error_Handler(); |
|
} |
|
|
|
} |
|
|
|
void HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle) |
|
{ |
|
|
|
GPIO_InitTypeDef GPIO_InitStruct = {0}; |
|
if(spiHandle->Instance==SPI1) |
|
{ |
|
/* USER CODE BEGIN SPI1_MspInit 0 */ |
|
|
|
/* USER CODE END SPI1_MspInit 0 */ |
|
/* SPI1 clock enable */ |
|
__HAL_RCC_SPI1_CLK_ENABLE(); |
|
|
|
__HAL_RCC_GPIOA_CLK_ENABLE(); |
|
/**SPI1 GPIO Configuration |
|
PA5 ------> SPI1_SCK |
|
PA7 ------> SPI1_MOSI |
|
*/ |
|
GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_7; |
|
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; |
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; |
|
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); |
|
|
|
/* SPI1 DMA Init */ |
|
/* SPI1_TX Init */ |
|
hdma_spi1_tx.Instance = DMA1_Channel3; |
|
hdma_spi1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH; |
|
hdma_spi1_tx.Init.PeriphInc = DMA_PINC_DISABLE; |
|
hdma_spi1_tx.Init.MemInc = DMA_MINC_ENABLE; |
|
hdma_spi1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; |
|
hdma_spi1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; |
|
hdma_spi1_tx.Init.Mode = DMA_CIRCULAR; |
|
hdma_spi1_tx.Init.Priority = DMA_PRIORITY_VERY_HIGH; |
|
if (HAL_DMA_Init(&hdma_spi1_tx) != HAL_OK) |
|
{ |
|
Error_Handler(); |
|
} |
|
|
|
__HAL_LINKDMA(spiHandle,hdmatx,hdma_spi1_tx); |
|
|
|
/* USER CODE BEGIN SPI1_MspInit 1 */ |
|
|
|
/* USER CODE END SPI1_MspInit 1 */ |
|
} |
|
} |
|
|
|
void HAL_SPI_MspDeInit(SPI_HandleTypeDef* spiHandle) |
|
{ |
|
|
|
if(spiHandle->Instance==SPI1) |
|
{ |
|
/* USER CODE BEGIN SPI1_MspDeInit 0 */ |
|
|
|
/* USER CODE END SPI1_MspDeInit 0 */ |
|
/* Peripheral clock disable */ |
|
__HAL_RCC_SPI1_CLK_DISABLE(); |
|
|
|
/**SPI1 GPIO Configuration |
|
PA5 ------> SPI1_SCK |
|
PA7 ------> SPI1_MOSI |
|
*/ |
|
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_5|GPIO_PIN_7); |
|
|
|
/* SPI1 DMA DeInit */ |
|
HAL_DMA_DeInit(spiHandle->hdmatx); |
|
/* USER CODE BEGIN SPI1_MspDeInit 1 */ |
|
|
|
/* USER CODE END SPI1_MspDeInit 1 */ |
|
} |
|
} |
|
|
|
/* USER CODE BEGIN 1 */ |
|
|
|
/* USER CODE END 1 */ |
|
|
|
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
|
|