20 #ifndef STM32F4xx_HAL_NAND_H
21 #define STM32F4xx_HAL_NAND_H
27 #if defined(FMC_Bank3) || defined(FMC_Bank2_3) || defined(FSMC_Bank2_3)
30 #if defined(FSMC_Bank2_3)
119 #if (USE_HAL_NAND_REGISTER_CALLBACKS == 1)
120 typedef struct __NAND_HandleTypeDef
135 #if (USE_HAL_NAND_REGISTER_CALLBACKS == 1)
136 void (* MspInitCallback)(
struct __NAND_HandleTypeDef *hnand);
137 void (* MspDeInitCallback)(
struct __NAND_HandleTypeDef *hnand);
138 void (* ItCallback)(
struct __NAND_HandleTypeDef *hnand);
142 #if (USE_HAL_NAND_REGISTER_CALLBACKS == 1)
173 #if (USE_HAL_NAND_REGISTER_CALLBACKS == 1)
174 #define __HAL_NAND_RESET_HANDLE_STATE(__HANDLE__) do { \
175 (__HANDLE__)->State = HAL_NAND_STATE_RESET; \
176 (__HANDLE__)->MspInitCallback = NULL; \
177 (__HANDLE__)->MspDeInitCallback = NULL; \
180 #define __HAL_NAND_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_NAND_STATE_RESET)
222 uint8_t *pBuffer, uint32_t NumPageToRead);
224 const uint8_t *pBuffer, uint32_t NumPageToWrite);
226 uint8_t *pBuffer, uint32_t NumSpareAreaToRead);
228 const uint8_t *pBuffer, uint32_t NumSpareAreaTowrite);
231 uint16_t *pBuffer, uint32_t NumPageToRead);
233 const uint16_t *pBuffer, uint32_t NumPageToWrite);
235 uint16_t *pBuffer, uint32_t NumSpareAreaToRead);
237 const uint16_t *pBuffer, uint32_t NumSpareAreaTowrite);
243 #if (USE_HAL_NAND_REGISTER_CALLBACKS == 1)
287 #if defined(FMC_Bank2_3)
288 #define NAND_DEVICE1 0x70000000UL
289 #define NAND_DEVICE2 0x80000000UL
291 #define NAND_DEVICE 0x80000000UL
293 #define NAND_WRITE_TIMEOUT 0x01000000UL
295 #define CMD_AREA (1UL<<16U)
296 #define ADDR_AREA (1UL<<17U)
298 #define NAND_CMD_AREA_A ((uint8_t)0x00)
299 #define NAND_CMD_AREA_B ((uint8_t)0x01)
300 #define NAND_CMD_AREA_C ((uint8_t)0x50)
301 #define NAND_CMD_AREA_TRUE1 ((uint8_t)0x30)
303 #define NAND_CMD_WRITE0 ((uint8_t)0x80)
304 #define NAND_CMD_WRITE_TRUE1 ((uint8_t)0x10)
305 #define NAND_CMD_ERASE0 ((uint8_t)0x60)
306 #define NAND_CMD_ERASE1 ((uint8_t)0xD0)
307 #define NAND_CMD_READID ((uint8_t)0x90)
308 #define NAND_CMD_STATUS ((uint8_t)0x70)
309 #define NAND_CMD_LOCK_STATUS ((uint8_t)0x7A)
310 #define NAND_CMD_RESET ((uint8_t)0xFF)
313 #define NAND_VALID_ADDRESS 0x00000100UL
314 #define NAND_INVALID_ADDRESS 0x00000200UL
315 #define NAND_TIMEOUT_ERROR 0x00000400UL
316 #define NAND_BUSY 0x00000000UL
317 #define NAND_ERROR 0x00000001UL
318 #define NAND_READY 0x00000040UL
334 #define ARRAY_ADDRESS(__ADDRESS__ , __HANDLE__) ((__ADDRESS__)->Page + \
335 (((__ADDRESS__)->Block + \
336 (((__ADDRESS__)->Plane) * \
337 ((__HANDLE__)->Config.PlaneSize))) * \
338 ((__HANDLE__)->Config.BlockSize)))
345 #define COLUMN_ADDRESS( __HANDLE__) ((__HANDLE__)->Config.PageSize)
352 #define ADDR_1ST_CYCLE(__ADDRESS__) (uint8_t)(__ADDRESS__)
353 #define ADDR_2ND_CYCLE(__ADDRESS__) (uint8_t)((__ADDRESS__) >> 8)
354 #define ADDR_3RD_CYCLE(__ADDRESS__) (uint8_t)((__ADDRESS__) >> 16)
355 #define ADDR_4TH_CYCLE(__ADDRESS__) (uint8_t)((__ADDRESS__) >> 24)
362 #define COLUMN_1ST_CYCLE(__ADDRESS__) (uint8_t)((__ADDRESS__) & 0xFFU)
363 #define COLUMN_2ND_CYCLE(__ADDRESS__) (uint8_t)((__ADDRESS__) >> 8)
__IO HAL_NAND_StateTypeDef State
FMC_NAND_InitTypeDef Init
NAND_DeviceConfigTypeDef Config
FMC_NAND_TypeDef * Instance
ADC handle Structure definition.
FMC NAND Configuration Structure definition.
FMC NAND Timing parameters structure definition.
HAL_StatusTypeDef HAL_NAND_Init(NAND_HandleTypeDef *hnand, FMC_NAND_PCC_TimingTypeDef *ComSpace_Timing, FMC_NAND_PCC_TimingTypeDef *AttSpace_Timing)
Perform NAND memory Initialization sequence.
void HAL_NAND_MspDeInit(NAND_HandleTypeDef *hnand)
NAND MSP DeInit.
void HAL_NAND_ITCallback(NAND_HandleTypeDef *hnand)
NAND interrupt feature callback.
void HAL_NAND_MspInit(NAND_HandleTypeDef *hnand)
NAND MSP Init.
HAL_StatusTypeDef HAL_NAND_ConfigDevice(NAND_HandleTypeDef *hnand, NAND_DeviceConfigTypeDef *pDeviceConfig)
Configure the device: Enter the physical parameters of the device.
void HAL_NAND_IRQHandler(NAND_HandleTypeDef *hnand)
This function handles NAND device interrupt request.
HAL_StatusTypeDef HAL_NAND_Read_ID(NAND_HandleTypeDef *hnand, NAND_IDTypeDef *pNAND_ID)
Read the NAND memory electronic signature.
HAL_StatusTypeDef HAL_NAND_DeInit(NAND_HandleTypeDef *hnand)
Perform NAND memory De-Initialization sequence.
HAL_StatusTypeDef HAL_NAND_Read_Page_16b(NAND_HandleTypeDef *hnand, const NAND_AddressTypeDef *pAddress, uint16_t *pBuffer, uint32_t NumPageToRead)
Read Page(s) from NAND memory block (16-bits addressing)
HAL_StatusTypeDef HAL_NAND_Write_SpareArea_8b(NAND_HandleTypeDef *hnand, const NAND_AddressTypeDef *pAddress, const uint8_t *pBuffer, uint32_t NumSpareAreaTowrite)
Write Spare area(s) to NAND memory (8-bits addressing)
HAL_StatusTypeDef HAL_NAND_UnRegisterCallback(NAND_HandleTypeDef *hnand, HAL_NAND_CallbackIDTypeDef CallbackId)
Unregister a User NAND Callback NAND Callback is redirected to the weak predefined callback.
HAL_StatusTypeDef HAL_NAND_Read_Page_8b(NAND_HandleTypeDef *hnand, const NAND_AddressTypeDef *pAddress, uint8_t *pBuffer, uint32_t NumPageToRead)
Read Page(s) from NAND memory block (8-bits addressing)
HAL_StatusTypeDef HAL_NAND_Write_Page_8b(NAND_HandleTypeDef *hnand, const NAND_AddressTypeDef *pAddress, const uint8_t *pBuffer, uint32_t NumPageToWrite)
Write Page(s) to NAND memory block (8-bits addressing)
HAL_StatusTypeDef HAL_NAND_Write_Page_16b(NAND_HandleTypeDef *hnand, const NAND_AddressTypeDef *pAddress, const uint16_t *pBuffer, uint32_t NumPageToWrite)
Write Page(s) to NAND memory block (16-bits addressing)
HAL_StatusTypeDef HAL_NAND_Reset(NAND_HandleTypeDef *hnand)
NAND memory reset.
HAL_StatusTypeDef HAL_NAND_RegisterCallback(NAND_HandleTypeDef *hnand, HAL_NAND_CallbackIDTypeDef CallbackId, pNAND_CallbackTypeDef pCallback)
Register a User NAND Callback To be used to override the weak predefined callback.
HAL_StatusTypeDef HAL_NAND_Read_SpareArea_8b(NAND_HandleTypeDef *hnand, const NAND_AddressTypeDef *pAddress, uint8_t *pBuffer, uint32_t NumSpareAreaToRead)
Read Spare area(s) from NAND memory (8-bits addressing)
HAL_StatusTypeDef HAL_NAND_Write_SpareArea_16b(NAND_HandleTypeDef *hnand, const NAND_AddressTypeDef *pAddress, const uint16_t *pBuffer, uint32_t NumSpareAreaTowrite)
Write Spare area(s) to NAND memory (16-bits addressing)
HAL_StatusTypeDef HAL_NAND_Erase_Block(NAND_HandleTypeDef *hnand, const NAND_AddressTypeDef *pAddress)
NAND memory Block erase.
HAL_StatusTypeDef HAL_NAND_Read_SpareArea_16b(NAND_HandleTypeDef *hnand, const NAND_AddressTypeDef *pAddress, uint16_t *pBuffer, uint32_t NumSpareAreaToRead)
Read Spare area(s) from NAND memory (16-bits addressing)
uint32_t HAL_NAND_Address_Inc(const NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress)
Increment the NAND memory address.
HAL_StatusTypeDef HAL_NAND_ECC_Disable(NAND_HandleTypeDef *hnand)
Disables dynamically FMC_NAND ECC feature.
HAL_StatusTypeDef HAL_NAND_ECC_Enable(NAND_HandleTypeDef *hnand)
Enables dynamically NAND ECC feature.
HAL_StatusTypeDef HAL_NAND_GetECC(NAND_HandleTypeDef *hnand, uint32_t *ECCval, uint32_t Timeout)
Disables dynamically NAND ECC feature.
uint32_t HAL_NAND_Read_Status(const NAND_HandleTypeDef *hnand)
NAND memory read status.
HAL_NAND_StateTypeDef HAL_NAND_GetState(const NAND_HandleTypeDef *hnand)
return the NAND state
FunctionalState ExtraCommandEnable
HAL_NAND_StateTypeDef
HAL NAND State structures definition.
void(* pNAND_CallbackTypeDef)(NAND_HandleTypeDef *hnand)
HAL NAND Callback pointer definition.
struct __NAND_HandleTypeDef else typedef struct endif NAND_HandleTypeDef
NAND handle Structure definition.
HAL_NAND_CallbackIDTypeDef
HAL NAND Callback ID enumeration definition.
@ HAL_NAND_MSP_INIT_CB_ID
@ HAL_NAND_MSP_DEINIT_CB_ID
NAND Memory address Structure definition.
NAND Memory info Structure definition.
NAND Memory electronic signature Structure definition.
HAL_LockTypeDef
HAL Lock structures definition
Header file of FMC HAL module.
Header file of FSMC HAL module.