2 ******************************************************************************
4 * Description : This file provides code for the configuration
5 * of the SDIO instances.
6 ******************************************************************************
9 * <h2><center>© Copyright (c) 2021 STMicroelectronics.
10 * All rights reserved.</center></h2>
12 * This software component is licensed by ST under Ultimate Liberty license
13 * SLA0044, the "License"; You may not use this file except in compliance with
14 * the License. You may obtain a copy of the License at:
17 ******************************************************************************
20 /* Includes ------------------------------------------------------------------*/
23 /* USER CODE BEGIN 0 */
28 DMA_HandleTypeDef hdma_sdio_tx;
29 DMA_HandleTypeDef hdma_sdio_rx;
31 /* SDIO init function */
33 void MX_SDIO_SD_Init(void)
37 hsd.Init.ClockEdge = SDIO_CLOCK_EDGE_RISING;
38 hsd.Init.ClockBypass = SDIO_CLOCK_BYPASS_DISABLE;
39 hsd.Init.ClockPowerSave = SDIO_CLOCK_POWER_SAVE_DISABLE;
40 hsd.Init.BusWide = SDIO_BUS_WIDE_1B;
41 hsd.Init.HardwareFlowControl = SDIO_HARDWARE_FLOW_CONTROL_DISABLE;
42 hsd.Init.ClockDiv = 0;
43 if (HAL_SD_Init(&hsd) != HAL_OK)
47 if (HAL_SD_ConfigWideBusOperation(&hsd, SDIO_BUS_WIDE_4B) != HAL_OK)
54 void HAL_SD_MspInit(SD_HandleTypeDef* sdHandle)
57 GPIO_InitTypeDef GPIO_InitStruct = {0};
58 if(sdHandle->Instance==SDIO)
60 /* USER CODE BEGIN SDIO_MspInit 0 */
62 /* USER CODE END SDIO_MspInit 0 */
63 /* SDIO clock enable */
64 __HAL_RCC_SDIO_CLK_ENABLE();
66 __HAL_RCC_GPIOC_CLK_ENABLE();
67 __HAL_RCC_GPIOD_CLK_ENABLE();
68 /**SDIO GPIO Configuration
76 GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11;
77 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
78 GPIO_InitStruct.Pull = GPIO_PULLUP;
79 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
80 GPIO_InitStruct.Alternate = GPIO_AF12_SDIO;
81 HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
83 GPIO_InitStruct.Pin = GPIO_PIN_12;
84 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
85 GPIO_InitStruct.Pull = GPIO_NOPULL;
86 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
87 GPIO_InitStruct.Alternate = GPIO_AF12_SDIO;
88 HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
90 GPIO_InitStruct.Pin = GPIO_PIN_2;
91 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
92 GPIO_InitStruct.Pull = GPIO_PULLUP;
93 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
94 GPIO_InitStruct.Alternate = GPIO_AF12_SDIO;
95 HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
99 hdma_sdio_tx.Instance = DMA2_Stream3;
100 hdma_sdio_tx.Init.Channel = DMA_CHANNEL_4;
101 hdma_sdio_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
102 hdma_sdio_tx.Init.PeriphInc = DMA_PINC_DISABLE;
103 hdma_sdio_tx.Init.MemInc = DMA_MINC_ENABLE;
104 hdma_sdio_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD;
105 hdma_sdio_tx.Init.MemDataAlignment = DMA_MDATAALIGN_WORD;
106 hdma_sdio_tx.Init.Mode = DMA_PFCTRL;
107 hdma_sdio_tx.Init.Priority = DMA_PRIORITY_VERY_HIGH;
108 hdma_sdio_tx.Init.FIFOMode = DMA_FIFOMODE_ENABLE;
109 hdma_sdio_tx.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
110 hdma_sdio_tx.Init.MemBurst = DMA_MBURST_INC4;
111 hdma_sdio_tx.Init.PeriphBurst = DMA_PBURST_INC4;
112 if (HAL_DMA_Init(&hdma_sdio_tx) != HAL_OK)
117 __HAL_LINKDMA(sdHandle,hdmatx,hdma_sdio_tx);
120 hdma_sdio_rx.Instance = DMA2_Stream6;
121 hdma_sdio_rx.Init.Channel = DMA_CHANNEL_4;
122 hdma_sdio_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
123 hdma_sdio_rx.Init.PeriphInc = DMA_PINC_DISABLE;
124 hdma_sdio_rx.Init.MemInc = DMA_MINC_ENABLE;
125 hdma_sdio_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD;
126 hdma_sdio_rx.Init.MemDataAlignment = DMA_MDATAALIGN_WORD;
127 hdma_sdio_rx.Init.Mode = DMA_PFCTRL;
128 hdma_sdio_rx.Init.Priority = DMA_PRIORITY_VERY_HIGH;
129 hdma_sdio_rx.Init.FIFOMode = DMA_FIFOMODE_ENABLE;
130 hdma_sdio_rx.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
131 hdma_sdio_rx.Init.MemBurst = DMA_MBURST_INC4;
132 hdma_sdio_rx.Init.PeriphBurst = DMA_PBURST_INC4;
133 if (HAL_DMA_Init(&hdma_sdio_rx) != HAL_OK)
138 __HAL_LINKDMA(sdHandle,hdmarx,hdma_sdio_rx);
140 /* SDIO interrupt Init */
141 HAL_NVIC_SetPriority(SDIO_IRQn, 2, 0);
142 HAL_NVIC_EnableIRQ(SDIO_IRQn);
143 /* USER CODE BEGIN SDIO_MspInit 1 */
145 /* USER CODE END SDIO_MspInit 1 */
149 void HAL_SD_MspDeInit(SD_HandleTypeDef* sdHandle)
152 if(sdHandle->Instance==SDIO)
154 /* USER CODE BEGIN SDIO_MspDeInit 0 */
156 /* USER CODE END SDIO_MspDeInit 0 */
157 /* Peripheral clock disable */
158 __HAL_RCC_SDIO_CLK_DISABLE();
160 /**SDIO GPIO Configuration
168 HAL_GPIO_DeInit(GPIOC, GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11
171 HAL_GPIO_DeInit(GPIOD, GPIO_PIN_2);
173 /* SDIO DMA DeInit */
174 HAL_DMA_DeInit(sdHandle->hdmatx);
175 HAL_DMA_DeInit(sdHandle->hdmarx);
177 /* SDIO interrupt Deinit */
178 HAL_NVIC_DisableIRQ(SDIO_IRQn);
179 /* USER CODE BEGIN SDIO_MspDeInit 1 */
181 /* USER CODE END SDIO_MspDeInit 1 */
185 /* USER CODE BEGIN 1 */
187 /* USER CODE END 1 */
189 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/