STM32F769IDiscovery  1.00
uDANTE Audio Networking with STM32F7 DISCO board
stm32f7xx_hal_msp.c
Go to the documentation of this file.
1 
38 /* Includes ------------------------------------------------------------------*/
39 #include "main.h"
40 
50 /* Private typedef -----------------------------------------------------------*/
51 /* Private define ------------------------------------------------------------*/
52 /* Private macro -------------------------------------------------------------*/
53 /* Private variables ---------------------------------------------------------*/
55 
56 
58 
61 
62 /* Private function prototypes -----------------------------------------------*/
63 /* Private functions ---------------------------------------------------------*/
64 
76 {
77  GPIO_InitTypeDef GPIO_Init;
78 
79  if (hsai == &spdiftxhsai)
80  {
81  /* Enable SAI2 clock */
83 
84  /* Configure GPIOs used for SAI2 */
86 
87  GPIO_Init.Mode = GPIO_MODE_AF_PP;
88  GPIO_Init.Pull = GPIO_NOPULL;
89  GPIO_Init.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
90  GPIO_Init.Alternate = GPIO_AF10_SAI2;
91  GPIO_Init.Pin = GPIO_PIN_11;
92  HAL_GPIO_Init(GPIOD, &GPIO_Init);
93 
94  /* Configure DMA used for SAI2 */
96 
97  if(hsai->Instance == SAI2_Block_A)
98  {
99  hSaiDma.Init.Channel = DMA_CHANNEL_10;
101  hSaiDma.Init.PeriphInc = DMA_PINC_DISABLE;
102  hSaiDma.Init.MemInc = DMA_MINC_ENABLE;
105  hSaiDma.Init.Mode = DMA_CIRCULAR;
106  hSaiDma.Init.Priority = DMA_PRIORITY_HIGH;
109  hSaiDma.Init.MemBurst = DMA_MBURST_SINGLE;
111 
112  /* Select the DMA instance to be used for the transfer : DMA2_Stream4 */
113  hSaiDma.Instance = DMA2_Stream2;
114 
115  /* Associate the DMA handle */
116  __HAL_LINKDMA(hsai, hdmatx, hSaiDma);
117 
118  /* Deinitialize the Stream for new transfer */
119  HAL_DMA_DeInit(&hSaiDma);
120 
121  /* Configure the DMA Stream */
122  if (HAL_OK != HAL_DMA_Init(&hSaiDma))
123  {
124  return;
125  }
126  }
127 
130 
131  PeriphClkInitStruct.PLLSAI.PLLSAIN = 344;
132  PeriphClkInitStruct.PLLSAI.PLLSAIQ = 7;
133  PeriphClkInitStruct.PLLSAIDivQ = 1;
134  PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_SAI2;
135  PeriphClkInitStruct.Sai2ClockSelection = RCC_SAI2CLKSOURCE_PLLSAI;
136  HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct);
138 
141  }
142 }
143 
151 {
152  GPIO_InitTypeDef GPIO_InitStruct;
153  if(hspdifrx->Instance == SPDIFRX)
154  {
155  /* USER CODE BEGIN SPDIFRX_MspInit 0 */
156 
157  /* USER CODE END SPDIFRX_MspInit 0 */
158  /* Peripheral clock enable */
160 
164  GPIO_InitStruct.Pin = GPIO_PIN_12;
165  GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
166  GPIO_InitStruct.Pull = GPIO_NOPULL;
167  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
168  GPIO_InitStruct.Alternate = GPIO_AF7_SPDIFRX;
169  HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);
170 
171  /* Peripheral DMA init*/
172 
173  hdma_spdif_rx_dt.Instance = DMA1_Stream1;
174  hdma_spdif_rx_dt.Init.Channel = DMA_CHANNEL_0;
175  hdma_spdif_rx_dt.Init.Direction = DMA_PERIPH_TO_MEMORY;
176  hdma_spdif_rx_dt.Init.PeriphInc = DMA_PINC_DISABLE;
177  hdma_spdif_rx_dt.Init.MemInc = DMA_MINC_ENABLE;
178  hdma_spdif_rx_dt.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD;
179  hdma_spdif_rx_dt.Init.MemDataAlignment = DMA_MDATAALIGN_WORD;
180  hdma_spdif_rx_dt.Init.Mode = DMA_CIRCULAR;
181  hdma_spdif_rx_dt.Init.Priority = DMA_PRIORITY_MEDIUM;
182  hdma_spdif_rx_dt.Init.FIFOMode = DMA_FIFOMODE_ENABLE;
183  hdma_spdif_rx_dt.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
184  hdma_spdif_rx_dt.Init.MemBurst = DMA_MBURST_SINGLE;
185  hdma_spdif_rx_dt.Init.PeriphBurst = DMA_PBURST_SINGLE;
186  if (HAL_DMA_Init(&hdma_spdif_rx_dt) != HAL_OK)
187  {
188  return;
189  }
190 
191  __HAL_LINKDMA(hspdifrx,hdmaDrRx,hdma_spdif_rx_dt);
192 
193  /* USER CODE BEGIN SPDIFRX_MspInit 1 */
194 
195  /* USER CODE END SPDIFRX_MspInit 1 */
196  }
197 }
198 
200 {
201 
202  if(hspdifrx->Instance == SPDIFRX)
203  {
204  /* USER CODE BEGIN SPDIFRX_MspDeInit 0 */
205 
206  /* USER CODE END SPDIFRX_MspDeInit 0 */
207  /* Peripheral clock disable */
209 
214 
215  /* Peripheral DMA DeInit*/
216  HAL_DMA_DeInit(hspdifrx->hdmaDrRx);
217  }
218  /* USER CODE BEGIN SPDIFRX_MspDeInit 1 */
219 
220  /* USER CODE END SPDIFRX_MspDeInit 1 */
221 
222 }
223 
236 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
#define __HAL_RCC_SPDIFRX_CLK_ENABLE()
void HAL_SPDIFRX_MspInit(SPDIFRX_HandleTypeDef *hspdifrx)
SPDIFRX MSP Init.
#define GPIOD
Definition: stm32f745xx.h:1316
DMA_HandleTypeDef hdma_spdif_rx_dt
Definition: main.c:75
SPDIFRX handle Structure definition.
#define GPIO_NOPULL
#define GPIO_AF10_SAI2
#define DMA_MBURST_SINGLE
#define __HAL_LINKDMA(__HANDLE__, __PPP_DMA_FIELD__, __DMA_HANDLE__)
void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin)
SAI_HandleTypeDef spdiftxhsai
Definition: SPDIF_Tx.c:16
HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit)
#define GPIO_PIN_11
#define RCC_SAI2CLKSOURCE_PLLSAI
#define GPIO_SPEED_FREQ_LOW
#define DMA_MDATAALIGN_HALFWORD
DMA_InitTypeDef Init
#define DMA_PINC_DISABLE
DMA_HandleTypeDef * hdmaDrRx
SAI_Block_TypeDef * Instance
#define DMA2_Stream2
Definition: stm32f745xx.h:1339
#define DMA_FIFO_THRESHOLD_FULL
#define SAI2_Block_A
Definition: stm32f745xx.h:1311
#define __HAL_RCC_GPIOD_CLK_ENABLE()
#define DMA_PDATAALIGN_WORD
#define GPIO_SPEED_FREQ_VERY_HIGH
DMA_HandleTypeDef hSaiDma
Definition: main.c:72
RCC extended clocks structure definition.
void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority)
DMA_Stream_TypeDef * Instance
#define GPIO_PIN_12
#define DMA1_Stream1
Definition: stm32f745xx.h:1329
#define __HAL_RCC_DMA2_CLK_ENABLE()
void HAL_NVIC_EnableIRQ(IRQn_Type IRQn)
#define __HAL_RCC_SAI2_CLK_ENABLE()
void HAL_SPDIFRX_MspDeInit(SPDIFRX_HandleTypeDef *hspdifrx)
#define DMA_PDATAALIGN_HALFWORD
GPIO Init structure definition.
#define __HAL_RCC_SPDIFRX_CLK_DISABLE()
uint32_t PeriphDataAlignment
#define DMA_MDATAALIGN_WORD
void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init)
#define GPIO_AF7_SPDIFRX
#define RCC_PERIPHCLK_SAI2
#define DMA_PBURST_SINGLE
#define DMA_MINC_ENABLE
DMA handle Structure definition.
#define DMA_PRIORITY_MEDIUM
HAL_StatusTypeDef HAL_DMA_Init(DMA_HandleTypeDef *hdma)
#define DMA_FIFOMODE_ENABLE
#define GPIOG
Definition: stm32f745xx.h:1319
#define GPIO_MODE_AF_PP
uint32_t MemDataAlignment
HAL_StatusTypeDef HAL_DMA_DeInit(DMA_HandleTypeDef *hdma)
#define DMA_PERIPH_TO_MEMORY
#define DMA_CHANNEL_0
void HAL_SAI_MspInit(SAI_HandleTypeDef *hsai)
SAI MSP Init.
#define DMA_CIRCULAR
#define DMA_PRIORITY_HIGH
#define DMA_MEMORY_TO_PERIPH
RCC_PeriphCLKInitTypeDef PeriphClkInitStruct
#define SPDIFRX
Definition: stm32f745xx.h:1273
RCC_PLLSAIInitTypeDef PLLSAI