21 #ifndef __STM32L4xx_HAL_NAND_H 22 #define __STM32L4xx_HAL_NAND_H 28 #if defined(FMC_BANK3) 52 HAL_NAND_STATE_RESET = 0x00U,
53 HAL_NAND_STATE_READY = 0x01U,
54 HAL_NAND_STATE_BUSY = 0x02U,
55 HAL_NAND_STATE_ERROR = 0x03U
56 }HAL_NAND_StateTypeDef;
142 #define __HAL_NAND_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_NAND_STATE_RESET) 232 #define NAND_DEVICE FMC_BANK3 233 #define NAND_WRITE_TIMEOUT ((uint32_t)0x01000000U) 235 #define CMD_AREA ((uint32_t)(1<<16)) 236 #define ADDR_AREA ((uint32_t)(1<<17)) 238 #define NAND_CMD_AREA_A ((uint8_t)0x00U) 239 #define NAND_CMD_AREA_B ((uint8_t)0x01U) 240 #define NAND_CMD_AREA_C ((uint8_t)0x50U) 241 #define NAND_CMD_AREA_TRUE1 ((uint8_t)0x30U) 243 #define NAND_CMD_WRITE0 ((uint8_t)0x80U) 244 #define NAND_CMD_WRITE_TRUE1 ((uint8_t)0x10U) 245 #define NAND_CMD_ERASE0 ((uint8_t)0x60U) 246 #define NAND_CMD_ERASE1 ((uint8_t)0xD0U) 247 #define NAND_CMD_READID ((uint8_t)0x90U) 248 #define NAND_CMD_STATUS ((uint8_t)0x70U) 249 #define NAND_CMD_LOCK_STATUS ((uint8_t)0x7AU) 250 #define NAND_CMD_RESET ((uint8_t)0xFFU) 253 #define NAND_VALID_ADDRESS ((uint32_t)0x00000100U) 254 #define NAND_INVALID_ADDRESS ((uint32_t)0x00000200U) 255 #define NAND_TIMEOUT_ERROR ((uint32_t)0x00000400U) 256 #define NAND_BUSY ((uint32_t)0x00000000U) 257 #define NAND_ERROR ((uint32_t)0x00000001U) 258 #define NAND_READY ((uint32_t)0x00000040U) 274 #define ARRAY_ADDRESS(__ADDRESS__ , __HANDLE__) (((__ADDRESS__)->Page) + \ 275 (((__ADDRESS__)->Block + (((__ADDRESS__)->Plane) * ((__HANDLE__)->Config.PlaneSize)))* ((__HANDLE__)->Config.BlockSize))) 277 #define COLUMN_ADDRESS( __HANDLE__) ((__HANDLE__)->Config.PageSize) 284 #define ADDR_1ST_CYCLE(__ADDRESS__) (uint8_t)(__ADDRESS__) 285 #define ADDR_2ND_CYCLE(__ADDRESS__) (uint8_t)((__ADDRESS__) >> 8) 286 #define ADDR_3RD_CYCLE(__ADDRESS__) (uint8_t)((__ADDRESS__) >> 16) 287 #define ADDR_4TH_CYCLE(__ADDRESS__) (uint8_t)((__ADDRESS__) >> 24) 294 #define COLUMN_1ST_CYCLE(__ADDRESS__) (uint8_t)(__ADDRESS__) 295 #define COLUMN_2ND_CYCLE(__ADDRESS__) (uint8_t)((__ADDRESS__) >> 8) HAL_StatusTypeDef HAL_NAND_Read_Page_16b(NAND_HandleTypeDef *hnand, 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_16b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint16_t *pBuffer, uint32_t NumSpareAreaTowrite)
Write Spare area(s) to NAND memory (16-bits addressing)
__IO HAL_NAND_StateTypeDef State
HAL_StatusTypeDef HAL_NAND_Write_SpareArea_8b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint8_t *pBuffer, uint32_t NumSpareAreaTowrite)
Write Spare area(s) to NAND memory (8-bits addressing)
NAND Memory info Structure definition.
HAL_StatusTypeDef HAL_NAND_Erase_Block(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress)
NAND memory Block erase.
void HAL_NAND_MspInit(NAND_HandleTypeDef *hnand)
Initialize the NAND MSP.
HAL_StatusTypeDef HAL_NAND_Read_SpareArea_16b(NAND_HandleTypeDef *hnand, 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(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress)
Increment the NAND memory address.
HAL_StatusTypeDef HAL_NAND_GetECC(NAND_HandleTypeDef *hnand, uint32_t *ECCval, uint32_t Timeout)
Get NAND ECC value.
HAL_StatusTypeDef HAL_NAND_Read_SpareArea_8b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint8_t *pBuffer, uint32_t NumSpareAreaToRead)
Read Spare area(s) from NAND memory (8-bits addressing)
FMC NAND Configuration Structure definition.
HAL_StatusTypeDef HAL_NAND_ECC_Enable(NAND_HandleTypeDef *hnand)
Enable dynamically NAND ECC feature.
NAND_DeviceConfigTypeDef Config
HAL_StatusTypeDef HAL_NAND_Write_Page_16b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint16_t *pBuffer, uint32_t NumPageToWrite)
Write Page(s) to NAND memory block (16-bits addressing)
FMC NAND Timing parameters structure definition.
void HAL_NAND_MspDeInit(NAND_HandleTypeDef *hnand)
DeInitialize the NAND MSP.
HAL_StatusTypeDef HAL_NAND_DeInit(NAND_HandleTypeDef *hnand)
Perform NAND memory De-Initialization sequence.
FMC_NAND_InitTypeDef Init
HAL_StatusTypeDef HAL_NAND_Write_Page_8b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint8_t *pBuffer, uint32_t NumPageToWrite)
Write Page(s) to NAND memory block (8-bits addressing)
HAL_StatusTypeDef HAL_NAND_Reset(NAND_HandleTypeDef *hnand)
NAND memory reset.
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.
HAL_NAND_StateTypeDef HAL_NAND_GetState(NAND_HandleTypeDef *hnand)
Return the NAND state.
HAL_StatusTypeDef HAL_NAND_Read_ID(NAND_HandleTypeDef *hnand, NAND_IDTypeDef *pNAND_ID)
Read the NAND memory electronic signature.
HAL_StatusTypeDef HAL_NAND_Read_Page_8b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint8_t *pBuffer, uint32_t NumPageToRead)
Read Page(s) from NAND memory block (8-bits addressing)
uint32_t HAL_NAND_Read_Status(NAND_HandleTypeDef *hnand)
NAND memory read status.
HAL_LockTypeDef
HAL Lock structures definition.
HAL_StatusTypeDef HAL_NAND_ConfigDevice(NAND_HandleTypeDef *hnand, NAND_DeviceConfigTypeDef *pDeviceConfig)
Configure the device: Enter the physical parameters of the device.
Header file of FMC HAL module.
HAL_StatusTypeDef HAL_NAND_ECC_Disable(NAND_HandleTypeDef *hnand)
Disable dynamically NAND ECC feature.
NAND Memory electronic signature Structure definition.
void HAL_NAND_IRQHandler(NAND_HandleTypeDef *hnand)
This function handles NAND device interrupt request.
FunctionalState ExtraCommandEnable
FMC_NAND_TypeDef * Instance
NAND Memory address Structure definition.
void HAL_NAND_ITCallback(NAND_HandleTypeDef *hnand)
NAND interrupt feature callback.
NAND handle Structure definition.