Skip to content

Commit c6d1474

Browse files
authored
Merge pull request #3132 from whj4674672/master
[BSP][stm32h743-atk-apollo] add QSPI FLASH
2 parents 19c811d + 91e39a2 commit c6d1474

File tree

10 files changed

+344
-77
lines changed

10 files changed

+344
-77
lines changed

bsp/stm32/stm32h743-atk-apollo/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
- MCU:STM32H743,主频 400MHz,2MB FLASH ,1MB RAM
2626
- 外部 SDRAM:W9825G6KH,32MB
2727
- 外部 NAND FLASH:H27U4G8F2,512MB
28-
- 外部 FLASH:W25Q256,32MB
28+
- 外部 QSPI FLASH:W25Q256,32MB
2929
- 常用外设
3030
- LED:2个,DS0(红色,PB1),DS1(绿色,PB0)
3131
- 按键:4个,KEY_UP(兼具唤醒功能,PA0),K0(PH3),K1(PH2),K2(PC13)
@@ -41,7 +41,7 @@
4141
| **板载外设** | **支持情况** | **备注** |
4242
| :----------------- | :----------: | :------------------------------------- |
4343
| USB 转串口 | 支持 | |
44-
| QSPI Flash | 暂不支持 | |
44+
| QSPI Flash | 支持 | |
4545
| 以太网 | 暂不支持 | |
4646
| SD卡 | 暂不支持 | |
4747
| CAN | 暂不支持 | |

bsp/stm32/stm32h743-atk-apollo/board/CubeMX_Config/.mxproject

Lines changed: 4 additions & 4 deletions
Large diffs are not rendered by default.

bsp/stm32/stm32h743-atk-apollo/board/CubeMX_Config/CubeMX_Config.ioc

Lines changed: 101 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -23,91 +23,98 @@ KeepUserPlacement=false
2323
Mcu.Family=STM32H7
2424
Mcu.IP0=CORTEX_M7
2525
Mcu.IP1=DEBUG
26-
Mcu.IP10=USART1
26+
Mcu.IP10=SYS
27+
Mcu.IP11=USART1
2728
Mcu.IP2=DMA2D
2829
Mcu.IP3=FMC
2930
Mcu.IP4=IWDG1
3031
Mcu.IP5=LTDC
3132
Mcu.IP6=NVIC
32-
Mcu.IP7=RCC
33-
Mcu.IP8=RTC
34-
Mcu.IP9=SYS
35-
Mcu.IPNb=11
33+
Mcu.IP7=QUADSPI
34+
Mcu.IP8=RCC
35+
Mcu.IP9=RTC
36+
Mcu.IPNb=12
3637
Mcu.Name=STM32H743IITx
3738
Mcu.Package=LQFP176
3839
Mcu.Pin0=PC13
3940
Mcu.Pin1=PC14-OSC32_IN (OSC32_IN)
4041
Mcu.Pin10=PF5
41-
Mcu.Pin11=PF10
42-
Mcu.Pin12=PH0-OSC_IN (PH0)
43-
Mcu.Pin13=PH1-OSC_OUT (PH1)
44-
Mcu.Pin14=PC0
45-
Mcu.Pin15=PC2_C
46-
Mcu.Pin16=PC3_C
47-
Mcu.Pin17=PF11
48-
Mcu.Pin18=PF12
49-
Mcu.Pin19=PF13
42+
Mcu.Pin11=PF6
43+
Mcu.Pin12=PF7
44+
Mcu.Pin13=PF8
45+
Mcu.Pin14=PF9
46+
Mcu.Pin15=PF10
47+
Mcu.Pin16=PH0-OSC_IN (PH0)
48+
Mcu.Pin17=PH1-OSC_OUT (PH1)
49+
Mcu.Pin18=PC0
50+
Mcu.Pin19=PC2_C
5051
Mcu.Pin2=PC15-OSC32_OUT (OSC32_OUT)
51-
Mcu.Pin20=PF14
52-
Mcu.Pin21=PF15
53-
Mcu.Pin22=PG0
54-
Mcu.Pin23=PG1
55-
Mcu.Pin24=PE7
56-
Mcu.Pin25=PE8
57-
Mcu.Pin26=PE9
58-
Mcu.Pin27=PE10
59-
Mcu.Pin28=PE11
60-
Mcu.Pin29=PE12
52+
Mcu.Pin20=PC3_C
53+
Mcu.Pin21=PB2
54+
Mcu.Pin22=PF11
55+
Mcu.Pin23=PF12
56+
Mcu.Pin24=PF13
57+
Mcu.Pin25=PF14
58+
Mcu.Pin26=PF15
59+
Mcu.Pin27=PG0
60+
Mcu.Pin28=PG1
61+
Mcu.Pin29=PE7
6162
Mcu.Pin3=PI9
62-
Mcu.Pin30=PE13
63-
Mcu.Pin31=PE14
64-
Mcu.Pin32=PE15
65-
Mcu.Pin33=PH9
66-
Mcu.Pin34=PH10
67-
Mcu.Pin35=PH11
68-
Mcu.Pin36=PH12
69-
Mcu.Pin37=PD8
70-
Mcu.Pin38=PD9
71-
Mcu.Pin39=PD10
63+
Mcu.Pin30=PE8
64+
Mcu.Pin31=PE9
65+
Mcu.Pin32=PE10
66+
Mcu.Pin33=PE11
67+
Mcu.Pin34=PE12
68+
Mcu.Pin35=PE13
69+
Mcu.Pin36=PE14
70+
Mcu.Pin37=PE15
71+
Mcu.Pin38=PH9
72+
Mcu.Pin39=PH10
7273
Mcu.Pin4=PI10
73-
Mcu.Pin40=PD14
74-
Mcu.Pin41=PD15
75-
Mcu.Pin42=PG2
76-
Mcu.Pin43=PG4
77-
Mcu.Pin44=PG5
78-
Mcu.Pin45=PG6
79-
Mcu.Pin46=PG7
80-
Mcu.Pin47=PG8
81-
Mcu.Pin48=PA9
82-
Mcu.Pin49=PA10
74+
Mcu.Pin40=PH11
75+
Mcu.Pin41=PH12
76+
Mcu.Pin42=PD8
77+
Mcu.Pin43=PD9
78+
Mcu.Pin44=PD10
79+
Mcu.Pin45=PD14
80+
Mcu.Pin46=PD15
81+
Mcu.Pin47=PG2
82+
Mcu.Pin48=PG4
83+
Mcu.Pin49=PG5
8384
Mcu.Pin5=PF0
84-
Mcu.Pin50=PA13 (JTMS/SWDIO)
85-
Mcu.Pin51=PH13
86-
Mcu.Pin52=PH14
87-
Mcu.Pin53=PH15
88-
Mcu.Pin54=PI0
89-
Mcu.Pin55=PI1
90-
Mcu.Pin56=PI2
91-
Mcu.Pin57=PA14 (JTCK/SWCLK)
92-
Mcu.Pin58=PD0
93-
Mcu.Pin59=PD1
85+
Mcu.Pin50=PG6
86+
Mcu.Pin51=PG7
87+
Mcu.Pin52=PG8
88+
Mcu.Pin53=PA9
89+
Mcu.Pin54=PA10
90+
Mcu.Pin55=PA13 (JTMS/SWDIO)
91+
Mcu.Pin56=PH13
92+
Mcu.Pin57=PH14
93+
Mcu.Pin58=PH15
94+
Mcu.Pin59=PI0
9495
Mcu.Pin6=PF1
95-
Mcu.Pin60=PG11
96-
Mcu.Pin61=PG15
97-
Mcu.Pin62=PE0
98-
Mcu.Pin63=PE1
99-
Mcu.Pin64=PI4
100-
Mcu.Pin65=PI5
101-
Mcu.Pin66=PI6
102-
Mcu.Pin67=PI7
103-
Mcu.Pin68=VP_DMA2D_VS_DMA2D
104-
Mcu.Pin69=VP_IWDG1_VS_IWDG
96+
Mcu.Pin60=PI1
97+
Mcu.Pin61=PI2
98+
Mcu.Pin62=PA14 (JTCK/SWCLK)
99+
Mcu.Pin63=PD0
100+
Mcu.Pin64=PD1
101+
Mcu.Pin65=PG11
102+
Mcu.Pin66=PG15
103+
Mcu.Pin67=PB6
104+
Mcu.Pin68=PE0
105+
Mcu.Pin69=PE1
105106
Mcu.Pin7=PF2
106-
Mcu.Pin70=VP_RTC_VS_RTC_Activate
107-
Mcu.Pin71=VP_SYS_VS_Systick
107+
Mcu.Pin70=PI4
108+
Mcu.Pin71=PI5
109+
Mcu.Pin72=PI6
110+
Mcu.Pin73=PI7
111+
Mcu.Pin74=VP_DMA2D_VS_DMA2D
112+
Mcu.Pin75=VP_IWDG1_VS_IWDG
113+
Mcu.Pin76=VP_RTC_VS_RTC_Activate
114+
Mcu.Pin77=VP_SYS_VS_Systick
108115
Mcu.Pin8=PF3
109116
Mcu.Pin9=PF4
110-
Mcu.PinsNb=72
117+
Mcu.PinsNb=78
111118
Mcu.ThirdPartyNb=0
112119
Mcu.UserConstants=
113120
Mcu.UserName=STM32H743IITx
@@ -134,6 +141,15 @@ PA14\ (JTCK/SWCLK).Signal=DEBUG_JTCK-SWCLK
134141
PA9.Locked=true
135142
PA9.Mode=Asynchronous
136143
PA9.Signal=USART1_TX
144+
PB2.GPIOParameters=GPIO_Speed
145+
PB2.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
146+
PB2.Mode=Single Bank 1
147+
PB2.Signal=QUADSPI_CLK
148+
PB6.GPIOParameters=GPIO_Speed
149+
PB6.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
150+
PB6.Locked=true
151+
PB6.Mode=Single Bank 1
152+
PB6.Signal=QUADSPI_BK1_NCS
137153
PC0.Signal=FMC_SDNWE
138154
PC13.Mode=Calibration_1Hz
139155
PC13.Signal=RTC_OUT_CALIB
@@ -186,6 +202,23 @@ PF2.Signal=FMC_A2
186202
PF3.Signal=FMC_A3
187203
PF4.Signal=FMC_A4
188204
PF5.Signal=FMC_A5
205+
PF6.GPIOParameters=GPIO_Speed
206+
PF6.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
207+
PF6.Mode=Single Bank 1
208+
PF6.Signal=QUADSPI_BK1_IO3
209+
PF7.GPIOParameters=GPIO_Speed
210+
PF7.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
211+
PF7.Locked=true
212+
PF7.Mode=Single Bank 1
213+
PF7.Signal=QUADSPI_BK1_IO2
214+
PF8.GPIOParameters=GPIO_Speed
215+
PF8.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
216+
PF8.Mode=Single Bank 1
217+
PF8.Signal=QUADSPI_BK1_IO0
218+
PF9.GPIOParameters=GPIO_Speed
219+
PF9.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
220+
PF9.Mode=Single Bank 1
221+
PF9.Signal=QUADSPI_BK1_IO1
189222
PG0.Signal=FMC_A10
190223
PG1.Signal=FMC_A11
191224
PG11.Locked=true
@@ -275,7 +308,7 @@ ProjectManager.StackSize=0x400
275308
ProjectManager.TargetToolchain=MDK-ARM V5
276309
ProjectManager.ToolChainLocation=
277310
ProjectManager.UnderRoot=false
278-
ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-SystemClock_Config-RCC-false-HAL-false,3-MX_CORTEX_M7_Init-CORTEX_M7-false-HAL-true,4-MX_USART1_UART_Init-USART1-false-HAL-true,5-MX_FMC_Init-FMC-false-HAL-true,6-MX_DMA2D_Init-DMA2D-false-HAL-true,7-MX_LTDC_Init-LTDC-false-HAL-true,8-MX_RTC_Init-RTC-false-HAL-true,9-MX_IWDG1_Init-IWDG1-false-HAL-true
311+
ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-SystemClock_Config-RCC-false-HAL-false,3-MX_CORTEX_M7_Init-CORTEX_M7-false-HAL-true,4-MX_USART1_UART_Init-USART1-false-HAL-true,5-MX_FMC_Init-FMC-false-HAL-true,6-MX_DMA2D_Init-DMA2D-false-HAL-true,7-MX_LTDC_Init-LTDC-false-HAL-true,8-MX_RTC_Init-RTC-false-HAL-true,9-MX_IWDG1_Init-IWDG1-false-HAL-true,10-MX_QUADSPI_Init-QUADSPI-false-HAL-true
279312
RCC.ADCFreq_Value=50390625
280313
RCC.AHB12Freq_Value=200000000
281314
RCC.AHB4Freq_Value=200000000

bsp/stm32/stm32h743-atk-apollo/board/CubeMX_Config/Inc/stm32h7xx_hal_conf.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@
5757
#define HAL_IWDG_MODULE_ENABLED
5858
/* #define HAL_LPTIM_MODULE_ENABLED */
5959
#define HAL_LTDC_MODULE_ENABLED
60-
/* #define HAL_QSPI_MODULE_ENABLED */
60+
#define HAL_QSPI_MODULE_ENABLED
6161
/* #define HAL_RNG_MODULE_ENABLED */
6262
#define HAL_RTC_MODULE_ENABLED
6363
/* #define HAL_SAI_MODULE_ENABLED */

bsp/stm32/stm32h743-atk-apollo/board/CubeMX_Config/Src/main.c

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ IWDG_HandleTypeDef hiwdg1;
6969

7070
LTDC_HandleTypeDef hltdc;
7171

72+
QSPI_HandleTypeDef hqspi;
73+
7274
RTC_HandleTypeDef hrtc;
7375

7476
UART_HandleTypeDef huart1;
@@ -88,6 +90,7 @@ static void MX_DMA2D_Init(void);
8890
static void MX_LTDC_Init(void);
8991
static void MX_RTC_Init(void);
9092
static void MX_IWDG1_Init(void);
93+
static void MX_QUADSPI_Init(void);
9194
/* USER CODE BEGIN PFP */
9295

9396
/* USER CODE END PFP */
@@ -138,6 +141,7 @@ int main(void)
138141
MX_LTDC_Init();
139142
MX_RTC_Init();
140143
MX_IWDG1_Init();
144+
MX_QUADSPI_Init();
141145
/* USER CODE BEGIN 2 */
142146

143147
/* USER CODE END 2 */
@@ -217,7 +221,8 @@ void SystemClock_Config(void)
217221
Error_Handler();
218222
}
219223
PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_RTC|RCC_PERIPHCLK_LTDC
220-
|RCC_PERIPHCLK_USART1|RCC_PERIPHCLK_FMC;
224+
|RCC_PERIPHCLK_USART1|RCC_PERIPHCLK_QSPI
225+
|RCC_PERIPHCLK_FMC;
221226
PeriphClkInitStruct.PLL3.PLL3M = 5;
222227
PeriphClkInitStruct.PLL3.PLL3N = 160;
223228
PeriphClkInitStruct.PLL3.PLL3P = 2;
@@ -227,6 +232,7 @@ void SystemClock_Config(void)
227232
PeriphClkInitStruct.PLL3.PLL3VCOSEL = RCC_PLL3VCOWIDE;
228233
PeriphClkInitStruct.PLL3.PLL3FRACN = 0;
229234
PeriphClkInitStruct.FmcClockSelection = RCC_FMCCLKSOURCE_D1HCLK;
235+
PeriphClkInitStruct.QspiClockSelection = RCC_QSPICLKSOURCE_D1HCLK;
230236
PeriphClkInitStruct.Usart16ClockSelection = RCC_USART16CLKSOURCE_D2PCLK2;
231237
PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
232238
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
@@ -375,6 +381,41 @@ static void MX_LTDC_Init(void)
375381

376382
}
377383

384+
/**
385+
* @brief QUADSPI Initialization Function
386+
* @param None
387+
* @retval None
388+
*/
389+
static void MX_QUADSPI_Init(void)
390+
{
391+
392+
/* USER CODE BEGIN QUADSPI_Init 0 */
393+
394+
/* USER CODE END QUADSPI_Init 0 */
395+
396+
/* USER CODE BEGIN QUADSPI_Init 1 */
397+
398+
/* USER CODE END QUADSPI_Init 1 */
399+
/* QUADSPI parameter configuration*/
400+
hqspi.Instance = QUADSPI;
401+
hqspi.Init.ClockPrescaler = 255;
402+
hqspi.Init.FifoThreshold = 1;
403+
hqspi.Init.SampleShifting = QSPI_SAMPLE_SHIFTING_NONE;
404+
hqspi.Init.FlashSize = 1;
405+
hqspi.Init.ChipSelectHighTime = QSPI_CS_HIGH_TIME_1_CYCLE;
406+
hqspi.Init.ClockMode = QSPI_CLOCK_MODE_0;
407+
hqspi.Init.FlashID = QSPI_FLASH_ID_1;
408+
hqspi.Init.DualFlash = QSPI_DUALFLASH_DISABLE;
409+
if (HAL_QSPI_Init(&hqspi) != HAL_OK)
410+
{
411+
Error_Handler();
412+
}
413+
/* USER CODE BEGIN QUADSPI_Init 2 */
414+
415+
/* USER CODE END QUADSPI_Init 2 */
416+
417+
}
418+
378419
/**
379420
* @brief RTC Initialization Function
380421
* @param None
@@ -524,6 +565,7 @@ static void MX_GPIO_Init(void)
524565
__HAL_RCC_GPIOI_CLK_ENABLE();
525566
__HAL_RCC_GPIOF_CLK_ENABLE();
526567
__HAL_RCC_GPIOH_CLK_ENABLE();
568+
__HAL_RCC_GPIOB_CLK_ENABLE();
527569
__HAL_RCC_GPIOG_CLK_ENABLE();
528570
__HAL_RCC_GPIOE_CLK_ENABLE();
529571
__HAL_RCC_GPIOD_CLK_ENABLE();

0 commit comments

Comments
 (0)