File indexing completed on 2025-05-11 08:23:36
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020 #ifndef STM32H7xx_HAL_NOR_H
0021 #define STM32H7xx_HAL_NOR_H
0022
0023 #ifdef __cplusplus
0024 extern "C" {
0025 #endif
0026
0027
0028
0029 #include "stm32h7xx_ll_fmc.h"
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048 typedef enum
0049 {
0050 HAL_NOR_STATE_RESET = 0x00U,
0051 HAL_NOR_STATE_READY = 0x01U,
0052 HAL_NOR_STATE_BUSY = 0x02U,
0053 HAL_NOR_STATE_ERROR = 0x03U,
0054 HAL_NOR_STATE_PROTECTED = 0x04U
0055 } HAL_NOR_StateTypeDef;
0056
0057
0058
0059
0060 typedef enum
0061 {
0062 HAL_NOR_STATUS_SUCCESS = 0U,
0063 HAL_NOR_STATUS_ONGOING,
0064 HAL_NOR_STATUS_ERROR,
0065 HAL_NOR_STATUS_TIMEOUT
0066 } HAL_NOR_StatusTypeDef;
0067
0068
0069
0070
0071 typedef struct
0072 {
0073 uint16_t Manufacturer_Code;
0074
0075 uint16_t Device_Code1;
0076
0077 uint16_t Device_Code2;
0078
0079 uint16_t Device_Code3;
0080
0081
0082
0083 } NOR_IDTypeDef;
0084
0085
0086
0087
0088 typedef struct
0089 {
0090
0091
0092
0093
0094 uint16_t CFI_1;
0095
0096 uint16_t CFI_2;
0097
0098 uint16_t CFI_3;
0099
0100 uint16_t CFI_4;
0101 } NOR_CFITypeDef;
0102
0103
0104
0105
0106 #if (USE_HAL_NOR_REGISTER_CALLBACKS == 1)
0107 typedef struct __NOR_HandleTypeDef
0108 #else
0109 typedef struct
0110 #endif
0111
0112 {
0113 FMC_NORSRAM_TypeDef *Instance;
0114
0115 FMC_NORSRAM_EXTENDED_TypeDef *Extended;
0116
0117 FMC_NORSRAM_InitTypeDef Init;
0118
0119 HAL_LockTypeDef Lock;
0120
0121 __IO HAL_NOR_StateTypeDef State;
0122
0123 uint32_t CommandSet;
0124
0125 #if (USE_HAL_NOR_REGISTER_CALLBACKS == 1)
0126 void (* MspInitCallback)(struct __NOR_HandleTypeDef *hnor);
0127 void (* MspDeInitCallback)(struct __NOR_HandleTypeDef *hnor);
0128 #endif
0129 } NOR_HandleTypeDef;
0130
0131 #if (USE_HAL_NOR_REGISTER_CALLBACKS == 1)
0132
0133
0134
0135 typedef enum
0136 {
0137 HAL_NOR_MSP_INIT_CB_ID = 0x00U,
0138 HAL_NOR_MSP_DEINIT_CB_ID = 0x01U
0139 } HAL_NOR_CallbackIDTypeDef;
0140
0141
0142
0143
0144 typedef void (*pNOR_CallbackTypeDef)(NOR_HandleTypeDef *hnor);
0145 #endif
0146
0147
0148
0149
0150
0151
0152
0153
0154
0155
0156
0157
0158
0159
0160 #if (USE_HAL_NOR_REGISTER_CALLBACKS == 1)
0161 #define __HAL_NOR_RESET_HANDLE_STATE(__HANDLE__) do { \
0162 (__HANDLE__)->State = HAL_NOR_STATE_RESET; \
0163 (__HANDLE__)->MspInitCallback = NULL; \
0164 (__HANDLE__)->MspDeInitCallback = NULL; \
0165 } while(0)
0166 #else
0167 #define __HAL_NOR_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_NOR_STATE_RESET)
0168 #endif
0169
0170
0171
0172
0173
0174
0175
0176
0177
0178
0179
0180
0181
0182
0183 HAL_StatusTypeDef HAL_NOR_Init(NOR_HandleTypeDef *hnor, FMC_NORSRAM_TimingTypeDef *Timing,
0184 FMC_NORSRAM_TimingTypeDef *ExtTiming);
0185 HAL_StatusTypeDef HAL_NOR_DeInit(NOR_HandleTypeDef *hnor);
0186 void HAL_NOR_MspInit(NOR_HandleTypeDef *hnor);
0187 void HAL_NOR_MspDeInit(NOR_HandleTypeDef *hnor);
0188 void HAL_NOR_MspWait(NOR_HandleTypeDef *hnor, uint32_t Timeout);
0189
0190
0191
0192
0193
0194
0195
0196
0197
0198 HAL_StatusTypeDef HAL_NOR_Read_ID(NOR_HandleTypeDef *hnor, NOR_IDTypeDef *pNOR_ID);
0199 HAL_StatusTypeDef HAL_NOR_ReturnToReadMode(NOR_HandleTypeDef *hnor);
0200 HAL_StatusTypeDef HAL_NOR_Read(NOR_HandleTypeDef *hnor, uint32_t *pAddress, uint16_t *pData);
0201 HAL_StatusTypeDef HAL_NOR_Program(NOR_HandleTypeDef *hnor, uint32_t *pAddress, uint16_t *pData);
0202
0203 HAL_StatusTypeDef HAL_NOR_ReadBuffer(NOR_HandleTypeDef *hnor, uint32_t uwAddress, uint16_t *pData,
0204 uint32_t uwBufferSize);
0205 HAL_StatusTypeDef HAL_NOR_ProgramBuffer(NOR_HandleTypeDef *hnor, uint32_t uwAddress, uint16_t *pData,
0206 uint32_t uwBufferSize);
0207
0208 HAL_StatusTypeDef HAL_NOR_Erase_Block(NOR_HandleTypeDef *hnor, uint32_t BlockAddress, uint32_t Address);
0209 HAL_StatusTypeDef HAL_NOR_Erase_Chip(NOR_HandleTypeDef *hnor, uint32_t Address);
0210 HAL_StatusTypeDef HAL_NOR_Read_CFI(NOR_HandleTypeDef *hnor, NOR_CFITypeDef *pNOR_CFI);
0211
0212 #if (USE_HAL_NOR_REGISTER_CALLBACKS == 1)
0213
0214 HAL_StatusTypeDef HAL_NOR_RegisterCallback(NOR_HandleTypeDef *hnor, HAL_NOR_CallbackIDTypeDef CallbackId,
0215 pNOR_CallbackTypeDef pCallback);
0216 HAL_StatusTypeDef HAL_NOR_UnRegisterCallback(NOR_HandleTypeDef *hnor, HAL_NOR_CallbackIDTypeDef CallbackId);
0217 #endif
0218
0219
0220
0221
0222
0223
0224
0225
0226
0227 HAL_StatusTypeDef HAL_NOR_WriteOperation_Enable(NOR_HandleTypeDef *hnor);
0228 HAL_StatusTypeDef HAL_NOR_WriteOperation_Disable(NOR_HandleTypeDef *hnor);
0229
0230
0231
0232
0233
0234
0235
0236
0237
0238 HAL_NOR_StateTypeDef HAL_NOR_GetState(const NOR_HandleTypeDef *hnor);
0239 HAL_NOR_StatusTypeDef HAL_NOR_GetStatus(NOR_HandleTypeDef *hnor, uint32_t Address, uint32_t Timeout);
0240
0241
0242
0243
0244
0245
0246
0247
0248
0249
0250
0251
0252
0253
0254
0255
0256 #define MC_ADDRESS ((uint16_t)0x0000)
0257 #define DEVICE_CODE1_ADDR ((uint16_t)0x0001)
0258 #define DEVICE_CODE2_ADDR ((uint16_t)0x000E)
0259 #define DEVICE_CODE3_ADDR ((uint16_t)0x000F)
0260
0261
0262 #define CFI1_ADDRESS ((uint16_t)0x0061)
0263 #define CFI2_ADDRESS ((uint16_t)0x0062)
0264 #define CFI3_ADDRESS ((uint16_t)0x0063)
0265 #define CFI4_ADDRESS ((uint16_t)0x0064)
0266
0267
0268 #define NOR_TMEOUT ((uint16_t)0xFFFF)
0269
0270
0271 #define NOR_MEMORY_8B ((uint8_t)0x00)
0272 #define NOR_MEMORY_16B ((uint8_t)0x01)
0273
0274
0275 #define NOR_MEMORY_ADRESS1 (0x60000000U)
0276 #define NOR_MEMORY_ADRESS2 (0x64000000U)
0277 #define NOR_MEMORY_ADRESS3 (0x68000000U)
0278 #define NOR_MEMORY_ADRESS4 (0x6C000000U)
0279
0280
0281
0282
0283
0284
0285
0286
0287
0288
0289
0290
0291
0292
0293
0294
0295 #define NOR_ADDR_SHIFT(__NOR_ADDRESS, __NOR_MEMORY_WIDTH_, __ADDRESS__) \
0296 ((uint32_t)(((__NOR_MEMORY_WIDTH_) == NOR_MEMORY_16B)? \
0297 ((uint32_t)((__NOR_ADDRESS) + (2U * (__ADDRESS__)))): \
0298 ((uint32_t)((__NOR_ADDRESS) + (__ADDRESS__)))))
0299
0300
0301
0302
0303
0304
0305
0306 #define NOR_WRITE(__ADDRESS__, __DATA__) do{ \
0307 (*(__IO uint16_t *)((uint32_t)(__ADDRESS__)) = (__DATA__)); \
0308 __DSB(); \
0309 } while(0)
0310
0311
0312
0313
0314
0315
0316
0317
0318
0319
0320
0321
0322
0323
0324 #ifdef __cplusplus
0325 }
0326 #endif
0327
0328 #endif