]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_M7_M4_AMP_STM32H745I_Discovery_IAR/ST_code/BSP/STM32H745I-Discovery/stm32h745i_discovery_qspi.h
Add M7/M4 AMP demo.
[freertos] / FreeRTOS / Demo / CORTEX_M7_M4_AMP_STM32H745I_Discovery_IAR / ST_code / BSP / STM32H745I-Discovery / stm32h745i_discovery_qspi.h
1 /**\r
2   ******************************************************************************\r
3   * @file    stm32h745i_discovery_qspi.h\r
4   * @author  MCD Application Team\r
5   * @brief   This file contains the common defines and functions prototypes for\r
6   *          the stm32H745i_discovery_qspi.c driver.\r
7   ******************************************************************************\r
8   * @attention\r
9   *\r
10   * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.\r
11   * All rights reserved.</center></h2>\r
12   *\r
13   * This software component is licensed by ST under BSD 3-Clause license,\r
14   * the "License"; You may not use this file except in compliance with the\r
15   * License. You may obtain a copy of the License at:\r
16   *                        opensource.org/licenses/BSD-3-Clause\r
17   *\r
18   ******************************************************************************\r
19   */\r
20 \r
21 /** @addtogroup BSP\r
22   * @{\r
23   */\r
24 \r
25 /** @addtogroup STM32H745I_DISCOVERY\r
26   * @{\r
27   */\r
28 \r
29 /* Define to prevent recursive inclusion -------------------------------------*/\r
30 #ifndef __STM32H745I_DISCOVERY_QSPI_H\r
31 #define __STM32H745I_DISCOVERY_QSPI_H\r
32 \r
33 #ifdef __cplusplus\r
34  extern "C" {\r
35 #endif\r
36 \r
37 /* Includes ------------------------------------------------------------------*/\r
38 #include "stm32h7xx_hal.h"\r
39 #include "../Components/mt25tl01g/mt25tl01g.h"\r
40 \r
41 /** @addtogroup STM32H745I_DISCOVERY_QSPI\r
42   * @{\r
43   */\r
44  \r
45 /* Exported constants --------------------------------------------------------*/\r
46 /** @defgroup STM32H745I_DISCOVERY_QSPI_Exported_Constants Exported Constants\r
47   * @{\r
48   */\r
49 \r
50 /* QSPI Error codes */\r
51 #define QSPI_OK            ((uint8_t)0x00)\r
52 #define QSPI_ERROR         ((uint8_t)0x01)\r
53 #define QSPI_BUSY          ((uint8_t)0x02)\r
54 #define QSPI_NOT_SUPPORTED ((uint8_t)0x04)\r
55 #define QSPI_SUSPENDED     ((uint8_t)0x08)\r
56 \r
57 \r
58 /* Definition for QSPI clock resources */\r
59 #define QSPI_CLK_ENABLE()              __HAL_RCC_QSPI_CLK_ENABLE()\r
60 #define QSPI_CLK_DISABLE()             __HAL_RCC_QSPI_CLK_DISABLE()\r
61 #define QSPI_CLK_GPIO_CLK_ENABLE()     __HAL_RCC_GPIOF_CLK_ENABLE()\r
62 #define QSPI_BK1_CS_GPIO_CLK_ENABLE()  __HAL_RCC_GPIOG_CLK_ENABLE()\r
63 #define QSPI_BK1_D0_GPIO_CLK_ENABLE()  __HAL_RCC_GPIOD_CLK_ENABLE()\r
64 #define QSPI_BK1_D1_GPIO_CLK_ENABLE()  __HAL_RCC_GPIOF_CLK_ENABLE()\r
65 #define QSPI_BK1_D2_GPIO_CLK_ENABLE()  __HAL_RCC_GPIOF_CLK_ENABLE()\r
66 #define QSPI_BK1_D3_GPIO_CLK_ENABLE()  __HAL_RCC_GPIOF_CLK_ENABLE()\r
67 #define QSPI_BK2_CS_GPIO_CLK_ENABLE()  __HAL_RCC_GPIOG_CLK_ENABLE()\r
68 #define QSPI_BK2_D0_GPIO_CLK_ENABLE()  __HAL_RCC_GPIOH_CLK_ENABLE()\r
69 #define QSPI_BK2_D1_GPIO_CLK_ENABLE()  __HAL_RCC_GPIOH_CLK_ENABLE()\r
70 #define QSPI_BK2_D2_GPIO_CLK_ENABLE()  __HAL_RCC_GPIOG_CLK_ENABLE()\r
71 #define QSPI_BK2_D3_GPIO_CLK_ENABLE()  __HAL_RCC_GPIOG_CLK_ENABLE()\r
72 \r
73 \r
74 #define QSPI_FORCE_RESET()         __HAL_RCC_QSPI_FORCE_RESET()\r
75 #define QSPI_RELEASE_RESET()       __HAL_RCC_QSPI_RELEASE_RESET()\r
76 \r
77 /* Definition for QSPI Pins */\r
78 #define QSPI_CLK_PIN               GPIO_PIN_10\r
79 #define QSPI_CLK_GPIO_PORT         GPIOF\r
80 /* Bank 1 */\r
81 #define QSPI_BK1_CS_PIN            GPIO_PIN_6\r
82 #define QSPI_BK1_CS_GPIO_PORT      GPIOG\r
83 #define QSPI_BK1_D0_PIN            GPIO_PIN_11\r
84 #define QSPI_BK1_D0_GPIO_PORT      GPIOD\r
85 #define QSPI_BK1_D1_PIN            GPIO_PIN_9\r
86 #define QSPI_BK1_D1_GPIO_PORT      GPIOF\r
87 #define QSPI_BK1_D2_PIN            GPIO_PIN_7\r
88 #define QSPI_BK1_D2_GPIO_PORT      GPIOF\r
89 #define QSPI_BK1_D3_PIN            GPIO_PIN_6\r
90 #define QSPI_BK1_D3_GPIO_PORT      GPIOF\r
91 \r
92 /* Bank 2 */\r
93 #define QSPI_BK2_CS_PIN            GPIO_PIN_6\r
94 #define QSPI_BK2_CS_GPIO_PORT      GPIOG\r
95 #define QSPI_BK2_D0_PIN            GPIO_PIN_2\r
96 #define QSPI_BK2_D0_GPIO_PORT      GPIOH\r
97 #define QSPI_BK2_D1_PIN            GPIO_PIN_3\r
98 #define QSPI_BK2_D1_GPIO_PORT      GPIOH\r
99 #define QSPI_BK2_D2_PIN            GPIO_PIN_9\r
100 #define QSPI_BK2_D2_GPIO_PORT      GPIOG\r
101 #define QSPI_BK2_D3_PIN            GPIO_PIN_14\r
102 #define QSPI_BK2_D3_GPIO_PORT      GPIOG\r
103 \r
104 \r
105 /* MT25TL01G Micron memory */\r
106 /* Size of the flash */\r
107 #define QSPI_FLASH_SIZE            26     /* Address bus width to access whole memory space */\r
108 #define QSPI_PAGE_SIZE             256\r
109 \r
110 /* QSPI Base Address */\r
111 #define QSPI_BASE_ADDRESS          0x90000000\r
112 \r
113 /**\r
114   * @}\r
115   */\r
116 \r
117 /* Exported types ------------------------------------------------------------*/\r
118 /** @defgroup STM32H745I_DISCOVERY_QSPI_Exported_Types Exported Types\r
119   * @{\r
120   */\r
121 /* QSPI Info */\r
122 typedef struct {\r
123   uint32_t FlashSize;          /*!< Size of the flash */\r
124   uint32_t EraseSectorSize;    /*!< Size of sectors for the erase operation */\r
125   uint32_t EraseSectorsNumber; /*!< Number of sectors for the erase operation */\r
126   uint32_t ProgPageSize;       /*!< Size of pages for the program operation */\r
127   uint32_t ProgPagesNumber;    /*!< Number of pages for the program operation */\r
128 } QSPI_Info;\r
129 \r
130 /**\r
131   * @}\r
132   */\r
133 \r
134 \r
135 /* Exported functions --------------------------------------------------------*/\r
136 /** @addtogroup STM32H745I_DISCOVERY_QSPI_Exported_Functions\r
137   * @{\r
138   */\r
139 uint8_t BSP_QSPI_Init       (void);\r
140 uint8_t BSP_QSPI_DeInit     (void);\r
141 uint8_t BSP_QSPI_Read       (uint8_t* pData, uint32_t ReadAddr, uint32_t Size);\r
142 uint8_t BSP_QSPI_Write      (uint8_t* pData, uint32_t WriteAddr, uint32_t Size);\r
143 uint8_t BSP_QSPI_Erase_Block(uint32_t BlockAddress);\r
144 uint8_t BSP_QSPI_Erase_Chip (void);\r
145 uint8_t BSP_QSPI_GetStatus  (void);\r
146 uint8_t BSP_QSPI_GetInfo    (QSPI_Info* pInfo);\r
147 uint8_t BSP_QSPI_EnableMemoryMappedMode(void);\r
148 \r
149 /* These functions can be modified in case the current settings\r
150    need to be changed for specific application needs */\r
151 void BSP_QSPI_MspInit(QSPI_HandleTypeDef *hqspi, void *Params);\r
152 void BSP_QSPI_MspDeInit(QSPI_HandleTypeDef *hqspi, void *Params);\r
153 \r
154 /**\r
155   * @}\r
156   */\r
157 \r
158 /**\r
159   * @}\r
160   */\r
161 \r
162 #ifdef __cplusplus\r
163 }\r
164 #endif\r
165 \r
166 #endif /* __STM32H745I_DISCOVERY_QSPI_H */\r
167 /**\r
168   * @}\r
169   */\r
170 \r
171 /**\r
172   * @}\r
173   */\r
174 \r
175 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r