STM32F4xx_HAL_Driver  1.8.3
stm32f4xx_hal_nor.h
Go to the documentation of this file.
1 
19 /* Define to prevent recursive inclusion -------------------------------------*/
20 #ifndef STM32F4xx_HAL_NOR_H
21 #define STM32F4xx_HAL_NOR_H
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
27 #if defined(FMC_Bank1) || defined(FSMC_Bank1)
28 
29 /* Includes ------------------------------------------------------------------*/
30 #if defined(FSMC_Bank1)
31 #include "stm32f4xx_ll_fsmc.h"
32 #else
33 #include "stm32f4xx_ll_fmc.h"
34 #endif /* FMC_Bank1 */
35 
44 /* Exported typedef ----------------------------------------------------------*/
52 typedef enum
53 {
60 
64 typedef enum
65 {
66  HAL_NOR_STATUS_SUCCESS = 0U,
67  HAL_NOR_STATUS_ONGOING,
68  HAL_NOR_STATUS_ERROR,
69  HAL_NOR_STATUS_TIMEOUT
71 
75 typedef struct
76 {
77  uint16_t Manufacturer_Code;
79  uint16_t Device_Code1;
80 
81  uint16_t Device_Code2;
82 
83  uint16_t Device_Code3;
88 
92 typedef struct
93 {
98  uint16_t CFI_1;
99 
100  uint16_t CFI_2;
101 
102  uint16_t CFI_3;
103 
104  uint16_t CFI_4;
106 
110 #if (USE_HAL_NOR_REGISTER_CALLBACKS == 1)
111 typedef struct __NOR_HandleTypeDef
112 #else
113 typedef struct
114 #endif /* USE_HAL_NOR_REGISTER_CALLBACKS */
115 
116 {
117  FMC_NORSRAM_TypeDef *Instance;
119  FMC_NORSRAM_EXTENDED_TypeDef *Extended;
123  HAL_LockTypeDef Lock;
127  uint32_t CommandSet;
129 #if (USE_HAL_NOR_REGISTER_CALLBACKS == 1)
130  void (* MspInitCallback)(struct __NOR_HandleTypeDef *hnor);
131  void (* MspDeInitCallback)(struct __NOR_HandleTypeDef *hnor);
132 #endif /* USE_HAL_NOR_REGISTER_CALLBACKS */
134 
135 #if (USE_HAL_NOR_REGISTER_CALLBACKS == 1)
139 typedef enum
140 {
142  HAL_NOR_MSP_DEINIT_CB_ID = 0x01U
144 
149 #endif /* USE_HAL_NOR_REGISTER_CALLBACKS */
154 /* Exported constants --------------------------------------------------------*/
155 /* Exported macro ------------------------------------------------------------*/
163 #if (USE_HAL_NOR_REGISTER_CALLBACKS == 1)
164 #define __HAL_NOR_RESET_HANDLE_STATE(__HANDLE__) do { \
165  (__HANDLE__)->State = HAL_NOR_STATE_RESET; \
166  (__HANDLE__)->MspInitCallback = NULL; \
167  (__HANDLE__)->MspDeInitCallback = NULL; \
168  } while(0)
169 #else
170 #define __HAL_NOR_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_NOR_STATE_RESET)
171 #endif /* USE_HAL_NOR_REGISTER_CALLBACKS */
176 /* Exported functions --------------------------------------------------------*/
185 /* Initialization/de-initialization functions ********************************/
186 HAL_StatusTypeDef HAL_NOR_Init(NOR_HandleTypeDef *hnor, FMC_NORSRAM_TimingTypeDef *Timing,
187  FMC_NORSRAM_TimingTypeDef *ExtTiming);
188 HAL_StatusTypeDef HAL_NOR_DeInit(NOR_HandleTypeDef *hnor);
191 void HAL_NOR_MspWait(NOR_HandleTypeDef *hnor, uint32_t Timeout);
200 /* I/O operation functions ***************************************************/
201 HAL_StatusTypeDef HAL_NOR_Read_ID(NOR_HandleTypeDef *hnor, NOR_IDTypeDef *pNOR_ID);
202 HAL_StatusTypeDef HAL_NOR_ReturnToReadMode(NOR_HandleTypeDef *hnor);
203 HAL_StatusTypeDef HAL_NOR_Read(NOR_HandleTypeDef *hnor, uint32_t *pAddress, uint16_t *pData);
204 HAL_StatusTypeDef HAL_NOR_Program(NOR_HandleTypeDef *hnor, uint32_t *pAddress, uint16_t *pData);
205 
206 HAL_StatusTypeDef HAL_NOR_ReadBuffer(NOR_HandleTypeDef *hnor, uint32_t uwAddress, uint16_t *pData,
207  uint32_t uwBufferSize);
208 HAL_StatusTypeDef HAL_NOR_ProgramBuffer(NOR_HandleTypeDef *hnor, uint32_t uwAddress, uint16_t *pData,
209  uint32_t uwBufferSize);
210 
211 HAL_StatusTypeDef HAL_NOR_Erase_Block(NOR_HandleTypeDef *hnor, uint32_t BlockAddress, uint32_t Address);
212 HAL_StatusTypeDef HAL_NOR_Erase_Chip(NOR_HandleTypeDef *hnor, uint32_t Address);
213 HAL_StatusTypeDef HAL_NOR_Read_CFI(NOR_HandleTypeDef *hnor, NOR_CFITypeDef *pNOR_CFI);
214 
215 #if (USE_HAL_NOR_REGISTER_CALLBACKS == 1)
216 /* NOR callback registering/unregistering */
217 HAL_StatusTypeDef HAL_NOR_RegisterCallback(NOR_HandleTypeDef *hnor, HAL_NOR_CallbackIDTypeDef CallbackId,
218  pNOR_CallbackTypeDef pCallback);
219 HAL_StatusTypeDef HAL_NOR_UnRegisterCallback(NOR_HandleTypeDef *hnor, HAL_NOR_CallbackIDTypeDef CallbackId);
220 #endif /* USE_HAL_NOR_REGISTER_CALLBACKS */
229 /* NOR Control functions *****************************************************/
230 HAL_StatusTypeDef HAL_NOR_WriteOperation_Enable(NOR_HandleTypeDef *hnor);
231 HAL_StatusTypeDef HAL_NOR_WriteOperation_Disable(NOR_HandleTypeDef *hnor);
240 /* NOR State functions ********************************************************/
242 HAL_NOR_StatusTypeDef HAL_NOR_GetStatus(NOR_HandleTypeDef *hnor, uint32_t Address, uint32_t Timeout);
251 /* Private types -------------------------------------------------------------*/
252 /* Private variables ---------------------------------------------------------*/
253 /* Private constants ---------------------------------------------------------*/
257 /* NOR device IDs addresses */
258 #define MC_ADDRESS ((uint16_t)0x0000)
259 #define DEVICE_CODE1_ADDR ((uint16_t)0x0001)
260 #define DEVICE_CODE2_ADDR ((uint16_t)0x000E)
261 #define DEVICE_CODE3_ADDR ((uint16_t)0x000F)
262 
263 /* NOR CFI IDs addresses */
264 #define CFI1_ADDRESS ((uint16_t)0x0061)
265 #define CFI2_ADDRESS ((uint16_t)0x0062)
266 #define CFI3_ADDRESS ((uint16_t)0x0063)
267 #define CFI4_ADDRESS ((uint16_t)0x0064)
268 
269 /* NOR operation wait timeout */
270 #define NOR_TMEOUT ((uint16_t)0xFFFF)
271 
272 /* NOR memory data width */
273 #define NOR_MEMORY_8B ((uint8_t)0x00)
274 #define NOR_MEMORY_16B ((uint8_t)0x01)
275 
276 /* NOR memory device read/write start address */
277 #define NOR_MEMORY_ADRESS1 (0x60000000U)
278 #define NOR_MEMORY_ADRESS2 (0x64000000U)
279 #define NOR_MEMORY_ADRESS3 (0x68000000U)
280 #define NOR_MEMORY_ADRESS4 (0x6C000000U)
285 /* Private macros ------------------------------------------------------------*/
296 #define NOR_ADDR_SHIFT(__NOR_ADDRESS, __NOR_MEMORY_WIDTH_, __ADDRESS__) \
297  ((uint32_t)(((__NOR_MEMORY_WIDTH_) == NOR_MEMORY_16B)? \
298  ((uint32_t)((__NOR_ADDRESS) + (2U * (__ADDRESS__)))): \
299  ((uint32_t)((__NOR_ADDRESS) + (__ADDRESS__)))))
300 
307 #define NOR_WRITE(__ADDRESS__, __DATA__) do{ \
308  (*(__IO uint16_t *)((uint32_t)(__ADDRESS__)) = (__DATA__)); \
309  __DSB(); \
310  } while(0)
311 
324 #endif /* FMC_Bank1 || FSMC_Bank1 */
325 
326 #ifdef __cplusplus
327 }
328 #endif
329 
330 #endif /* STM32F4xx_HAL_NOR_H */
FMC_NORSRAM_TypeDef * Instance
FMC_NORSRAM_EXTENDED_TypeDef * Extended
__IO HAL_NOR_StateTypeDef State
uint32_t CommandSet
FMC_NORSRAM_InitTypeDef Init
ADC handle Structure definition.
FMC NORSRAM Configuration Structure definition.
FMC NORSRAM Timing parameters structure definition.
HAL_StatusTypeDef HAL_NOR_DeInit(NOR_HandleTypeDef *hnor)
Perform NOR memory De-Initialization sequence.
void HAL_NOR_MspInit(NOR_HandleTypeDef *hnor)
NOR MSP Init.
HAL_StatusTypeDef HAL_NOR_Init(NOR_HandleTypeDef *hnor, FMC_NORSRAM_TimingTypeDef *Timing, FMC_NORSRAM_TimingTypeDef *ExtTiming)
Perform the NOR memory Initialization sequence.
void HAL_NOR_MspDeInit(NOR_HandleTypeDef *hnor)
NOR MSP DeInit.
void HAL_NOR_MspWait(NOR_HandleTypeDef *hnor, uint32_t Timeout)
NOR MSP Wait for Ready/Busy signal.
HAL_StatusTypeDef HAL_NOR_Read(NOR_HandleTypeDef *hnor, uint32_t *pAddress, uint16_t *pData)
Read data from NOR memory.
HAL_StatusTypeDef HAL_NOR_Erase_Block(NOR_HandleTypeDef *hnor, uint32_t BlockAddress, uint32_t Address)
Erase the specified block of the NOR memory.
HAL_StatusTypeDef HAL_NOR_UnRegisterCallback(NOR_HandleTypeDef *hnor, HAL_NOR_CallbackIDTypeDef CallbackId)
Unregister a User NOR Callback NOR Callback is redirected to the weak predefined callback.
HAL_StatusTypeDef HAL_NOR_ReadBuffer(NOR_HandleTypeDef *hnor, uint32_t uwAddress, uint16_t *pData, uint32_t uwBufferSize)
Reads a half-word buffer from the NOR memory.
HAL_StatusTypeDef HAL_NOR_Program(NOR_HandleTypeDef *hnor, uint32_t *pAddress, uint16_t *pData)
Program data to NOR memory.
HAL_StatusTypeDef HAL_NOR_ReturnToReadMode(NOR_HandleTypeDef *hnor)
Returns the NOR memory to Read mode.
HAL_StatusTypeDef HAL_NOR_Read_CFI(NOR_HandleTypeDef *hnor, NOR_CFITypeDef *pNOR_CFI)
Read NOR flash CFI IDs.
HAL_StatusTypeDef HAL_NOR_Read_ID(NOR_HandleTypeDef *hnor, NOR_IDTypeDef *pNOR_ID)
Read NOR flash IDs.
HAL_StatusTypeDef HAL_NOR_RegisterCallback(NOR_HandleTypeDef *hnor, HAL_NOR_CallbackIDTypeDef CallbackId, pNOR_CallbackTypeDef pCallback)
Register a User NOR Callback To be used to override the weak predefined callback.
HAL_StatusTypeDef HAL_NOR_Erase_Chip(NOR_HandleTypeDef *hnor, uint32_t Address)
Erase the entire NOR chip.
HAL_StatusTypeDef HAL_NOR_ProgramBuffer(NOR_HandleTypeDef *hnor, uint32_t uwAddress, uint16_t *pData, uint32_t uwBufferSize)
Writes a half-word buffer to the NOR memory. This function must be used only with S29GL128P NOR memor...
HAL_StatusTypeDef HAL_NOR_WriteOperation_Disable(NOR_HandleTypeDef *hnor)
Disables dynamically NOR write operation.
HAL_StatusTypeDef HAL_NOR_WriteOperation_Enable(NOR_HandleTypeDef *hnor)
Enables dynamically NOR write operation.
HAL_NOR_StateTypeDef HAL_NOR_GetState(const NOR_HandleTypeDef *hnor)
return the NOR controller state
HAL_NOR_StatusTypeDef HAL_NOR_GetStatus(NOR_HandleTypeDef *hnor, uint32_t Address, uint32_t Timeout)
Returns the NOR operation status.
uint16_t Device_Code3
uint16_t Manufacturer_Code
struct __NOR_HandleTypeDef else typedef struct endif NOR_HandleTypeDef
NOR handle Structure definition.
void(* pNOR_CallbackTypeDef)(NOR_HandleTypeDef *hnor)
HAL NOR Callback pointer definition.
HAL_NOR_CallbackIDTypeDef
HAL NOR Callback ID enumeration definition.
HAL_NOR_StateTypeDef
HAL SRAM State structures definition.
HAL_NOR_StatusTypeDef
FMC NOR Status typedef.
@ HAL_NOR_MSP_INIT_CB_ID
@ HAL_NOR_MSP_DEINIT_CB_ID
@ HAL_NOR_STATE_ERROR
@ HAL_NOR_STATE_RESET
@ HAL_NOR_STATE_PROTECTED
@ HAL_NOR_STATE_READY
@ HAL_NOR_STATE_BUSY
FMC NOR CFI typedef.
FMC NOR ID typedef.
HAL_LockTypeDef
HAL Lock structures definition
Header file of FMC HAL module.
Header file of FSMC HAL module.