Skip to content

Commit 5e24acf

Browse files
authored
Merge pull request #5470 from supperthomas/dd_master
[bsp/stm32] add sdram for openmv
2 parents 126f80e + e56221c commit 5e24acf

File tree

10 files changed

+826
-79
lines changed

10 files changed

+826
-79
lines changed

bsp/stm32/stm32h743-openmv-h7plus/README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ OPENMV4-H7-PLUS 是 OPENMV公司推出的一款针对 STM32H7系列设计的 Cor
3838
| **片上外设** | **支持情况** | **备注** |
3939
| :----------------- | :----------: | :------------------------------------- |
4040
| GPIO | 支持 | |
41-
| UART | 支持 | UART1 (console) |
41+
| UART | 支持 | UART1(PB14 TX)(PB15 RX) |
42+
| SDRAM | 支持 | IS42S32800 BANK1 |
4243

4344
## 使用说明
4445

bsp/stm32/stm32h743-openmv-h7plus/applications/main.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
#include <rtdevice.h>
1313
#include <board.h>
1414

15-
/* defined the LED2 pin: PB7 */
1615
#define LED1_PIN GET_PIN(C, 0)
1716

1817
int main(void)

bsp/stm32/stm32h743-openmv-h7plus/board/CubeMX_Config/Core/Inc/stm32h7xx_hal_conf.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
/* #define HAL_NOR_MODULE_ENABLED */
5151
/* #define HAL_OTFDEC_MODULE_ENABLED */
5252
/* #define HAL_SRAM_MODULE_ENABLED */
53-
/* #define HAL_SDRAM_MODULE_ENABLED */
53+
#define HAL_SDRAM_MODULE_ENABLED
5454
/* #define HAL_HASH_MODULE_ENABLED */
5555
/* #define HAL_HRTIM_MODULE_ENABLED */
5656
/* #define HAL_HSEM_MODULE_ENABLED */
@@ -168,7 +168,7 @@
168168
#define TICK_INT_PRIORITY (15UL) /*!< tick interrupt priority */
169169
#define USE_RTOS 0
170170
#define USE_SD_TRANSCEIVER 0U /*!< use uSD Transceiver */
171-
#define USE_SPI_CRC 0U /*!< use CRC in SPI */
171+
#define USE_SPI_CRC 0U /*!< use CRC in SPI */
172172

173173
#define USE_HAL_ADC_REGISTER_CALLBACKS 0U /* ADC register callback disabled */
174174
#define USE_HAL_CEC_REGISTER_CALLBACKS 0U /* CEC register callback disabled */

bsp/stm32/stm32h743-openmv-h7plus/board/CubeMX_Config/Core/Src/main.c

Lines changed: 61 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@
4242

4343
UART_HandleTypeDef huart1;
4444

45+
SDRAM_HandleTypeDef hsdram1;
46+
4547
/* USER CODE BEGIN PV */
4648

4749
/* USER CODE END PV */
@@ -50,6 +52,7 @@ UART_HandleTypeDef huart1;
5052
void SystemClock_Config(void);
5153
static void MX_GPIO_Init(void);
5254
static void MX_USART1_UART_Init(void);
55+
static void MX_FMC_Init(void);
5356
/* USER CODE BEGIN PFP */
5457

5558
/* USER CODE END PFP */
@@ -88,6 +91,7 @@ int main(void)
8891
/* Initialize all configured peripherals */
8992
MX_GPIO_Init();
9093
MX_USART1_UART_Init();
94+
MX_FMC_Init();
9195
/* USER CODE BEGIN 2 */
9296

9397
/* USER CODE END 2 */
@@ -117,7 +121,7 @@ void SystemClock_Config(void)
117121
HAL_PWREx_ConfigSupply(PWR_LDO_SUPPLY);
118122
/** Configure the main internal regulator output voltage
119123
*/
120-
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE0);
124+
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
121125

122126
while(!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {}
123127
/** Initializes the RCC Oscillators according to the specified parameters
@@ -127,12 +131,12 @@ void SystemClock_Config(void)
127131
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
128132
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
129133
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
130-
RCC_OscInitStruct.PLL.PLLM = 1;
131-
RCC_OscInitStruct.PLL.PLLN = 80;
134+
RCC_OscInitStruct.PLL.PLLM = 3;
135+
RCC_OscInitStruct.PLL.PLLN = 200;
132136
RCC_OscInitStruct.PLL.PLLP = 2;
133137
RCC_OscInitStruct.PLL.PLLQ = 2;
134138
RCC_OscInitStruct.PLL.PLLR = 2;
135-
RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1VCIRANGE_3;
139+
RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1VCIRANGE_2;
136140
RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1VCOWIDE;
137141
RCC_OscInitStruct.PLL.PLLFRACN = 0;
138142
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
@@ -152,7 +156,7 @@ void SystemClock_Config(void)
152156
RCC_ClkInitStruct.APB2CLKDivider = RCC_APB2_DIV2;
153157
RCC_ClkInitStruct.APB4CLKDivider = RCC_APB4_DIV2;
154158

155-
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4) != HAL_OK)
159+
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
156160
{
157161
Error_Handler();
158162
}
@@ -206,6 +210,53 @@ static void MX_USART1_UART_Init(void)
206210

207211
}
208212

213+
/* FMC initialization function */
214+
static void MX_FMC_Init(void)
215+
{
216+
217+
/* USER CODE BEGIN FMC_Init 0 */
218+
219+
/* USER CODE END FMC_Init 0 */
220+
221+
FMC_SDRAM_TimingTypeDef SdramTiming = {0};
222+
223+
/* USER CODE BEGIN FMC_Init 1 */
224+
225+
/* USER CODE END FMC_Init 1 */
226+
227+
/** Perform the SDRAM1 memory initialization sequence
228+
*/
229+
hsdram1.Instance = FMC_SDRAM_DEVICE;
230+
/* hsdram1.Init */
231+
hsdram1.Init.SDBank = FMC_SDRAM_BANK1;
232+
hsdram1.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_9;
233+
hsdram1.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_12;
234+
hsdram1.Init.MemoryDataWidth = FMC_SDRAM_MEM_BUS_WIDTH_32;
235+
hsdram1.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4;
236+
hsdram1.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_2;
237+
hsdram1.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_DISABLE;
238+
hsdram1.Init.SDClockPeriod = FMC_SDRAM_CLOCK_PERIOD_2;
239+
hsdram1.Init.ReadBurst = FMC_SDRAM_RBURST_DISABLE;
240+
hsdram1.Init.ReadPipeDelay = FMC_SDRAM_RPIPE_DELAY_0;
241+
/* SdramTiming */
242+
SdramTiming.LoadToActiveDelay = 2;
243+
SdramTiming.ExitSelfRefreshDelay = 7;
244+
SdramTiming.SelfRefreshTime = 5;
245+
SdramTiming.RowCycleDelay = 6;
246+
SdramTiming.WriteRecoveryTime = 3;
247+
SdramTiming.RPDelay = 2;
248+
SdramTiming.RCDDelay = 2;
249+
250+
if (HAL_SDRAM_Init(&hsdram1, &SdramTiming) != HAL_OK)
251+
{
252+
Error_Handler( );
253+
}
254+
255+
/* USER CODE BEGIN FMC_Init 2 */
256+
257+
/* USER CODE END FMC_Init 2 */
258+
}
259+
209260
/**
210261
* @brief GPIO Initialization Function
211262
* @param None
@@ -216,7 +267,12 @@ static void MX_GPIO_Init(void)
216267
GPIO_InitTypeDef GPIO_InitStruct = {0};
217268

218269
/* GPIO Ports Clock Enable */
270+
__HAL_RCC_GPIOE_CLK_ENABLE();
271+
__HAL_RCC_GPIOG_CLK_ENABLE();
272+
__HAL_RCC_GPIOD_CLK_ENABLE();
273+
__HAL_RCC_GPIOI_CLK_ENABLE();
219274
__HAL_RCC_GPIOH_CLK_ENABLE();
275+
__HAL_RCC_GPIOF_CLK_ENABLE();
220276
__HAL_RCC_GPIOC_CLK_ENABLE();
221277
__HAL_RCC_GPIOB_CLK_ENABLE();
222278

0 commit comments

Comments
 (0)