RTEMS 6.1-rc7
Loading...
Searching...
No Matches
stm32h7xx_hal_nor.h
Go to the documentation of this file.
1
19/* Define to prevent recursive inclusion -------------------------------------*/
20#ifndef STM32H7xx_HAL_NOR_H
21#define STM32H7xx_HAL_NOR_H
22
23#ifdef __cplusplus
24extern "C" {
25#endif
26
27
28/* Includes ------------------------------------------------------------------*/
29#include "stm32h7xx_ll_fmc.h"
30
39/* Exported typedef ----------------------------------------------------------*/
48typedef enum
49{
56
60typedef enum
61{
62 HAL_NOR_STATUS_SUCCESS = 0U,
63 HAL_NOR_STATUS_ONGOING,
64 HAL_NOR_STATUS_ERROR,
65 HAL_NOR_STATUS_TIMEOUT
67
71typedef struct
72{
75 uint16_t Device_Code1;
76
77 uint16_t Device_Code2;
78
79 uint16_t Device_Code3;
84
88typedef struct
89{
94 uint16_t CFI_1;
95
96 uint16_t CFI_2;
97
98 uint16_t CFI_3;
99
100 uint16_t CFI_4;
102
106#if (USE_HAL_NOR_REGISTER_CALLBACKS == 1)
107typedef struct __NOR_HandleTypeDef
108#else
109typedef struct
110#endif /* USE_HAL_NOR_REGISTER_CALLBACKS */
111
112{
113 FMC_NORSRAM_TypeDef *Instance;
115 FMC_NORSRAM_EXTENDED_TypeDef *Extended;
123 uint32_t CommandSet;
125#if (USE_HAL_NOR_REGISTER_CALLBACKS == 1)
126 void (* MspInitCallback)(struct __NOR_HandleTypeDef *hnor);
127 void (* MspDeInitCallback)(struct __NOR_HandleTypeDef *hnor);
128#endif /* USE_HAL_NOR_REGISTER_CALLBACKS */
130
131#if (USE_HAL_NOR_REGISTER_CALLBACKS == 1)
135typedef enum
136{
137 HAL_NOR_MSP_INIT_CB_ID = 0x00U,
138 HAL_NOR_MSP_DEINIT_CB_ID = 0x01U
139} HAL_NOR_CallbackIDTypeDef;
140
144typedef void (*pNOR_CallbackTypeDef)(NOR_HandleTypeDef *hnor);
145#endif /* USE_HAL_NOR_REGISTER_CALLBACKS */
150/* Exported constants --------------------------------------------------------*/
151/* Exported macro ------------------------------------------------------------*/
160#if (USE_HAL_NOR_REGISTER_CALLBACKS == 1)
161#define __HAL_NOR_RESET_HANDLE_STATE(__HANDLE__) do { \
162 (__HANDLE__)->State = HAL_NOR_STATE_RESET; \
163 (__HANDLE__)->MspInitCallback = NULL; \
164 (__HANDLE__)->MspDeInitCallback = NULL; \
165 } while(0)
166#else
167#define __HAL_NOR_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_NOR_STATE_RESET)
168#endif /* USE_HAL_NOR_REGISTER_CALLBACKS */
173/* Exported functions --------------------------------------------------------*/
182/* Initialization/de-initialization functions ********************************/
184 FMC_NORSRAM_TimingTypeDef *ExtTiming);
185HAL_StatusTypeDef HAL_NOR_DeInit(NOR_HandleTypeDef *hnor);
186void HAL_NOR_MspInit(NOR_HandleTypeDef *hnor);
187void HAL_NOR_MspDeInit(NOR_HandleTypeDef *hnor);
188void HAL_NOR_MspWait(NOR_HandleTypeDef *hnor, uint32_t Timeout);
197/* I/O operation functions ***************************************************/
198HAL_StatusTypeDef HAL_NOR_Read_ID(NOR_HandleTypeDef *hnor, NOR_IDTypeDef *pNOR_ID);
199HAL_StatusTypeDef HAL_NOR_ReturnToReadMode(NOR_HandleTypeDef *hnor);
200HAL_StatusTypeDef HAL_NOR_Read(NOR_HandleTypeDef *hnor, uint32_t *pAddress, uint16_t *pData);
201HAL_StatusTypeDef HAL_NOR_Program(NOR_HandleTypeDef *hnor, uint32_t *pAddress, uint16_t *pData);
202
203HAL_StatusTypeDef HAL_NOR_ReadBuffer(NOR_HandleTypeDef *hnor, uint32_t uwAddress, uint16_t *pData,
204 uint32_t uwBufferSize);
205HAL_StatusTypeDef HAL_NOR_ProgramBuffer(NOR_HandleTypeDef *hnor, uint32_t uwAddress, uint16_t *pData,
206 uint32_t uwBufferSize);
207
208HAL_StatusTypeDef HAL_NOR_Erase_Block(NOR_HandleTypeDef *hnor, uint32_t BlockAddress, uint32_t Address);
209HAL_StatusTypeDef HAL_NOR_Erase_Chip(NOR_HandleTypeDef *hnor, uint32_t Address);
210HAL_StatusTypeDef HAL_NOR_Read_CFI(NOR_HandleTypeDef *hnor, NOR_CFITypeDef *pNOR_CFI);
211
212#if (USE_HAL_NOR_REGISTER_CALLBACKS == 1)
213/* NOR callback registering/unregistering */
214HAL_StatusTypeDef HAL_NOR_RegisterCallback(NOR_HandleTypeDef *hnor, HAL_NOR_CallbackIDTypeDef CallbackId,
215 pNOR_CallbackTypeDef pCallback);
216HAL_StatusTypeDef HAL_NOR_UnRegisterCallback(NOR_HandleTypeDef *hnor, HAL_NOR_CallbackIDTypeDef CallbackId);
217#endif /* USE_HAL_NOR_REGISTER_CALLBACKS */
226/* NOR Control functions *****************************************************/
227HAL_StatusTypeDef HAL_NOR_WriteOperation_Enable(NOR_HandleTypeDef *hnor);
228HAL_StatusTypeDef HAL_NOR_WriteOperation_Disable(NOR_HandleTypeDef *hnor);
237/* NOR State functions ********************************************************/
238HAL_NOR_StateTypeDef HAL_NOR_GetState(const NOR_HandleTypeDef *hnor);
239HAL_NOR_StatusTypeDef HAL_NOR_GetStatus(NOR_HandleTypeDef *hnor, uint32_t Address, uint32_t Timeout);
248/* Private types -------------------------------------------------------------*/
249/* Private variables ---------------------------------------------------------*/
250/* Private constants ---------------------------------------------------------*/
255/* NOR device IDs addresses */
256#define MC_ADDRESS ((uint16_t)0x0000)
257#define DEVICE_CODE1_ADDR ((uint16_t)0x0001)
258#define DEVICE_CODE2_ADDR ((uint16_t)0x000E)
259#define DEVICE_CODE3_ADDR ((uint16_t)0x000F)
260
261/* NOR CFI IDs addresses */
262#define CFI1_ADDRESS ((uint16_t)0x0061)
263#define CFI2_ADDRESS ((uint16_t)0x0062)
264#define CFI3_ADDRESS ((uint16_t)0x0063)
265#define CFI4_ADDRESS ((uint16_t)0x0064)
266
267/* NOR operation wait timeout */
268#define NOR_TMEOUT ((uint16_t)0xFFFF)
269
270/* NOR memory data width */
271#define NOR_MEMORY_8B ((uint8_t)0x00)
272#define NOR_MEMORY_16B ((uint8_t)0x01)
273
274/* NOR memory device read/write start address */
275#define NOR_MEMORY_ADRESS1 (0x60000000U)
276#define NOR_MEMORY_ADRESS2 (0x64000000U)
277#define NOR_MEMORY_ADRESS3 (0x68000000U)
278#define NOR_MEMORY_ADRESS4 (0x6C000000U)
283/* Private macros ------------------------------------------------------------*/
295#define NOR_ADDR_SHIFT(__NOR_ADDRESS, __NOR_MEMORY_WIDTH_, __ADDRESS__) \
296 ((uint32_t)(((__NOR_MEMORY_WIDTH_) == NOR_MEMORY_16B)? \
297 ((uint32_t)((__NOR_ADDRESS) + (2U * (__ADDRESS__)))): \
298 ((uint32_t)((__NOR_ADDRESS) + (__ADDRESS__)))))
299
306#define NOR_WRITE(__ADDRESS__, __DATA__) do{ \
307 (*(__IO uint16_t *)((uint32_t)(__ADDRESS__)) = (__DATA__)); \
308 __DSB(); \
309 } while(0)
310
324#ifdef __cplusplus
325}
326#endif
327
328#endif /* STM32H7xx_HAL_NOR_H */
#define __IO
Definition: core_cm4.h:239
HAL_NOR_StateTypeDef
HAL SRAM State structures definition.
Definition: stm32h7xx_hal_nor.h:49
HAL_NOR_StatusTypeDef
FMC NOR Status typedef.
Definition: stm32h7xx_hal_nor.h:61
@ HAL_NOR_STATE_ERROR
Definition: stm32h7xx_hal_nor.h:53
@ HAL_NOR_STATE_RESET
Definition: stm32h7xx_hal_nor.h:50
@ HAL_NOR_STATE_PROTECTED
Definition: stm32h7xx_hal_nor.h:54
@ HAL_NOR_STATE_READY
Definition: stm32h7xx_hal_nor.h:51
@ HAL_NOR_STATE_BUSY
Definition: stm32h7xx_hal_nor.h:52
HAL_StatusTypeDef
HAL Status structures definition.
Definition: stm32h7xx_hal_def.h:47
HAL_LockTypeDef
HAL Lock structures definition.
Definition: stm32h7xx_hal_def.h:58
Header file of FMC HAL module.
FMC NORSRAM Configuration Structure definition.
Definition: stm32h7xx_ll_fmc.h:192
FMC NORSRAM Timing parameters structure definition.
Definition: stm32h7xx_ll_fmc.h:255
FMC NOR CFI typedef.
Definition: stm32h7xx_hal_nor.h:89
uint16_t CFI_1
Definition: stm32h7xx_hal_nor.h:94
NOR handle Structure definition.
Definition: stm32h7xx_hal_nor.h:112
FMC_NORSRAM_TypeDef * Instance
Definition: stm32h7xx_hal_nor.h:113
uint32_t CommandSet
Definition: stm32h7xx_hal_nor.h:123
__IO HAL_NOR_StateTypeDef State
Definition: stm32h7xx_hal_nor.h:121
FMC_NORSRAM_EXTENDED_TypeDef * Extended
Definition: stm32h7xx_hal_nor.h:115
HAL_LockTypeDef Lock
Definition: stm32h7xx_hal_nor.h:119
FMC_NORSRAM_InitTypeDef Init
Definition: stm32h7xx_hal_nor.h:117
FMC NOR ID typedef.
Definition: stm32h7xx_hal_nor.h:72
uint16_t Device_Code3
Definition: stm32h7xx_hal_nor.h:79
uint16_t Manufacturer_Code
Definition: stm32h7xx_hal_nor.h:73