123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- #include "bsp_fsmc_nandflash.h"
- /* USER CODE BEGIN 0 */
- /* USER CODE END 0 */
- NAND_HandleTypeDef hnand1;
- static uint32_t FSMC_Initialized = 0;
- /* FSMC initialization function */
- /* FSMC initialization function */
- void MX_FSMC_NANDFLASH_Init(void)
- {
- /* USER CODE BEGIN FSMC_Init 0 */
- /* USER CODE END FSMC_Init 0 */
- FSMC_NAND_PCC_TimingTypeDef ComSpaceTiming = {0};
- FSMC_NAND_PCC_TimingTypeDef AttSpaceTiming = {0};
- /* USER CODE BEGIN FSMC_Init 1 */
- /* USER CODE END FSMC_Init 1 */
- /** Perform the NAND1 memory initialization sequence
- */
- hnand1.Instance = FSMC_NAND_DEVICE;
- /* hnand1.Init */
- hnand1.Init.NandBank = FSMC_NAND_BANK2;
- hnand1.Init.Waitfeature = FSMC_NAND_PCC_WAIT_FEATURE_DISABLE;
- hnand1.Init.MemoryDataWidth = FSMC_NAND_PCC_MEM_BUS_WIDTH_8;
- hnand1.Init.EccComputation = FSMC_NAND_ECC_ENABLE;
- hnand1.Init.ECCPageSize = FSMC_NAND_ECC_PAGE_SIZE_1024BYTE;
- hnand1.Init.TCLRSetupTime = 0;
- hnand1.Init.TARSetupTime = 0;
- /* hnand1.Config */
- hnand1.Config.PageSize = 2048;
- hnand1.Config.SpareAreaSize = 64;
- hnand1.Config.BlockSize = 64;
- hnand1.Config.BlockNbr = 1024;
- hnand1.Config.PlaneNbr =2;
- hnand1.Config.PlaneSize = 2048;
- hnand1.Config.ExtraCommandEnable = DISABLE;
- /* ComSpaceTiming */
- ComSpaceTiming.SetupTime = 0x1;
- ComSpaceTiming.WaitSetupTime = 0x2;
- ComSpaceTiming.HoldSetupTime = 0x2;
- ComSpaceTiming.HiZSetupTime = 0x2;
- /* AttSpaceTiming */
- AttSpaceTiming.SetupTime = 0x1;
- AttSpaceTiming.WaitSetupTime = 0x2;
- AttSpaceTiming.HoldSetupTime = 0x2;
- AttSpaceTiming.HiZSetupTime = 0x2;
- if (HAL_NAND_Init(&hnand1, &ComSpaceTiming, &AttSpaceTiming) != HAL_OK)
- {
- return ;
- }
- }
- static void HAL_FSMC_NANDFLASH_MspInit()
- {
- /* USER CODE BEGIN FSMC_MspInit 0 */
- /* USER CODE END FSMC_MspInit 0 */
- GPIO_InitTypeDef GPIO_InitStruct = {0};
- if (FSMC_Initialized) {
- return;
- }
- FSMC_Initialized = 1;
- /* Peripheral clock enable */
- __HAL_RCC_FSMC_CLK_ENABLE();
- __HAL_RCC_GPIOD_CLK_ENABLE();
- __HAL_RCC_GPIOE_CLK_ENABLE();
- /** FSMC GPIO Configuration
- PE7 ------> FSMC_D4
- PE8 ------> FSMC_D5
- PE9 ------> FSMC_D6
- PE10 ------> FSMC_D7
- PD11 ------> FSMC_CLE
- PD12 ------> FSMC_ALE
- PD14 ------> FSMC_D0
- PD15 ------> FSMC_D1
- PD0 ------> FSMC_D2
- PD1 ------> FSMC_D3
- PD4 ------> FSMC_NOE
- PD5 ------> FSMC_NWE
- PD6 ------> FSMC_NWAIT
- PD7 ------> FSMC_NCE2
- */
- /* GPIO_InitStruct */
- GPIO_InitStruct.Pin = GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10;
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
- GPIO_InitStruct.Alternate = GPIO_AF12_FSMC;
- HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
- /* GPIO_InitStruct */
- GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_14|GPIO_PIN_15
- |GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_4|GPIO_PIN_5
- |GPIO_PIN_7;
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
- GPIO_InitStruct.Alternate = GPIO_AF12_FSMC;
- HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
- /* USER CODE BEGIN FSMC_MspInit 1 */
-
- GPIO_InitStruct.Pin = GPIO_PIN_6;
- GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
- GPIO_InitStruct.Pull = GPIO_PULLUP;
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
- GPIO_InitStruct.Alternate = GPIO_AF12_FSMC;
- HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
-
-
-
-
- /* USER CODE END FSMC_MspInit 1 */
- }
-
-
- void HAL_NAND_MspInit(NAND_HandleTypeDef *hnand)
- {
- HAL_FSMC_NANDFLASH_MspInit();
- }
|